Skip to content

Commit c7a2696

Browse files
committed
Optimize mvt query
1 parent baa45a1 commit c7a2696

File tree

1 file changed

+20
-12
lines changed

1 file changed

+20
-12
lines changed

routes/mvt.js

+20-12
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,38 @@ require("dotenv").config()
33

44
const sql = (params, query) => {
55
return `
6-
WITH mvtgeom as (
6+
WITH mvtgeom2 as (
7+
SELECT
8+
id,
9+
json,
10+
geom
11+
FROM
12+
${process.env.TABLE_NAME}
13+
WHERE
14+
${`xform_id=${query.form_id} AND geom is not null AND deleted_at is null`}
15+
), mvtgeom as (
716
SELECT
817
ST_AsMVTGeom (
918
ST_Transform(${process.env.TABLE_COLUMN}, 3857),
10-
ST_TileEnvelope(${params.z}, ${params.x}, ${params.y})
11-
) as geom, id, json
12-
${query.columns ? `, ${query.columns}` : ''}
13-
${query.id_column ? `, ${query.id_column}` : ''}
19+
ST_TileEnvelope(${params.z}, ${params.x}, ${params.y})) as geom,
20+
id,
21+
json
22+
${query.columns ? `, ${query.columns}` : ''}
23+
${query.id_column ? `, ${query.id_column}` : ''}
1424
FROM
15-
${process.env.TABLE_NAME},
16-
(SELECT ST_SRID(${process.env.TABLE_COLUMN}) AS srid FROM ${process.env.TABLE_NAME} WHERE ${process.env.TABLE_COLUMN} IS NOT NULL LIMIT 1) a
25+
mvtgeom2,
26+
(SELECT ST_SRID(${process.env.TABLE_COLUMN}) AS srid FROM mvtgeom2 WHERE ${process.env.TABLE_COLUMN} LIMIT 1) a
1727
WHERE
1828
ST_Intersects(
1929
${process.env.TABLE_COLUMN},
2030
ST_Transform(
2131
ST_TileEnvelope(${params.z}, ${params.x}, ${params.y}),
2232
srid
33+
)
2334
)
24-
)
25-
26-
-- Optional Filter
27-
${`AND xform_id=${query.form_id} AND geom is not null AND deleted_at is null`}
2835
29-
${query.field_name ? `AND json->>'${query.field_name}'='${query.field_value}'` : ``}
36+
-- Optional Filter
37+
${query.field_name ? `AND json->>'${query.field_name}'='${query.field_value}'` : ``}
3038
)
3139
SELECT ST_AsMVT(mvtgeom.*, '${process.env.TABLE_NAME}', 4096, 'geom' ${query.id_column ? `, '${query.id_column}'` : ''
3240
}) AS mvt from mvtgeom;

0 commit comments

Comments
 (0)