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://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