mod_workspace_templates_mvt.js
/**
### /workspace/templates/mvt
The mvt layer query template returns a vector tile (st_asmvt) with mvt geometries and their associated field properties.
@module /workspace/templates/mvt
*/
export default (_) => {
const fields = [];
_.fieldsMap &&
Array.from(_.fieldsMap.entries()).forEach((entry) => {
const [key, value] = entry;
fields.push(`(${value}) as ${key}`);
});
const x = parseInt(_.x),
y = parseInt(_.y),
z = parseInt(_.z);
return `
SELECT
ST_AsMVT(tile, '${_.layer.key}', 4096, 'geom') mvt
FROM (
SELECT
${_.layer.qID || null} as id,
${fields.length ? fields.toString() + ',' : ''}
ST_AsMVTGeom(
${_.geom},
ST_TileEnvelope(${z},${x},${y}),
4096,
1024,
false
) geom
FROM ${_.table}
WHERE
${(_.layer.z_field && `${_.layer.z_field} < ${z} AND`) || ''}
ST_Intersects(
ST_TileEnvelope(${z},${x},${y}),
${_.geom}
)
\${filter}
) tile`;
};