1 个不稳定版本
0.1.0 | 2020年10月18日 |
---|
#728 in 编码
每月38次下载
在 osmflatc 中使用
5MB
2K SLoC
osmflat
提供通过内存映射文件进行高效随机数据访问的平面OpenStreetMap (OSM) 数据格式。
该数据格式在 flatdata 中进行描述和实现。该 模式 描述了基本的OSM数据结构:节点、道路、关系和标签,作为简单的非嵌套数据结构。这些之间的联系通过索引来表示。
编译器
除了用于处理 osmflat 存档的库之外,crate osmflatc
还包含一个从 OSM pbf 格式 到 osmflat 数据的编译器。
要编译从 pbf 到 osmflat 的 OSM 数据,使用
cargo run --release -- input.osm.pbf output.osm.flatdata
输出是一个目录,包含多个文件。模式也是存档的一部分。每次打开存档时都会进行检查。这保证了用于生成存档的编译器与用于读取它的模式相匹配。存档数据未压缩。
使用数据
您可以使用任何 flatdata 支持的语言来读取 osmflat 存档。对于在 Rust 中读取数据,我们提供了 osmflat
crate。
首先,将以下内容添加到您的 Cargo.toml 中
[dependencies]
osmflat = "0.1.0"
现在,您可以像打开其他 flatdata 存档一样打开 osmflat 存档并读取其数据
use osmflat::{FileResourceStorage, Osm};
fn main() {
let storage = FileResourceStorage::new("path/to/archive.osm.flatdata");
let archive = Osm::open(storage).unwrap();
for node in archive.nodes().iter() {
println!("{:?}", node);
}
}
示例
检查 osmflat/examples 目录。如果您有想法如何在几行代码中使用令人惊叹的 OSM 数据,请随时添加另一个示例。😁
上述地图是由 osmflat/examples/roads2png.rs
在 ~ 170 代码行中渲染的,基于最新的柏林 OSM 数据。
许可协议
- Apache许可证,版本2.0,(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
文件src/proto/fileformat.proto和src/proto/osmformat.proto是从OSM-binary项目复制而来的,并且遵循LGPLv3许可证。
贡献
除非您明确说明,否则您根据Apache-2.0许可证定义,有意提交供包含在此文档中的任何贡献,应如上双授权,不附加任何额外条款或条件。