我现在正在学习如何使用 OpenStreetMaps。我刚刚为 Quebec 下载了最新的 OSM。我想提取街道名称,每个街道的纬度/经度和城市。我看过一些关于使用 osmconvert 和 osmfilter 的文档,但老实说,我无法理解它。
我不介意它输出的格式,无论是 XML、CSV 还是 JSON(首选 JSON)。执行事情的最佳方法是什么?任何帮助表示赞赏!
我现在正在学习如何使用 OpenStreetMaps。我刚刚为 Quebec 下载了最新的 OSM。我想提取街道名称,每个街道的纬度/经度和城市。我看过一些关于使用 osmconvert 和 osmfilter 的文档,但老实说,我无法理解它。
我不介意它输出的格式,无论是 XML、CSV 还是 JSON(首选 JSON)。执行事情的最佳方法是什么?任何帮助表示赞赏!
我建议使用您提到的标准工具和osmosis,它可以方便地从您的出口中选择街道。
对于将 XML 后处理为 CSV 或其他任何内容,有多种途径。不久前,我写了一些小而易懂的东西:一个简单的 XSLT 转换,用于从 OSM 文件中提取 pub 名称和 lat/lon 到 CSV 文件中。它完全符合您的要求,只是它没有为每个点识别城市。
如果您查看其中链接的 XSLT 文件,您会发现有一些硬编码的 pub 相关内容,例如
<xsl:when test="tag[@k='amenity'][@v='pub']">
将它们更改为您想要的东西,例如
<xsl:when test="tag[@k='highway'][@v='secondary']">
您将能够使用以下命令提取数据:
xsltproc osm_streets_csv.xslt quebec.xml > quebec_streets.csv
为了找到任何给定纬度/经度的城市,您可以使用MapIt Global 服务。