How to extract street graph or network from OpenStreetMap?
Asked Answered
N

1

7

How to extract street graph or network from OpenStreetMap ?

Nadenenader answered 14/9, 2021 at 8:23 Comment(1)
Have you looked at the osmium tool? osmcode.org/osmium-toolJerejereld
N
7

Solutions:

There are many solutions to achieve this goal, I listed some of them below.

- Overpass-api

Overpass-api & overpass-turbo let you use overpass query language to collect ways and nodes of type highway for a city :

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

Pantin is a city in France overpass-turbo

- Geofabrik & Osmium

Geofabrik allows you to download various datasets from continents to cities.

Next, extract nodes and ways of type highway using Osmium tag-filters:

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

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

- Ophois

Ophois is a CLI tool written in Rust, i created to:

  • Download a map from overpass-api
  • Process data from Overpass or Geofabrik to extract the street graph
  • Simplify the extracted graph with detailed heuristics
  • Discretize the extracted or simplified graph to a distance in meter

I also created a simple tool to display the generated graph on a Leaflet map to check the simplification process, cartographe.
Cartographe let you check the node id and the distance of links in meters using haversine formula.

Extracted

Pantin extracted from overpass-api using Ophois

Simplified

Pantin simplified using Ophois

Simplified and Discretized

Pantin simplified and discretized using Ophois

NOTE: Simplified and discretized with 10 meters parameter

- OSMnx

OSMnx: Python for street networks. Retrieve, model, analyze, and visualize street networks and other spatial data from OpenStreetMap.
Pantin-osmnx

NOTE: Pantin using OSMnx

Nadenenader answered 29/9, 2021 at 13:29 Comment(3)
AWESOME! I want to add other three options, 1. osm2pgrouting 2. osm2po 3. osm4routing2Oquinn
I am also wondering if you could use any of these tools for big graph extraction, eg, for the whole planet.Oquinn
@Oquinn When I composed ophois, I designed it to process streams of data so it can perform big graphs. You can download datasets of big regions here. For the whole earth you should concatenate and maybe pre-process these datasetsNadenenader

© 2022 - 2024 — McMap. All rights reserved.