ArcGIS 软件中路网数据的制作

[复制链接]
发表于 2024-12-2 16:13:59 | 显示全部楼层 |阅读模式
内容导读
路网数据是举行网络分析的底子,它是创建网络数据集的数据来源。
本文我们以OSM路网数据为例,具体介绍OSM路网数据从下载,到数据处理,添加属性,完成符合网络分析的网络数据集的全部过程。









01
数据获取
比较全面的路网数据一般有两个渠道,一个是交通运输部分(会包罗隧道、桥梁等等非公开数据,一般不会对外提供),一个是图商(有偿,脱密的路网大概导航数据)。
除此之外免费,并且可以或许在互联网上找到的公开的路网数据可以参考以下连接
https://zhuanlan.zhihu.com/p/493135621
但是国内数据都不太多,就连Esri自己提供的数据(https://www.arcgis.com/home/item.html?id=83535020ce154bd5a498957c159e3a99)其中的国内数据也很少,一般都只有高速和国道级别,时效性也都不太能包管,而且不少数据都没有名称等等基本属性。
使用上述链接中获取的数据,可以做世界范围、大概洲际、国家级别的相干分析。
另外我们还可以在自然资源部提供的天下地理信息资源目录服务系统:
https://www.webmap.cn/main.do?method=index
在该服务系统下载1:25万矢量地图数据,从中提取路网数据,这个系统中的数据包罗名称、国标码、品级等等属性,信息准确,同时数据基本都是当年大概是前一年的,时效性上可以得到包管。在分析时,极大地节省了数据处理和预备的时间。

图1  天下地理信息资源目录服务系统数据格式
但是受到比例尺限制,提供的门路的品级一般都比较高。
所以这类数据更适合做城际之间,省际之间的成本矩阵、导航类分析等等,对成本的精度要求不是特殊高的网络分析。
PS:ArcGIS Pro中还提供了对GTFS数据(谷歌通用公共交通信息数据尺度)转换的工具。但是这个格式的数据公开少,国内险些都是爱好者自己做的,欠好获取到。
如果想要获取开源的都会内部的门路信息,更加推荐使用OpenStreetMap网站(以下简称OSM)的数据。OpenStreetMap网站提供免费开源、可编辑的地图服务,它允许用户自己上传采集到的数据,并提供数据下载。这些数据不仅包括兴趣点、水系、管线、铁路、境界,还包罗了一些低品级的乡道、公园门路、步行道,与上述其他资源相比,门路信息和范例更加全面(不同都会的门路过细水平不同)。
特殊注意:OSM中国界限有问题,如果下载了OSM数据要用到国界限时,一定要甄别。
OSM又有很多的下载方式,可以参考:
https://blog.csdn.net/weixin_38233769/article/details/109755046
OSM中提供了直接下载shapefile格式的数据功能,shapefile是ArcGIS 系列软件原始支持的矢量数据格式。
经过比较,个人以为下载pbf的速度会更快,包罗的属性信息更多,可以借助QGIS软件将pbf格式转换到shapefile。
但是上述连接中提供的工具可能会碰到shapefile文件中文属性有乱码(可以通过修改ArcMap注册表修改),大概没有类似的符号化效果等等问题。
由于我们最终目的是要在ArcGIS 桌面软件中处理并分析路网数据。所以考虑使用插件ArcGIS Editor for OSM  10.X Desktop工具,以下简称OSM编辑器,这是个ArcMap的免费开源附加组件,专门用来下载、处理OSM数据的。
下载地址如下:
https://www.esri.com/en-us/arcgis/products/arcgis-editor-for-openstreetmap
这个工具有以下两个上风:


  • 主动转换OSM数据并将其存储在文件地理数据库GDB中。能实行各种各样的地理处理分析。
  • 支持ArcGIS for Desktop 10.3, 10.4, 10.5, 10.6, 10.7 or 10.8

    图2 OSM编辑器工具
    安装后,启动ArcMap,会在目录欣赏窗口中的系统工具箱下看到一个“OpenStreetMap工具箱”。工具箱中会有多个工具,可以加载、编辑.osm文件和下载OSM数据,应用符号系统,可以将编辑更改回发到OSM,并根据OSM数据创建网络数据集。有关怎样使用这些工具的信息,请参阅文档

    图3 OpenStreetMap工具箱
    可以选择使用Download OSM Data大概Download,Extract and Symbolize OSM Data工具来下载数据并保存在GDB中。Download OSM Data工具下载的全类线要素都在一个要素类中,包罗公路、铁路、水系、境界等等。
    Download,Extract and Symbolize OSM Data工具则可以按照要素种别直接分层显示并支持按照OSM Web地图风格举行符号化。同时支持将Tags属性,也就是一些补充阐明信息放到单独的属性字段中(例如oneway\public_transport等等)这些字段在我们后续制作网络数据集时,会很有用。
    推荐使用Download,Extract and Symbolize OSM Data工具。
    必要注意
    1)工具运行之前,必要将背景关闭,在前台运行方便查看当前工具运行状态及错误信息。(地理处理工具中的地理处理选项)

    图4 关闭背景处理
    2)工具中将会限制下载的范围只能包括50000个数据节点
    所以使用工具的时间,还要看研究的都会的规模,例如一线都会可能50000个节点,就只能下载一个小范围,这样就必要多下载频频然后拼接。但是二三线都会中央城区可能一次下载就搞定了。
    下载过程中还必要符号化和格式转化,所以时间可能比较长。

    图5 Download,Extract and Symbolize OSM Data工具处理时长
     



    图6 下载后的数据在Arcmap中的效果


    02
    数据梳理
    数据下载完成后,在内容列表中会看到OSM GroupLayer图层组。

    图7 OSM GroupLayer图层组
    包括点、线和面图层组(本质上仍旧是点、线、面三个要素类,将要素类使用界说查询的方式设置为图层组)。点图层组包括多种范例兴趣点。线包括管线、境界、门路、铁路、水系等等数据,面图层组则代表水域、空域、建筑等等。
    交通路网重要用到线图层组中的门路线和地铁,我们可以新建一个要素数据集(为后续的网络数据集做预备),将用到的几个要素类都导入进去。本示例中我们只用了Highway(Lines)。如果地点都会有地铁数据,还可以将Railway(Lines)中的subway导出。OSM数据默认是WGS 84坐标系。在做网络分析时,我们大部分都将盘算其间隔长度,一般都会用到公里大概米的单位,所以建议将数据投影变换到须要的投影坐标系。例如CGCS2000  6度或3度带投影,大概web墨卡托。
    然后再打开导入到新建数据集中门路图层并查看其字段。
    字段介绍
    门路图层的字段比较多,我们这里保留字段中有内容的,其他的直接删除。(碰到无法删除的情况,可以先转为shapefile)
    重点保留highway(门路范例)\OSM_name(门路名称)\OSM_oneway(是否单行)\ osm_bridge(立交桥)\OSM_lanes(车道数量)\max_speed(限速)\ osm_maxheight(限高)
    来重点看一下highway字段,字段中会有多个范例。

    图8 highway字段范例
    可以联合这个范例表格,理解当前的门路数据。可以考虑删除非须要的数据。假如这里我们要做的是基于车辆行驶的解决方案。那么步行街道、台阶踏步这类数据就可以直接删除。
    补充名称属性
    OSM中数据的属性都是不同用户提交上来的,如果我们后续在分析时,确实必要用到名称,可以联合手头资料对名称举行补充,大概可以给同范例的数据举行顺序编号重命名。
    给同范例的数据举行顺序编号重命名方法如下:
    1)起首选中osm_name为空且是highway的某一类数据

    图9 提取OSM中无名称数据
    2)使用Python代码,给选中的数据赋值
    代码如下:
    1. step=0
    2. def autoIncrement():
    3.   global step,code
    4.   pStart = 1
    5.   pInterval = 1
    6.   if (step == 0):
    7.     step = pStart
    8. else:
    9.     step = step + pInterval
    10.     code=str(step)
    11. return code
    复制代码



图10 顺序编号重命名

03
矢量化方向查抄
查抄路网数据的矢量化方向。观察地图视图中的数据,起首使用箭头居中符号渲染门路,显示路网数据的矢量化方向。
观察数据,会发现高品级的门路,比如primary、secondary这些数据,同一个段门路使用了两个线要素来表示,这两个线要素的方向正好相反。低品级的门路,则是使用一个线要素来表示。
这里我们必要查抄一下高品级的门路矢量化方向与真正的车辆行驶的方向是否同等。
不同等的地方必要使用编辑工具,修改线的方向。
打开编辑器,双击必要翻转的线要素,右键选择翻转即可。

图11 翻转线方向
一般OSM中的数据这个问题不多。
04
连通性
ArcGIS中基于路网数据的分析都是依靠网络数据集来完成的。网络数据集由源要素构成。源要素包括网络边(也叫做边),交汇点和转弯三类数据。具体的介绍可以参考
https://ke.qq.com/course/5182451/13760697264444403关于网络数据集源数据设置的视频。
本例中我们只收集到了可以构建边要素的线数据。
为了构建网络数据集,我们还必要查抄门路的连接方式,也就是连通性。
边要素的连通可以分为端点连通和节点连通。
端点是指线数据的出发点和终点,任意节点则是指创建要素时全部的特征点。
如果设置了端点连通,则网络边只在线要素的端点处连通。它比较适合于构建交叉式的对象模子。如下图右图所示,东西门路和桥梁是连通的。南北门路和桥梁就是不连通的了。

图12 端点连通
如果设置了任意节点连通,线要素将在重合的节点部分拆分成为多个网络边要素。这种更适合于构建街道的数据,使得街道和其他的街道相交。如下图右图所示。

图13 任意节点连通
所以我们必要借助已有资料(立交桥、涵洞,转弯信息),依次查抄门路的连通方式。在路网数据量比较大的情况下,为了镌汰工作量,我们可以:
1)先将全部的门路数据在相交处打断,形成端点连通的情况,可以使用高级编辑工具栏中的打断相交线工具。

图14 打断相交线
2)针对特殊门路中情况(立交桥等)将数据断开的合并。
3)另外,还必要考虑高程连通的情形。OSM门路数据本身没有带Z值属性,这里我们可以增长一个高程字段,用来表示高度级别。
这个属性来自主交桥、涵洞、隧道、过街天桥等等。我们可以借助已有的bridge等等字段并借助互联网地图中的立交桥效果来设置。
比如简单的立交桥:

图15 多层立交桥
这个立交桥共有三层,分别是东西向一层、南北向二层、东西向三层。可以分别赋予这三类要素的高程属性为0,1,2。
如果是复杂的立交桥,就必要联合立交桥的高度和汇入汇出方向判定其层级。
05
判定单行道
其中网络边要素是指路网数据中的线要素的两个方向,一个是沿着矢量化方向,一个是与矢量化方向相反的边要素,这两个边要素除了方向之外,另有可能其他属性不同等,例如通行的时间。

图16 边要素与线要素对应关系(同一位置)
在实际应用时,必要考虑几种情况。
1)实际获取到路网数据中的线要素品级比较低,使用一个线要素表示门路的双向。但是类似胡同这样的小的门路,可能本身就是单行的。也就是说线要素对应的一个边要素是无效的。

图17 单行道1
2)实际获取到路网数据中的线要素品级比较高,使用两个线要素表示门路的双向。例如高速路,使用两个线要素也就是4个边要素来表示一段路,显然线要素对应的一个边要素也是无效的。

图18 单行道2
等等类似的问题,碰到上述情况,我们起首必要判定获取到的路网数据中线要素是双向还是单向。其次是矢量化方向与实际单行方向同等还是矢量化方向与实际单行方向相反。
可以添加FT(From-To字段)。字段中属性分为三种。一种为NULL,也就是默以为空,表示线要素双向,第二种是YES,表明单行道与矢量化方向同等,第三种是No,表明单行道与矢量化方向相反。
OSM数据中的OSM_oneway字段,表示门路是否为单行道(内容为空大概yes),这里大部分的单行道与矢量化方向都是同等的。

06
添加其他属性字段
门路品级
网络数据集中还可以设置品级信息。品级是指分配给网络元素的序次大概是级别。在超过大型网络求解分析时,使用品级可以或许提拔分析效率盘算。例如城际、省际之间的网络分析。
按照《1:10000(1:5000)底子地理信息地形要素数据规范》要求,门路可以分为国道、高速公路、快速、省道、县道、乡道、轨道交通等等(这里我们只考虑公路情况),可以使用规范中的门路范例来设置品级。网络数据集中的品级是一个整数字段。
所以必要将OSM数据中的范例与规范对应。
OSM数据的范例尺度与规范差别较大,不太好对应,这里我们就简单的按照下列表格举行对照。
品级
门路范例
Type
1
高速公路
trunk、motorway
2
快速路/国道
primary
3
省道
secondary
4
县道
residential、service、tertiary
5
乡道
track
6
人行道
bridleway、footway、path、pedestrian
同样必要注意,Type属性信息并禁绝确,在完成了品级、门路范例以及type字段的对应之后,还必要联合互联网电子地图数据大概其他渠道,对数据举行查抄,将门路范例有误的门路举行纠正。
时间成本
OSM数据中提供了maxspeed最大时速字段,我们可以直接使用门路长度shape_length/maxspeed 获得大致的通行时间。
如果没有maxspeed字段,我们也可以根据门路品级,获得常用的限速信息,再使用门路长度/限速信息也可以。
核心Python代码如下:

  1. def traveltime(leixing,length):
  2.     if (leixing=="高速"):
  3.         return length/1000/120
  4.     elif (leixing=="快速路"):
  5.         return length/1000/80
  6.     elif (leixing=="省道"):
  7.         return length/1000/60
  8.     elif (leixing=="县道"):
  9.         return length/1000/40
  10.     elif (leixing=="乡镇道路"):
  11.         return length/1000/30
  12.     elif (leixing=="人行道"):
  13.         return length/1000/10
复制代码
07
总结

1.数据来源五花八门,可能碰到的问题也不一样,大概的过程中这几步都完成之后,简单的网络分析就可以实现,并且包管一定的准确度。
2.数据预备阶段最好把数据都处理好,然后再创建网络数据集。
在网络数据集中也可以修改多少和属性,但是多少修改部分可能出现问题,所以只管是包管处理好的数据备份,然后再构建网络数据集,如果出现问题,可以重新创建新的网络数据集。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-12 23:53 , Processed in 0.075420 second(s), 29 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表