12个版本 (7个破坏性更新)
0.8.4 | 2023年10月3日 |
---|---|
0.8.0 | 2023年3月23日 |
0.7.0 | 2022年2月10日 |
0.6.0 | 2021年12月17日 |
0.2.0 | 2021年11月28日 |
#92 in 地理空间
每月58次下载
在osm2rdf中使用
27KB
600 行
osm-node-cache
平面文件节点缓存将纬度、经度坐标对作为u64
值存储,其索引为文件中的位置。换句话说 - 第0个u64值存储为前8个字节,等等。
该库允许多线程访问缓存,并且可以动态增长缓存文件。
// This example uses osmpbf crate
use std::path::PathBuf;
use rayon::iter::{ParallelBridge, ParallelIterator};
use osmnodecache::{DenseFileCache, CacheStore as _};
use osmpbf::{BlobReader, BlobDecode};
fn main() {
let reader = BlobReader::from_path("planet.osm.pbf").unwrap();
let file_cache = DenseFileCache::new(PathBuf::from("node.cache")).unwrap();
reader.par_bridge().for_each_with(
file_cache,
|fc, blob| {
let mut cache = fc.get_accessor();
if let BlobDecode::OsmData(block) = blob.unwrap().decode().unwrap() {
for node in block.groups().flat_map(|g| g.dense_nodes()) {
cache.set_lat_lon(node.id as usize, node.lat(), node.lon());
}
};
});
}
开发
- 此项目可以使用just(make的现代化替代品)更轻松地开发。使用
cargo install just
安装它。 - 要获取可用命令的列表,请运行
just
。 - 要运行测试,请使用
just test
。 - 在
git push
时,它将运行一些验证,包括cargo fmt
、cargo clippy
和cargo test
。使用git push --no-verify
跳过这些检查。
许可协议
根据以下之一授权:
- Apache许可证2.0版本(《LICENSE-APACHE》或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT》)由您选择。
贡献
除非您明确声明,否则您根据Apache-2.0许可证定义的,有意提交以包含在作品中的任何贡献,均应双授权,不附加任何额外条款或条件。
依赖项
~1.9–8.5MB
~60K SLoC