如何从 OpenStreetMap 中提取街道图或网络?

How to extract street graph or network from OpenStreetMap?

如何从 OpenStreetMap 中提取街道图或网络?

解决方案:

有很多解决方案可以实现这个目标,我在下面列出了其中的一些。

- Overpass-api

Overpass-api 和 overpass-turbo 让您使用 overpass 查询语言来收集城市的 ways and nodes of type highway :

[out:xml]; area[name = "Pantin"]; (way(area)[highway]; ); (._;>;); out;

Pantin is a city in France

- Geofabrik & Osmium

Geofabrik 允许您下载从大陆到城市的各种数据集。

接下来,使用 Osmium 标签过滤器 提取节点和高速公路类型的路径:

osmium tags-filter map.osm w/highway -o highways-ways.osm

NOTE: osmium tags-filter also works with .pbf files

- Ophois

Ophois 是一个用 Rust 编写的 CLI 工具,我创建它是为了:

  • 从立交桥下载地图-api
  • 处理来自 Overpass 或 Geofabrik 的数据以提取街道图
  • 使用详细的启发式方法简化提取的图
  • 将提取或简化的图形离散化为以米为单位的距离

我还创建了一个简单的工具来在 Leaflet 地图上显示生成的图形以检查简化过程,cartographe.
Cartographe 让您使用 haversine formula.

检查节点 ID 和以米为单位的链接距离

提取

简化

简化和离散化

NOTE: Simplified and discretized with 10 meters parameter

- OSMnx

OSMnx:Python 用于街道网络。从 OpenStreetMap 检索、建模、分析和可视化街道网络和其他空间数据。

NOTE: Pantin using OSMnx