#瓦片 #矢量 #Mapbox

vectortile

Mapbox 矢量瓦片的编码库

3 个版本

使用旧的 Rust 2015

0.2.2 2018年9月27日
0.2.1 2017年6月17日
0.2.0 2017年6月9日

#997编码

每月 33 次下载

MIT 许可证

82KB
2K SLoC

vectortile-rs

vectortile on crates.io vectortile on docs.rs

Rust 库,用于从 PostGIS 构建 Mapbox 矢量瓦片。此库是从 Pirmin Kalberer 的 t-rex 服务器 中的 MVT 实现改编而来,旨在提高使用效率。

用法

将此内容放入您的 Cargo.toml

[dependencies]
vectortile = "0.2.1"

并在您的 crate 根目录中添加以下内容

extern crate vectortile;

示例

请参阅 examples/streets.rs 以获取完整的示例(包括 PostGIS)。

此示例展示了如何程序化创建要素和瓦片

use vectortile::{Tile, Layer, Feature, Value};
use vectortile::geom::{Geometry, Point};
use vectortile::grid::{Grid, Extent};
use postgis::ewkb;

// Build a new tile, the hard way
let bbox = Extent{minx: 958826.08, miny: 5987771.04, maxx: 978393.96, maxy: 6007338.92};
let mut tile = Tile::new(&bbox);
let mut layer = Layer::new("place");
tile.add_layer(layer);

// Add a new point feature "Ed's Mospresso Shack"
let geom: Geometry = ewkb::GeometryT::Point(Point::new(960000.0, 6002729.0, Some(3857)));
let mut feature = Feature::new(geom);
feature.add_property("place", Value::String(String::from("business")));
feature.add_property("name", Value::String(String::from("Ed's Mospresso Shack")));
layer.add_feature(feature);

// Encode the tile as protobuf and inspect it
let grid = Grid::wgs84();
let data = tile.encode(&grid);
println!("{:#?}", data);

依赖项

~7MB
~214K SLoC