1个不稳定版本
0.1.0 | 2020年10月18日 |
---|
#1420 在 编码
5MB
3K SLoC
osmflat
Flat OpenStreetMap (OSM)数据格式,通过内存映射文件提供高效的随机数据访问。
数据格式在flatdata中描述和实现。该模式描述了基本的OSM数据结构:节点、道路、关系和标记,作为简单的非嵌套数据结构。这些结构之间的关系通过索引表示。
编译器
除了用于处理osmflat存档的库之外,crate osmflatc
还包含一个将OSM pbf格式编译为osmflat数据的编译器。
要编译从pbf到osmflat的OSM数据,请使用
cargo run --release -- input.osm.pbf output.osm.flatdata
输出是一个flatdata,它是一个包含几个文件的目录。模式也是存档的一部分。每次打开存档时都会进行检查。这保证了用于生成存档的编译器符合用于读取它的模式。存档数据未经压缩。
使用数据
您可以使用任何支持flatdata的语言来读取osmflat存档。对于在Rust中读取数据,我们提供了osmflat
crate。
首先,将以下内容添加到您的Cargo.toml中
[dependencies]
osmflat = "0.1.0"
现在,您可以将osmflat存档作为任何其他flatdata存档打开并读取其数据
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
渲染的,它从基于最新的柏林OSM数据的osmflat存档中提取了约170行代码。
许可证
- Apache许可证版本2.0,(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- 麻省理工学院许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
文件 src/proto/fileformat.proto 和 src/proto/osmformat.proto 是从 OSM-binary 项目复制的,并且受 LGPLv3 许可证约束。
贡献
除非您明确声明,否则您根据 Apache-2.0 许可证提交的任何有意包含在此文档中的贡献,应按上述方式双重许可,而不附加任何额外的条款或条件。
依赖项
~10–23MB
~268K SLoC