5 个不稳定版本

0.3.3 2023年5月23日
0.3.2 2023年4月10日
0.2.0 2023年4月1日
0.1.0 2023年3月27日

#1405 in 解析器实现

MIT/Apache

245KB
2.5K SLoC

Java 1.5K SLoC // 0.2% comments Rust 892 SLoC // 0.0% comments C++ 243 SLoC // 0.3% comments Shell 2 SLoC

osm-pbf

读取和写入 PBF 格式 用于 Open Street Map (OSM)。

功能

读取

读取 PBF 格式有两步:解析和解码。解析将原始数据构建成 文件块。解码将文件块转换为包含的 OSM 元素

写入

类似地,写入 PBF 格式也有两步:编码和序列化。编码将 OSM 元素转换为文件块。此包目前不支持编码。序列化将文件块扁平化为原始数据。

执行

此包使用异步 I/O 以与 tokio 一起使用。

并行性

代码本质上是顺序的,但由于 PBF 中的文件块是独立的,因此可以并行化编码/解码。

读取并行化示例

  1. 调用 get_osm_pbf_locations 获取文件块位置的流
  2. 独立地对每个位置调用 parse_osm_pbf_at_location
  3. 按需处理块

写入并行化示例

  1. 将您的块拆分成块
  2. 独立地对每个块调用 write_osm_pbf 并使用内存中的向量作为写入器
  3. 每个调用完成后,将它们写入最终位置(即文件)

压缩

为每个支持的压缩算法都有功能

名称 默认功能 支持
Zlib
Zstd
Lzma
Lz4
Bzip2

Lz4 支持尚未提供。Bzip2 已弃用多年,因此不受支持。

对编码没有精细的控制,但如果您感兴趣,请随时提交问题。

依赖项

~5.5–8.5MB
~147K SLoC