#openstreetmap #csv #routing #convert #pbf #graph #networking

bin+lib osm4routing

将 OpenStreetMap 数据转换为路由友好的 CSV 格式

21 个版本

0.6.5 2024年7月4日
0.6.3 2024年6月12日
0.6.1 2024年1月30日
0.5.9 2023年12月1日
0.2.0 2016年10月20日

#28 in 地理空间

Download history 64/week @ 2024-05-02 178/week @ 2024-05-09 315/week @ 2024-05-16 170/week @ 2024-05-23 121/week @ 2024-05-30 165/week @ 2024-06-06 164/week @ 2024-06-13 239/week @ 2024-06-20 223/week @ 2024-06-27 453/week @ 2024-07-04 256/week @ 2024-07-11 168/week @ 2024-07-18 159/week @ 2024-07-25 56/week @ 2024-08-01 72/week @ 2024-08-08 27/week @ 2024-08-15

每月下载 358 次
用于 2 crates

MIT 许可证

39KB
904

osm4routing2

此项目是使用 Rust 从 https://github.com/Tristramg/osm4routing 重新编写的。

它将 OpenStreetMap 文件(以 .pbf 格式)转换为 CSV 文件。

构建

使用 cargo 获取 Rust 发行版:https://www.rust-lang.net.cn/en-US/downloads.html

运行 cargo install osm4routing

现在您可以使用 osm4routing <some_osmfile.pbf> 生成表示道路网络的 nodes.csvedges.csv 文件。

如果您更喜欢从源代码运行应用程序而不是安装它,请运行

cargo运行 --发行版 -- <您的_osmfile.pbf 路径>

节点和边的标识符来自 OpenStreetMap。

边的 id 属性是唯一的,而 osm_id 可以重复。

导入到数据库中

如果您希望文件在数据库中,您可以使用非常基本的 import_postgres.sh 脚本。

它假设存在数据库 osm4routing(否则根据您的需要修改它)。

作为库使用

为了将 osm4routing 作为库使用,请将 osm4routing = "*" 添加到您的 Cargo.toml 文件的 [dependencies] 部分。

使用它

let (nodes, edges) = osm4routing::read("some_data.osm.pbf")?;

如果您想根据标签拒绝某些边,请使用Reader(它也接受“*”以拒绝所有值)

let (nodes, edges) = osm4routing::Reader::new().reject("area", "yes").read("some_data.osm.pbf")?;

如果您只想使用特定标签,请使用required;如果接受任何值,它接受“*”;如果有多个条件给出,它将接受至少匹配一个值的方式。

let (nodes, edges) = osm4routing::Reader::new().require("railway", "rail").read("some_data.osm.pbf")?;

如果您需要读取某些标签,请将它们传递给reader

let (nodes, edges) = osm4routing::Reader::new().read_tag("highway").read("some_data.osm.pbf")?;

如果您想合并来自不同OpenStreetMap道路但没有任何交叉(例如,当标签改变时,例如隧道)的边

let (nodes, edges) = osm4routing::Reader::new().merge_ways().read("some_data.osm.pbf")?;

依赖项

~6MB
~107K SLoC