graph-normalizer

A JavaScript module that turns OpenStreetMap ways, given as GeoJSON LineStrings, into a normalized graph of intersections and ways. It covers steps like merging and splitting lines.

Share on XLicense: BSD-2-Clause

Overview

graph-normalizer is a JavaScript module that works on an array of GeoJSON LineStrings representing OpenStreetMap ways. It applies standard graph normalization steps, such as merging edges between intersections and splitting edges that cross intersections, so the ways form a clean graph of intersections and ways. The ids given to ways in the normalized graph are deterministic and reproducible. It exposes splitWays and mergeWays functions and includes tests and a benchmark script.

Key features

  • splitWays splits ways that pass through an intersection
  • mergeWays joins ways that share a non-intersection node
  • Deterministic, reproducible way ids
  • Includes tests and a benchmark script

Best for

Developers preparing OSM road geometry for graph-based work who need consistent ids. Input must be GeoJSON LineStrings.

Upstream
mapbox/graph-normalizer
Fork on GitHub
Guo-astro/graph-normalizer
Upstream stars
12
Category
Maps and geospatial
Language
JavaScript
License
BSD-2-Clause
Forked
2020-11-01
Sync status
In syncLast synced 2026-09-29