要获取路网数据和基础地图数据(例如 OpenStreetMap 或高分辨率影像图),你有几种常见的方式。以下是获取和使用这些数据的不同方法:
1. 获取 OpenStreetMap (OSM) 路网数据
OpenStreetMap (OSM) 是一个全球性的开源地图数据库,提供道路、建筑物、水体等各种地理信息。你可以通过多种方式获取 OSM 路网数据:
Nominatim (openstreetmap.org)
1.1 通过 Overpass API
Overpass API 是一个强大的工具,用于查询 OSM 数据,特别适合需要特定区域的路网数据。
打开网页
在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获取路网数据:还是在网页,然后在Overpass API QueryForm这个窗口中输入以下代码(需要把<area-query ref="3603231588"/>中的数字替换为您的目标城市的360+城市id,也就是前三位为360,后面7位数是上一步得到的城市ID),然后点击query,又会下载一个interpreter的文件。
<osm-script timeout="1800" element-limit="100000000">
<!-- 设置查询超时时间为1800秒,元素数量限制为100,000,000 -->
<union>
<!-- 第一个 union: 合并多个查询结果 -->
<area-query ref="3603231588"/>
<!-- 根据区域 ID(3603283765)提取该区域的信息 -->
<recurse type="node-relation" into="rels"/>
<!-- 递归查找与该区域相关的节点关系 -->
<recurse type="node-way"/>
<!-- 递归查找与该区域相关的道路 -->
<recurse type="way-relation"/>
<!-- 递归查找与道路相关的关系 -->
</union>
<union>
<!-- 第二个 union: 再次合并查询结果 -->
<item/>
<!-- 当前查询的元素(来自第一个 union) -->
<recurse type="way-node"/>
<!-- 获取与路径相关的所有节点 -->
</union>
<print mode="body"/>
<!-- 输出查询结果的主体部分 -->
</osm-script>
1.2 通过BBBike extracts OpenStreetMap
我发现通过OpenStreetMap的数据中,没有路名字段,通过搜索资料,可以通过BBBike extracts OpenStreetMap下载,但是可能需要做地区的裁剪工作。选择shp格式,框住选定区域。输入电子邮件下载。
2. OSM文件转为shapefile
ArcGIS Editor for OpenStreetMap的GitHub主页:https://github.com/Esri/arcgis-osm-editor 下载安装。
2.1新建文件型地理数据库
使用OpenStreetMap Toolbox.tbx工具中的Load OSM File功能,将生成结果输出到新建的文件地理数据库。转换完成后,会生成点线面shp文件,对应着不同的数据信息,可以查看官方文档对不同字段的定义。这时文件地理数据库中存储着转换后的数据,我们只需要将路网图层导出为shapefile文件就可以了。
中间出现了ArcGIS中使用工具后,没有反应,没有结果文件生成的问题。
解决办法如下:
将地里处理选项中的后台处理关掉即可。菜单栏——地理处理(Geoprocessing)——地理处理选项(Geoprocessing Options)——关掉后台处理(Background Processing下的Enable前的钩号去掉)。
数据加载
路网数据处理
1、数据字段含义
打开道路SHP数据属性表,OSM对道路的分级在fclass字段里,字段里包含27个分类。
tertiary(第三级道路):城市支路,
tertiary_link(第三级道路-连接):匝道,机场集散车行道路(数据量极少,多是未知道路)
residential(居住区道路):居住区车行道路,
unclassified(未分类道路):居住区车行道路,滨水车行道路,机场机动车通道
secondary(次要道路):城市次要车行道路,机场外围车行道路,
secondary_link(次要道路-连接):城市次要车行道路立交、匝道(数据量少,部分零散分布未知类别)
primary(主要道路):城市主要车行道路
primary_link(主要道路):城市主要车行道路立交,城市主要车行道路匝道(数据量少,部分零散分布未知类别)
motorway(高速公路):高速公路,过江隧道
motorway_link(高速公路-连接):高速公路立交,匝道
trunk(干道):高架快速路,机场进站快速路,过江隧道,桥上快速路
trunk_link(干道-连接):立交,匝道,桥上引道,机场进站快速路,国道改道
track(小路):郊区、乡村、工矿区、田间、林间小路
track_grade1(小路 级别1):郊区、乡村、工矿区、田间、林间小路
track_grade2(小路 级别2):郊区、乡村、工矿区、田间、林间小路
track_grade3(小路 级别3):郊区、乡村、工矿区、田间、林间小路
track_grade4(小路 级别4):郊区、乡村、工矿区、田间、林间小路
track_grade5(小路 级别5):郊区、乡村、工矿区、田间、林间小路
bridleway(马道):体育场馆内部专用道路(数据量极少,零星道路在公园、居住区内部)
living_street(生活街道):居住区车行道路,公园车行道路
path(小道):公园车行道路,居住区车行道路(分布零碎,量少)
service(服务性道路):居住区车行道路,火车站集散车行道,公园车行道路,公共建筑集散车行道,公交枢纽入口车行道路,停车场入口车行道路
footway(人行道):滨水绿道,公园步行道,广场步行道,大学步行道路,人行道,火车站人行集散道路
pedestrian(步行街道):步行街,广场步行道路,公园步行道路,居住区步行道路
steps(台阶踏步):人行过街天桥台阶,广场台阶、公共建筑入口台阶,登山台阶
cycleway(自行车道):滨水绿道,非机动车道,公园自行车道
unknown(未知道路):滨水车行道路,校园广场车行道路,乡道(数据量少,比较难判别道路类型)
把不合规的数据全部删掉。
将所有路段合并为一个矢量要素,start editing,选中所有的要素,点击“合并,打断相交线
建立网络数据集
在要素数据集上单击右键 > 【新建】> 【网络数据集】,按步骤下一步直至完成。有几个参数说明下:
是否创建转弯模型。</font color>建议选择“是”,可以不设置转弯。如果选择“否”,再想设置转弯的时候就要重新构网了。
连通性。</font color>可以默认选择。
如何对高程进行模拟。</font color>如果数据有Z值,可以选择第二项;如果没有,建议选择第一项。
网络数据集指定属性:</font color>建议默认。
出行模式:</font color>建议默认。
行驶方向设置。</font color>如果边要素源中没有文本字段,这里需要选择“否”。
构建服务区索引。</font color>当网络数据集用于服务区分析时,建议勾选。
第3步:</font color>构建网络数据集。创建后,会弹出是否立即构建,选择“是”。