Skip to content
Snippets Groups Projects

Added build area assessments vector tiles function

Merged Felix Delattre requested to merge feature/add-built-area-assessments-function into master
1 file
+ 42
0
Compare changes
  • Side-by-side
  • Inline
---- Generates vector tiles with values from the `obm_tiles` database table.
CREATE OR REPLACE FUNCTION public.obm_built_area_assessments(z INTEGER, x INTEGER, y INTEGER)
RETURNS BYTEA AS
$$
DECLARE
vector_tile BYTEA DEFAULT '';
parent_quadkey TEXT;
inside_tiles INTEGER; -- Number of tiles at zoom level 18 on an axis of a tile with zoom level `z`.
inside_tile_pixels INTEGER;
BEGIN
IF z > 18 THEN
RAISE NOTICE 'Vector tiles cannot be be created for zoom levels higher than 18.';
ELSE
parent_quadkey = convert_xyz_to_quadkey(x, y, z);
inside_tiles = 2 ^ (18 - z);
inside_tile_pixels = 4096 / inside_tiles;
WITH mvtdata AS (
SELECT ST_MakeEnvelope(
inside_tile_pixels * tile_x, inside_tile_pixels * tile_y,
inside_tile_pixels * (tile_x + 1), inside_tile_pixels * (tile_y + 1)
) AS geom,
tiles.quadkey,
tiles.source_id,
tiles.built_area_size,
tiles.built_up_ratio,
tiles.last_update
FROM
obm_built_area_assessments tiles,
generate_series(0, inside_tiles - 1) AS tile_x,
generate_series(0, inside_tiles - 1) AS tile_y
WHERE tiles.quadkey
= parent_quadkey || convert_xyz_to_quadkey(tile_x, tile_y, 18 - z)
AND tiles.source_id = 1
)
SELECT ST_AsMVT(mvtdata.*, 'obm_tiles', 4096, 'geom')
FROM mvtdata INTO vector_tile;
END IF;
RETURN vector_tile;
END;
$$
LANGUAGE plpgsql STABLE PARALLEL SAFE;
Loading