23个版本 (10个稳定版本)
4.3.0 | 2024年8月16日 |
---|---|
4.2.1 | 2024年6月17日 |
4.2.0 | 2024年5月28日 |
4.1.0 | 2024年2月24日 |
0.3.0 | 2020年3月20日 |
5 in 地理空间
每月 857 下载量
用于 9 crates
250KB
4.5K SLoC
FlatGeobuf for Rust
Rust实现的FlatGeobuf。
FlatGeobuf是基于flatbuffers的高性能二进制编码,用于地理数据,可以存储包括由SQL-MM第3部分定义的圆形插值在内的简单特征集合。
用法
use flatgeobuf::*;
fn main() {
let mut filein = BufReader::new(File::open("countries.fgb")?);
let mut fgb = FgbReader::open(&mut filein)?.select_all()?;
while let Some(feature) = fgb.next()? {
println!("{}", feature.property::<String>("name").unwrap());
println!("{}", feature.to_json()?);
}
}
使用异步HTTP客户端
use flatgeobuf::*;
async fn process() {
let mut fgb = HttpFgbReader::open("https://flatgeobuf.org/test/data/countries.fgb")
.await?
.select_bbox(8.8, 47.2, 9.5, 55.3)
.await?;
while let Some(feature) = fgb.next().await? {
let props = feature.properties()?;
println!("{}", props["name"]);
println!("{}", feature.to_wkt()?);
}
}
运行测试和基准
cargo test
cargo criterion
运行fuzzer
cargo install cargo-fuzz
cargo +nightly fuzz run read
依赖关系
~3–17MB
~236K SLoC