2021SC@SDUSC
一、数据来源
接下来主要处理静态数据,可以使用到的数据包括路网密度以及poi分布,同时必须要完成的任务是地理区域的划分,因为我要实现的内容必须基于城市的网格划分,出于对计算效率等方面的考虑,我使用5*5km的网格进行处理,经过选择我使用ArcMap这样一个GIS软件,安装下载教程可以通过csdn搜,还是非常好用的。
二、数据的获取
路网数据来源
https://www.openstreetmap.org/
但是他无法获取城市的数据,所以我们需要利用其它的API完成。
Overpass API是一个可以写代码获取一个城市路网的接口。具体使用方法为:
① 根据城市名获取城市的ID:
进入网页,然后在Overpass API QueryForm这个窗口中输入以下代码(需要把南平市替换为您的目标城市),然后点击query,就会下载一个interpreter的文件。
<osm-script>
<query type="relation">
<has-kv k="boundary" v="administrative"/>
<has-kv k="name:zh" v="济南市"/>
</query>
<print/>
</osm-script>
打开下载的文件(记事本打开就行),可以看到一个ID,这个ID与第一步在openstreetmap中写的城市ID是一致的。
② 依据城市的ID获取路网数据:还是在网页,然后在Overpass API QueryForm这个窗口中输入以下代码(需要把中的数字替换为您的目标城市的ID+3600000000,也就是前三位为360,后面7位数是上一步得到的城市ID),然后点击query,又会下载一个interpreter的文件。
<osm-script timeout="1800" element-limit="100000000">
<union>
<area-query ref="3603283765"/>
<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>
下载后格式为.osm,导入ArcMap还需要下载一个插件完成(OpenStreetMap Toolbox.tbx)。
关于导入的部分已经很多人写过了,我就不在赘述,接下来叙述一下完整的地理处理流程(踩了不少坑总算成功,希望后面有人可以看到我的做法少走冤枉路)
首先我这里边的_change都是要用到的,然后你比如先打开dongying_change里边的东西添加进来(这个change是进行过坐标系转换的文件,如果你也想创建按km计算的渔网并统计,一定要先转换坐标系)
创建渔网
输出要素类最好就在你打开的这个目录下起个名
然后这块填5000(单位是米,根据需要改变),改类型
确定就出来了
然后裁剪一下(避免过多无用网格)
输入刚才创建的渔网,根据这个地图的面做裁剪
裁完之后用裁完的,之前的渔网不用了
裁剪好这个渔网先右键打开属性表新建字段
右键字段计算器
然后再去做路网和渔网的相交操作
相交完的结果右键打开属性表新加这个字段
右键计算几何,单位选千米
右键id选汇总,然后求和
裁剪好的渔网右键连接,连接刚导出的output
裁剪好的渔网属性表新建字段
右键计算几何
接着新建
右键字段计算器
接着加X
右键计算几何
一样的再加个Y
然后把这个表右键导出成txt就行了
记得改个能认出来的名字