编辑1:我刚刚发现postgis内置了ST_AsMVT function,这正是我想要的(我想),所以我不打算使用mapnik所有!
编辑2:很遗憾,该功能尚未发布在PostGIS的发布版本中,但希望它能在未来几周内完成。
最初发布为github issue。
当我执行以下操作时,为我的数据库启用了日志记录,我看到了一些"元数据"请求发布到postgis,但是,没有进行任何实际的数据查询。
对于与字段名称/类型和范围相关的逻辑(未明确提供),(大概)需要元数据请求。
var postgis = new mapnik.Datasource({
type: 'postgis',
host: ... etc,
table: 'some_geometry_table',
geometry_field: 'geom',
srid: 4326,
extent: "-180,-85.0511,180,85.0511",
estimate_extent: false,
row_limit: 10 // !! this doesn't seem to do anything
});
var map = new mapnik.Map(256, 256);
var layer = new mapnik.Layer('some_layer');
layer.datasource = postgis;
map.add_layer(layer);
map.render(new mapnik.VectorTile(z, x, y), {}, (err, vtile) => {
if (err) next(err);
var data = vtile.getDataSync({});
var file = path + z + "," + x + "," + y + ".pbf"
console.log(data);
console.log("written: " + file);
fs.writeFileSync(file, data);
next(null);
});
});
在postgres日志中看到的元数据查询:
SELECT * FROM some_geometry_table LIMIT 0
我做错了什么?