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 地理空间
每月下载 358 次
用于 2 crates
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.csv
和 edges.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