#tile #geo-json #vector #slice #zoom #polygon #polyline

geojson-vt-rs

将GeoJSON切片成矢量瓦片的库

2个版本

0.1.1 2024年8月13日
0.1.0 2024年8月13日

#66 in 地理空间

Download history 190/week @ 2024-08-10

每月 190 次下载

MIT/Apache

415KB
2.5K SLoC

geojson-vt-rs — GeoJSON矢量瓦片

将C++ GeoJSON-VT 移植到Rust,用于动态将GeoJSON切片成矢量瓦片。

这是一个用于动态将GeoJSON数据切片成矢量瓦片的高度有效率的Rust库,主要设计用于在浏览器端(不使用服务器)渲染和交互大型地理空间数据集。

创建用于驱动 maplibre-rs 中的GeoJSON,但也可以用于其他可视化平台,如 LeafletOpenLayersd3,以及Node.js服务器应用程序。

生成的瓦片符合矢量瓦片规范的JSON等效标准。为了使数据渲染和交互快速,瓦片被简化,保留了每个缩放级别合适的最低细节水平(简化形状,过滤掉微小的多边形和多段线)。

有关库如何工作的更多信息,请参阅Mapbox博客

还有一个C++11版本的移植: geojson-vt-cpp

选项

您可以使用选项结构对结果进行微调,尽管默认值是合理的,并且适用于大多数用例。

Options {
    max_zoom: 18,          // max zoom to preserve detail on; can't be higher than 24
    index_max_zoom: 5,    // max zoom in the tile index
    index_max_points: 100000, // max number of points per tile in the tile index
    generate_id: false,     // whether to generate feature ids, overriding existing ids
    tile: TileOptions {
        tolerance: 3.,     // simplification tolerance (higher means simpler)
        extent: 4096,        // tile extent
        buffer: 64,        // tile buffer on each side
        line_metrics: false, // enable line metrics tracking for LineString/MultiLineString features
    }
}

默认情况下,大于 index_max_zoom 缩放级别的瓦片是动态生成的,但您可以通过将 index_max_zoommax_zoom 设置为相同的值并将 indexMaxPoints 设置为 0 来预先生成所有可能的瓦片。

generate_id 选项忽略特征对象上的现有 id 值。

该库仅在最高24个缩放级别上操作。

依赖项

~1.7–2.7MB
~56K SLoC