当前位置: 首页 > news >正文

ArcGIS 软件中路网数据的制作

内容导读

路网数据是进行网络分析的基础,它是建立网络数据集的数据来源。

本文我们以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代码,给选中的数据赋值

    代码如下:

    
    step=0
    def autoIncrement():global step,codepStart = 1 pInterval = 1if (step == 0): step = pStart else: step = step + pInterval code=str(step)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代码如下:


def traveltime(leixing,length):if (leixing=="高速"):return length/1000/120elif (leixing=="快速路"):return length/1000/80elif (leixing=="省道"):return length/1000/60elif (leixing=="县道"):return length/1000/40elif (leixing=="乡镇道路"):return length/1000/30elif (leixing=="人行道"):return length/1000/10

07

总结

1.数据来源五花八门,可能遇到的问题也不一样,大概的过程中这几步都完成之后,简单的网络分析就可以实现,并且保证一定的准确度。

2.数据准备阶段最好把数据都处理好,然后再创建网络数据集。

在网络数据集中也可以修改几何和属性,但是几何修改部分可能出现问题,所以尽量是保证处理好的数据备份,然后再构建网络数据集,如果出现问题,可以重新创建新的网络数据集。

相关文章:

ArcGIS 软件中路网数据的制作

内容导读 路网数据是进行网络分析的基础,它是建立网络数据集的数据来源。 本文我们以OSM路网数据为例,详细介绍OSM路网数据从下载,到数据处理,添加属性,完成符合网络分析的网络数据集的全部过程。 01 数据获取 比较…...

transformers microsoft--table-transformer 表格识别

一、安装包 pip install transformers pip install torch pip install SentencePiecepip install timm pip install accelerate pip install pytesseract pillow pandas pip install tesseract 下载模型: https://huggingface.co/microsoft/table-transformer-s…...

【Spark源码分析】规则框架-草稿

规则批:规则集合序列,由名称、执行策略、规则列表组成。一个规则批里使用一个执行规则。 执行策略 FixedPointOnce 规则: #mermaid-svg-1cvqR4xkYpMuAs77 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px…...

迪米特原则的理解和实践

迪米特原则(Law of Demeter,简称LoD),也被称为最少知识原则(Least Knowledge Principle,LKP),是面向对象设计中的一个重要原则。其核心思想是:一个对象应该对其他对象有最…...

jQuery零基础入门速通(中)

大家好,我是小黄。 在上一篇文章中,我们初步了解了jQuery的基本概念、环境搭建、选择器、基本的DOM操作以及事件处理。接下来,我们将继续深入探讨jQuery的DOM操作和事件处理,以及一些实用的技巧和高级用法。 五、高级DOM操作 5…...

【设计模式系列】中介者模式(十八)

一、什么是中介者模式 中介者模式(Mediator Pattern)是一种行为型设计模式,其核心思想是通过一个中介者对象来封装一系列对象之间的交互,使这些对象不需要相互显式引用。中介者模式提供了一个中介层,用以协调各个对象…...

PDF版地形图矢量出现的问题

项目描述:已建风电场道路测绘项目,收集到的数据为PDF版本的地形图,图上标注了项目竣工时期的现状,之后项目对施工区域进行了复垦恢复地貌,现阶段需要准确的知道实际复垦修复之后的道路及其它临时用地的面积 解决方法&…...

小迪安全第四十二天笔记 简单的mysql注入 mysql的基础知识 用户管理数据库模式 mysql 写入与读取 跨库查询

前言 之前的安全开发我们学习了 php联动数据库的模式 ,这个模式是现在常用的模式 这一节来学习 如何 进行数据库的注入和数据库相关知识 1、了解数据库的结构 我们使用 navicate连接数据库之后看一下 一共四层结构 库 》表》字段》数据 这个层级关系…...

11.25.2024刷华为OD

文章目录 HJ76 尼科彻斯定理(观察题,不难)HJ77 火车进站(DFS)HJ91 走格子方法,(动态规划,递归,有代表性)HJ93 数组分组(递归)语法知识…...

你真的会用饼图吗?JVS-智能BI饼图组件深度解析

在数据可视化的世界里,饼图是我们常见的一种可视化图形。在JVS-智能BI中提供了数据可视化饼图组件,接下来我通过这篇文章详细介绍,从配色方案到图形配置,从显示数据到提示信息,饼图的每一个细节配置。 饼图类图表概述…...

HarmonyOS Next 模拟器安装与探索

HarmonyOS 5 也发布了有一段时间了,不知道大家实际使用的时候有没有发现一些惊喜。当然随着HarmonyOS 5的更新也带来了很多新特性,尤其是 HarmonyOS Next 模拟器。今天,我们就来探索一下这个模拟器,看看它能给我们的开发过程带来什…...

医学机器学习:数据预处理、超参数调优与模型比较的实用分析

摘要 本文介绍了医学中的机器学习,重点阐述了数据预处理、超参数调优和模型比较的技术。在数据预处理方面,包括数据收集与整理、处理缺失值、特征工程等内容,以确保数据质量和可用性。超参数调优对模型性能至关重要,介绍了多种调…...

单片机知识总结(完整)

1、单片机概述 1.1. 单片机的定义与分类 定义: 单片机(Microcontroller Unit,简称MCU)是一种将微处理器、存储器(包括程序存储器和数据存储器)、输入/输出接口和其他必要的功能模块集成在单个芯片上的微型…...

【C++】auto和decltype类型推导关键字

1.C11关键字 auto和decltype是C11引入的关键字,负责类型的推导。所有不同的是: auto可直接用来定义变量,编译器会自动推导出变量的类型。decltype是推导出一个操作数的类型,然后用这个类型再去定义。 2.两者区别 尽管两者都是宏…...

OGRE 3D----3. OGRE绘制自定义模型

在使用OGRE进行开发时,绘制自定义模型是一个常见的需求。本文将介绍如何使用OGRE的ManualObject类来创建和绘制自定义模型。通过ManualObject,开发者可以直接定义顶点、法线、纹理坐标等,从而灵活地构建各种复杂的几何体。 Ogre::ManualObject 是 Ogre3D 引擎中的一个类,用…...

ARM + Linux 开发指南

随想:想写一个系列来讲如何嵌入式开发,然后能形成一个知识体系,帮助那些刚刚做嵌入开发的同学们. 1. ARM Linux从开机到Linux完全启动的流程和代码分析 ARM Linux从开机到完全启动的流程与代码分析 ARM Linux的启动过程主要涉及从设备上电开始,到Linux内核完全启动并进入…...

facebook欧洲户开户条件有哪些又有何优势?

在当今数字营销时代,Facebook广告已成为企业推广产品和服务的重要渠道。而为了更好地利用这一平台,广告主们需要理解不同类型的Facebook广告账户。Facebook广告账户根据其属性可分为多种类型,包括个人广告账户、企业管理(BM&#…...

算法训练(leetcode)二刷第三十一天 | 1049. 最后一块石头的重量 II、494. 目标和、*474. 一和零

刷题记录 1049. 最后一块石头的重量 II*494. 目标和二维数组滚动数组 *474. 一和零 1049. 最后一块石头的重量 II leetcode题目地址 本题与416. 分割等和子集类似。依旧是01背包问题,本题尽可能将石头分为相等(相近)的两堆,然后…...

软件测试丨Pytest生命周期与数据驱动

Pytest的生命周期概述 Pytest 是一个强大的测试框架,提供了丰富的特性来简化测试执行。它的生命周期包括多个阶段,涉及从准备测试、执行测试到报告结果的完整流程。因此,理解Pytest的生命周期将帮助我们更好地设计和管理测试用例。 开始阶段…...

Figma入门-原型交互

Figma入门-原型交互 前言 在之前的工作中,大家的原型图都是使用 Axure 制作的,印象中 Figma 一直是个专业设计软件。 最近,很多产品朋友告诉我,很多原型图都开始用Figma制作了,并且很多组件都是内置的,对…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...