在这个技术路线中
你需要:
①OSM地图官网:https://www.openstreetmap.org/
②Overpass API的网址:http://www.overpass-api.de/query_form.html
③识别这个要素是否属于南京的依据(在OSM地图中找到南京市的ID)
④一串机器语言,告诉Overpass API,你的需求
还有:
一台电脑 - 装pycharm - 配置Python3.6的环境
还有:
科学上网的小妙招
第一步:
打开OSM地图官网
https://www.openstreetmap.org/
设法找到南京市的ID编号:
2131524
第二步:
打开Overpass API的网址:
http://www.overpass-api.de/query_form.html
在Overpass API QueryForm窗口中输入以下代码,然后点击query,得到第 1 个interpreter文件
<osm-script>
<query type="relation">
<has-kv k="boundary" v="administrative"/>
<has-kv k="name:zh" v="南京市"/>
</query>
<print/>
</osm-script>
用记事本打开是这样:
红色框框里的ID果然是南京市的ID编号:2131524
第三步:
还是Overpass API的网址:
http://www.overpass-api.de/query_form.html
在Overpass API QueryForm窗口中输入以下代码,然后点击query,得到第 2 个interpreter文件
<osm-script timeout="1800" element-limit="100000000">
<union>
<area-query ref="3602131524"/>
<recurse type="node-relation" into="rels"/>
<recurse type="node-way"/>
<recurse type="way-relation"/>
</union>
<union>
<item/>
<recurse type="way-node"/>
</union>
<print mode="body"/>
</osm-script>
此处和南京市有关的代码在第三行
<area-query ref="3602131524"/>
#目标城市的ID + 3600000000
#南京ID : 2131524
此时得到的interpreter文件,包含了我们能得到的所有信息
**
划重点,此时的interpreter文件就是前面说的 .osm文件,所以我给文件强行加个后缀,将文件名改成Nanjinggis.osm
**
第四步:
打开pycharm
新建一个.py文件
pip Python包 :osm2gmns
然后写入以下代码:
import osm2gmns as og
net = og.getNetFromFile('Nanjinggis.osm', network_types='auto', link_types=['motorway', 'trunk', 'primary', 'secondary'], POI=False,combine=True, min_nodes=1000, strict_mode=True, default_lanes=True, default_speed=True)
og.consolidateComplexIntersections(net, auto_identify=True, int_buffer=50.0)
og.outputNetToCSV(net, "D://Pythonproject//nanjingtest//Data")
赘述:
Nanjinggis.osm文件是我们刚才下载后直接改后缀名获得的;
Nanjinggis.osm文件和代码的.py文件放在一个文件夹才能读取到数据;
最后一行代码的文件输出位置记得改成自己的;
运行代码,然后,文件夹里我们想要的东西就来了:
嘿嘿嘿