120 MB geojson
파일을 protobuf
에서 Mapnik
벡터 타일 노드 바인딩으로 변환하는 데 걸리는 처리 시간이 > 2s입니다. 원시 파일 geosjon
서빙 타단에 mapnik 벡터 타일과 원시 geojson 성능
는 200 이하 MS 걸린다.
정상입니까? 그렇다면 벡터 타일을 geojson
(내가 mapbox-gl-js
으로보고 있습니다) 이상으로 서비스하는 점은 무엇입니까? 각 Mapbox GL에 대한 데이터 형식 등의 강점과 약점을 가지고
// 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);
})
});
이 특별한 경우에 나는 잘못된 것을하고 있습니까, 즉 mapnik이 파일을 처리하는 데 너무 많은 시간이 걸리는 것은 정상입니까? 귀하의 답변에 감사드립니다. – Clouddie
많은 직렬 데이터에서 매우 CPU 바운드 작업을 수행하므로 너무 오래 걸린다는 것은 놀라운 일이 아닙니다.당신이 잘못하고있는 것, 즉 사전 처리하는 양만큼, 결과를 저장하거나 캐시하고 싶을 것입니다. MVT에서 사용하는 바이너리 인코딩은 전송에 매우 효율적이지만 재사용을 위해 결과를 저장하지 않고 쿼리에 응답하여 폐기하는 사전 처리가 필요합니다. 캐시 능력을 높이기 위해 이진진 인코딩 된 형식이 타일로 나뉩니다 (MVT가 있음). – marr75