#pbf #openstreetmap #osm #geocoding #file-format

pbf-reader

快速 Openstreetmap PBF 文件格式读取器。读取节点、路线、关系。它使用 mpsc::channell 和多线程以尽可能快的速度完成工作。

9 个版本

使用旧 Rust 2015

0.1.9 2019年9月5日
0.1.8 2018年11月26日
0.1.7 2018年10月18日
0.1.4 2018年1月2日
0.0.4 2016年2月22日

#174地理空间

每月 25 次下载

自定义许可

45KB
1K SLoC

简单的 Openstreetmap PBF 文件格式读取器。 http://wiki.openstreetmap.org/wiki/PBF_Format

pipeline status

此库使用多线程方法读取数据,并针对速度进行了优化 :D。

可以通过将附加并发线程的数量限制为 0 来实现串行读取。

例如,使用 src/lib.rs 测试。有一个 GUI 示例可以运行:cargo run --release --example paint

完成

  • 读取节点、路线、关系

待办事项

  • 为更快地读取构建索引。
  • 过滤读取。
  • 文档和示例。
  • 模板浮点型和 ID 类型以可调存储精度。

*** 感谢 Gitlab.com 团队允许在线编辑此文件!

原则 #1 用户不能从 4"-6" 屏幕中捕获超过 ~5mb 的文本+矢量数据。


lib.rs:

pbf-reader 程序包提供了解析 PBF OSM 格式 http://wiki.openstreetmap.org/wiki/PBF_Format 的功能。extern crate pbf_reader; use *; use std::sync::mpsc; // 创建通信通道 let (mut node_tx, node_rx) = mpsc::channel::(); // 在后台线程中开始读取 let h = thread::spawn(move || { // 允许使用比当前线程多 4 个线程。 let threads = 4; let result = read_pbf(&"src/sample.pbf".to_string(), threads, &mut node_tx); result.unwrap(); }); let mut count = 0; loop { if let PBFData::ParseEnd = node_rx.recv().unwrap() { break; } count = count + 1; } assert_eq!(count, 338); h.join().unwrap();

依赖关系

~1.6–3MB
~52K SLoC