|new 0.5.9||Dec 1, 2023|
|0.5.8||Jun 28, 2023|
|0.5.4||May 23, 2023|
|0.4.1||Apr 3, 2023|
|0.1.0||Oct 19, 2016|
#23 in Geospatial
3,202 downloads per month
Used in roads-from-nd
This project is a rewrite in rust from https://github.com/Tristramg/osm4routing
It converts an OpenStreetMap file (in the
.pbf format) into a CSV file.
Get a rust distribution with
cargo install osm4routing
You can now use
osm4routing <some_osmfile.pbf> to generate the
edges.csv that represent the road network.
If you prefer running the application from the sources, and not installing it, you run
cargo run --release -- <path_to_your_osmfile.pbf>
The identifiers for nodes and edges are from OpenStreetMap.
id property of an edge is unique, while the
osm_id can be duplicated.
Importing in a database
If you prefer having the files in database, you can run the very basic
It supposes that a database
osm4routing exists (otherwise modify it to your needs).
Using as a library
In order to use osm4routing as a library, add
osm4routing = "*" in your
Cargo.toml file in the
let (nodes, edges) = osm4routing::read("some_data.osm.pbf")?;
If you wand to reject certain edges based on their tag, use the
Reader (it also accepts "*" to reject every value):
let (nodes, edges) = osm4routing::Reader::new().reject("area", "yes").read("some_data.osm.pbf")?;
If you want only specific tags, use
required; it accepts "*" if any value is accepted; if multiple conditions are given, it will accept any way that matches at least one of the values.
let (nodes, edges) = osm4routing::Reader::new().require("railway", "rail").read("some_data.osm.pbf")?;
If you need to read some tags, pass them to the
let (nodes, edges) = osm4routing::Reader::new().read_tag("highway").read("some_data.osm.pbf")?;