我正在学习如何使用OpenStreetMaps。我刚下载了最新的OSM for Quebec。我想提取街道名称,每个都有纬度/经度和城市。我已经看过几个关于使用osmconvert和osmfilter的文档,但老实说无法绕过它。
我不介意它输出的格式,无论是XML,CSV还是JSON(首选JSON)。执行事物的最佳方法是什么?任何帮助表示赞赏!
答案 0 :(得分:2)
我建议您使用您提到的标准工具,osmosis这样可以方便地从您的导出中选择街道。
对于将XML后处理为CSV或其他内容,有各种路由。不久前我写了一些希望小而且格格不入的东西:a simple XSLT transform to extract pub names and lat/lon from an OSM file into a CSV file。它完全符合您的要求,除了它不能识别每个点的城市。
如果你看一下那里链接的XSLT文件,你会发现有一些硬编码的与酒吧相关的东西,比如
<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 service。