#buffer #osm #decentralized #p2p #maps #peermaps

nightly georender-pack

根据peermaps缓冲区模式将osm数据打包到缓冲区

5个稳定版本

3.0.0 2021年4月26日
2.1.1 2021年6月15日
2.1.0 2021年4月8日
2.0.0 2021年3月15日
1.0.0 2021年1月14日

#904数据库接口

每月46次下载
用于 peermaps-ingest

MIT/Apache

86KB
2.5K SLoC

georender-pack.rs

根据peermaps缓冲区模式将osm数据打包到缓冲区。这是peermaps管道的一部分。

如果您想解码这些缓冲区,请使用此库的Node.js版本或在这里提交pull request! 🎉

安装

Cargo.toml

georender-pack = "x.x.x" # latest version

使用

编码::node

签名

encode::node(
    id: u64,
    point: (f64, f64),
    tags: Vec<(&str, &str)>
) -> Result<Vec<u8>, Error>

示例

use georender_pack::encode;
use failure::Error;

let id = 1831881213;
let lon = 12.253938100000001;
let lat = 54.09006660000001;
let tags = vec![("name", "Neu Broderstorf"), ("traffic_sign", "city_limit")];

let bytes = encode::node(id (lon, lat), &tags).unwrap();

编码::way

签名

encode::way(
    id: u64,
    tags: Vec<(&str, &str)>,
    refs: Vec<u64>,
    deps: &HashMap<u64, (f32, f32)>
) -> Result<Vec<u8>, Error>

示例

use failure::Error;
use georender_pack::encode;

let tags = vec![("source", "bing"), ("highway", "residential")];
let refs = vec![1, 5, 3];
let mut deps = HashMap::new();
deps.insert(1, (31.184799400000003, 29.897739500000004));
deps.insert(5, (31.184888100000002, 29.898801400000004));
deps.insert(3, (31.184858400000003, 29.8983899));
let bytes = encode::way(234941233, tags, refs, &deps).unwrap();

编码::way_from_parsed

签名

encode::way(
    id: u64,
    feature_type: u64,
    is_area: bool,
    labels: &[u8],
    refs: &[u64],
    deps: &HashMap<u64, (f32, f32)>,
) -> Result<Vec<u8>, Error>

编码::relation

签名

encode::relation(
    id: u64,
    tags: &Vec<(&str, &str)>,
    members: &Vec<Member>,
    nodes: &HashMap<u64, (f32, f32)>,
    ways: &HashMap<u64, Vec<u64>>
) -> Result<Vec<u8>, Error>

编码::relation_from_parsed

签名

encode::relation_from_parsed(
    id: u64,
    feature_type: u64,
    is_area: bool,
    labels: &[u8],
    members: &[Member],
    nodes: &HashMap<u64, (f32, f32)>,
    ways: &HashMap<u64, Vec<u64>>,
) -> Result<Vec<u8>, Error>

示例

例如,使用osmpbf Rust crate解析PBF文件,请参阅example/osmpbf/main.rs

cargo run --example osmpbf /path/to/my.pbf

开发

cargo test

有一个有限的测试套件,用于创建和编码新的PeerLine、PeerNode和PeerArea对象。

许可证

MIT

依赖关系

~4MB
~59K SLoC