获取路网数据和基础地图数据(例如OpenStreetMap或高分影像图)

要获取路网数据和基础地图数据(例如 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 OpenStreetMapGitHub主页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>构建网络数据集。创建后,会弹出是否立即构建,选择“是”。

                       

### 将城市道路地图数据导入到Matlab中 为了将城市道路地图数据成功导入至 MATLAB 并进行处理可视化,通常会采用特定的数据文件格式来获取这些地理空间信息。一种常见的方式是从在线服务下载地图数据并将其转换成适合 MATLAB 处理的形式。 #### 使用 Web 地图服务 (WMS) MATLAB 支持通过 WMS 接口访问来自不同提供商的地图瓦片。这允许用户请求指定区域内的高分辨率影像其他类型的覆盖层。可以利用 `webmap` 函数创建一个新的 web 表窗口,并向其中添加所需的地图层[^1]。 ```matlab wm = webmap; wmsLayer = wmsfind('usgs', 'SearchField', 'serverurl'); addlayer(wm, wmsLayer); ``` #### 导入 Shapefile 数据 Shapefiles 是存储几何对象及其属性的一种常用 GIS 文件格式。对于包含街道网络的信息而言,shapefile 可能是最直接的选择之一。MATLAB 提供了读取 shapefile 的功能,可以通过 `shaperead` 命令加载此类文件中的要素集合[^2]。 ```matlab S = shaperead('roads.shp'); % 读取 shapefile 中的道路数据 geoplot(S.Lat, S.Lon); % 绘制道路位置 ``` #### 利用 OpenStreetMap API 获取最新数据 如果需要最新的开放街景地图(OSM)数据,则可以直接调用 OSM API 借助第三方工具包如 osmread 来抓取感兴趣区域内完整的路网结构。之后再把得到的结果解析为 MATLAB 能识别的对象以便进一步分析。 ```matlab % 下载并保存 OSM XML 文件 osmDataUrl = "https://api.openstreetmap.org/api/0.6/map?bbox=..."; websave('city_roads.osm', osmDataUrl); % 解析 OSM XML 文件 nodes = readNodes('city_roads.osm'); ways = readWays('city_roads.osm'); % 显示部分节点坐标作为示例 disp(nodes(1:5,:)); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值