gpt4 book ai didi

mapnik 矢量瓦片与原始 geojson 性能

转载 作者:行者123 更新时间:2023-12-02 17:25:38 24 4
gpt4 key购买 nike

通过 Mapnik Vector 将 120 MB geojson 文件转换为 protobuf 时,我遇到了 > 2s 处理时间瓦片节点绑定(bind)。

在另一端,提供原始 geosjon 文件花费的时间不到 200 毫秒

这正常吗?如果是,通过 geojson 提供矢量切片有什么意义(我正在使用 mapbox-gl-js 查看它)?

这是我的代码的摘录:

// Load GeoJson into memory

var fs = require("fs");
var content = JSON.parse(fs.readFileSync("us_counties.json"));


// Initialise Mapnik and mercator object

mapnik.register_default_fonts();
mapnik.register_default_input_plugins();

var mercator = new SphericalMercator({
size: 256
});

// Vector Tile Router

router.get('/:z/:x/:y.pbf', function(req, res) {

var bbox = mercator.bbox(
+req.params.x,
+req.params.y,
+req.params.z,
false,
'4326'
);

// Convert GEOJSON to protobuf VectorTile and Serve

var vtile = new mapnik.VectorTile(+req.params.z, +req.params.x, +req.params.y)
vtile.addGeoJSON(JSON.stringify(content), 'fixture_layer')

res.setHeader('Content-Encoding', 'deflate')
res.setHeader('Content-Type', 'application/x-protobuf')


zlib.deflate(vtile.getData(), function(err, pbf) {
res.send(pbf);
})
});

最佳答案

GeoJSON 和矢量图 block 作为 Mapbox GL 的数据格式各有优缺点。

  • 矢量切片需要比 GeoJSON 更多的预处理
  • GeoJSON 必须完整下载,而矢量图 block 可以根据需要分块下载以填充视口(viewport)(将所有 Open Street Map 作为单个 X00 GB GeoJSON 下载几乎是不可能的!)
  • GeoJSON 可以在客户端修改,而矢量图 block 不能
  • GeoJSON 是人类可读的,而矢量图 block 不是

如果 GeoJSON 适合您,我鼓励您使用它!请注意您的用户可能无法快速下载 120 MB 的情况。

关于mapnik 矢量瓦片与原始 geojson 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38815708/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com