This is an automated email from the ASF dual-hosted git repository.

bchapuis pushed a commit to branch basemaps-schema
in repository https://gitbox.apache.org/repos/asf/incubator-baremaps.git

commit ef2bf7c04caed3d354004a1c5cf40fe521fbe0ec
Author: Bertil Chapuis <[email protected]>
AuthorDate: Sun Jan 5 17:46:11 2025 +0100

    Improve the amenity layer
---
 basemap/layers/amenity/create.sql  | 444 ++++++++++++++++++++++++++++++++++++-
 basemap/layers/amenity/overlay.js  |   1 -
 basemap/layers/amenity/refresh.sql | 128 +++++++++++
 basemap/layers/amenity/tileset.js  |   4 +-
 4 files changed, 573 insertions(+), 4 deletions(-)

diff --git a/basemap/layers/amenity/create.sql 
b/basemap/layers/amenity/create.sql
index 9d9b3b344..2ff023d21 100644
--- a/basemap/layers/amenity/create.sql
+++ b/basemap/layers/amenity/create.sql
@@ -13,8 +13,450 @@
 -- See the License for the specific language governing permissions and
 -- limitations under the License.
 
+-- Zoom levels 20 to 13
+
 CREATE OR REPLACE VIEW osm_amenity AS
 SELECT id, tags, geom
 FROM osm_way
+WHERE tags ? 'amenity'
+UNION
+SELECT id, tags, geom
+FROM osm_relation
+WHERE tags ? 'amenity';
+
+CREATE OR REPLACE VIEW osm_amenity_z20 AS
+SELECT id, tags, geom
+FROM osm_amenity;
+
+CREATE OR REPLACE VIEW osm_amenity_z19 AS
+SELECT id, tags, geom
+FROM osm_amenity;
+
+CREATE OR REPLACE VIEW osm_amenity_z18 AS
+SELECT id, tags, geom
+FROM osm_amenity;
+
+CREATE OR REPLACE VIEW osm_amenity_z17 AS
+SELECT id, tags, geom
+FROM osm_amenity;
+
+CREATE OR REPLACE VIEW osm_amenity_z16 AS
+SELECT id, tags, geom
+FROM osm_amenity;
+
+CREATE OR REPLACE VIEW osm_amenity_z15 AS
+SELECT id, tags, geom
+FROM osm_amenity;
+
+CREATE OR REPLACE VIEW osm_amenity_z14 AS
+SELECT id, tags, geom
+FROM osm_amenity;
+
+CREATE OR REPLACE VIEW osm_amenity_z13 AS
+SELECT id, tags, geom
+FROM osm_amenity;
+
+-- Zoom level 12
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z12_filtered CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z12_filtered AS
+SELECT tags -> 'amenity' AS tag,
+       st_buffer(
+               st_simplifypreservetopology(
+                       geom,
+                       78270 / power(2, 12)
+               ),
+               78270 / power(2, 12) * 1.1,
+               'join=mitre'
+       )                 AS geom
+FROM osm_amenity
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 12), 2) * 32
+WITH NO DATA;
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z12 CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z12 AS
+WITH clustered AS (SELECT tag,
+                          geom,
+                          st_clusterdbscan(geom, 0, 0) OVER (PARTITION BY tag) 
AS cluster
+                   FROM osm_amenity_z12_filtered)
+SELECT row_number() OVER ()               AS id,
+       jsonb_build_object('amenity', tag) AS tags,
+       st_simplifypreservetopology(
+               (st_dump(
+                       st_buffer(
+                               st_collect(geom),
+                               -78270 / power(2, 12),
+                               'join=mitre'
+                       )
+                )).geom,
+               78270 / power(2, 12)
+       )                                  AS geom
+FROM clustered
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 12), 2) * 32
+GROUP BY tag, cluster
+WITH NO DATA;
+
+-- Zoom level 11
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z11_filtered CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z11_filtered AS
+SELECT tags -> 'amenity' AS tag,
+       st_buffer(
+               st_simplifypreservetopology(
+                       geom,
+                       78270 / power(2, 11)
+               ),
+               78270 / power(2, 11) * 1.1,
+               'join=mitre'
+       )                 AS geom
+FROM osm_amenity_z12
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 11), 2) * 32
+WITH NO DATA;
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z11 CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z11 AS
+WITH clustered AS (SELECT tag,
+                          geom,
+                          st_clusterdbscan(geom, 0, 0) OVER (PARTITION BY tag) 
AS cluster
+                   FROM osm_amenity_z11_filtered)
+SELECT row_number() OVER ()               AS id,
+       jsonb_build_object('amenity', tag) AS tags,
+       st_simplifypreservetopology(
+               (st_dump(
+                       st_buffer(
+                               st_collect(geom),
+                               -78270 / power(2, 11),
+                               'join=mitre'
+                       )
+                )).geom,
+               78270 / power(2, 11)
+       )                                  AS geom
+FROM clustered
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 11), 2) * 32
+GROUP BY tag, cluster
+WITH NO DATA;
+
+-- Zoom level 10
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z10_filtered CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z10_filtered AS
+SELECT tags -> 'amenity' AS tag,
+       st_buffer(
+               st_simplifypreservetopology(
+                       geom,
+                       78270 / power(2, 10)
+               ),
+               78270 / power(2, 10) * 1.1,
+               'join=mitre'
+       )                 AS geom
+FROM osm_amenity_z11
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 10), 2) * 32
+WITH NO DATA;
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z10 CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z10 AS
+WITH clustered AS (SELECT tag,
+                          geom,
+                          st_clusterdbscan(geom, 0, 0) OVER (PARTITION BY tag) 
AS cluster
+                   FROM osm_amenity_z10_filtered)
+SELECT row_number() OVER ()               AS id,
+       jsonb_build_object('amenity', tag) AS tags,
+       st_simplifypreservetopology(
+               (st_dump(
+                       st_buffer(
+                               st_collect(geom),
+                               -78270 / power(2, 10),
+                               'join=mitre'
+                       )
+                )).geom,
+               78270 / power(2, 10)
+       )                                  AS geom
+FROM clustered
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 10), 2) * 32
+GROUP BY tag, cluster
+WITH NO DATA;
+
+-- Zoom level 9
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z9 CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z9 AS
+WITH filtered AS (SELECT tags -> 'amenity' AS tag,
+                         st_buffer(
+                                 st_simplifypreservetopology(
+                                         geom,
+                                         78270 / power(2, 9)
+                                 ),
+                                 78270 / power(2, 9) * 1.1,
+                                 'join=mitre'
+                         )                 AS geom
+                  FROM osm_amenity_z10
+                  WHERE geom IS NOT NULL
+                    AND NOT ST_IsEmpty(geom)
+                    AND st_area(geom) > power(78270 / power(2, 9), 2) * 32),
+     clustered AS (SELECT tag,
+                          geom,
+                          st_clusterdbscan(geom, 0, 0) OVER (PARTITION BY tag) 
AS cluster
+                   FROM filtered)
+SELECT row_number() OVER ()               AS id,
+       jsonb_build_object('amenity', tag) AS tags,
+       st_simplifypreservetopology(
+               (st_dump(
+                       st_buffer(
+                               st_collect(geom),
+                               -78270 / power(2, 9),
+                               'join=mitre'
+                       )
+                )).geom,
+               78270 / power(2, 9)
+       )                                  AS geom
+FROM clustered
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 9), 2) * 32
+GROUP BY tag, cluster
+WITH NO DATA;
+
+-- Zoom level 8
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z8 CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z8 AS
+WITH filtered AS (SELECT tags -> 'amenity' AS tag,
+                         st_buffer(
+                                 st_simplifypreservetopology(
+                                         geom,
+                                         78270 / power(2, 8)
+                                 ),
+                                 78270 / power(2, 8) * 1.1,
+                                 'join=mitre'
+                         )                 AS geom
+                  FROM osm_amenity_z9
+                  WHERE geom IS NOT NULL
+                    AND NOT ST_IsEmpty(geom)
+                    AND st_area(geom) > power(78270 / power(2, 8), 2) * 32),
+     clustered AS (SELECT tag,
+                          geom,
+                          st_clusterdbscan(geom, 0, 0) OVER (PARTITION BY tag) 
AS cluster
+                   FROM filtered)
+SELECT row_number() OVER ()               AS id,
+       jsonb_build_object('amenity', tag) AS tags,
+       st_simplifypreservetopology(
+               (st_dump(
+                       st_buffer(
+                               st_collect(geom),
+                               -78270 / power(2, 8),
+                               'join=mitre'
+                       )
+                )).geom,
+               78270 / power(2, 8)
+       )                                  AS geom
+FROM clustered
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 8), 2) * 32
+GROUP BY tag, cluster
+WITH NO DATA;
+
+-- Zoom level 7
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z7 CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z7 AS
+WITH filtered AS (SELECT tags -> 'amenity' AS tag,
+                         st_buffer(
+                                 st_simplifypreservetopology(
+                                         geom,
+                                         78270 / power(2, 7)
+                                 ),
+                                 78270 / power(2, 7) * 1.1,
+                                 'join=mitre'
+                         )                 AS geom
+                  FROM osm_amenity_z8
+                  WHERE geom IS NOT NULL
+                    AND NOT ST_IsEmpty(geom)
+                    AND st_area(geom) > power(78270 / power(2, 7), 2) * 32),
+     clustered AS (SELECT tag,
+                          geom,
+                          st_clusterdbscan(geom, 0, 0) OVER (PARTITION BY tag) 
AS cluster
+                   FROM filtered)
+SELECT row_number() OVER ()               AS id,
+       jsonb_build_object('amenity', tag) AS tags,
+       st_simplifypreservetopology(
+               (st_dump(
+                       st_buffer(
+                               st_collect(geom),
+                               -78270 / power(2, 7),
+                               'join=mitre'
+                       )
+                )).geom,
+               78270 / power(2, 7)
+       )                                  AS geom
+FROM clustered
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 7), 2) * 32
+GROUP BY tag, cluster
+WITH NO DATA;
+
+-- Zoom level 6
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z6 CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z6 AS
+WITH filtered AS (SELECT tags -> 'amenity' AS tag,
+                         st_buffer(
+                                 st_simplifypreservetopology(
+                                         geom,
+                                         78270 / power(2, 6)
+                                 ),
+                                 78270 / power(2, 6) * 1.1,
+                                 'join=mitre'
+                         )                 AS geom
+                  FROM osm_amenity_z7
+                  WHERE geom IS NOT NULL
+                    AND NOT ST_IsEmpty(geom)
+                    AND st_area(geom) > power(78270 / power(2, 6), 2) * 32),
+     clustered AS (SELECT tag,
+                          geom,
+                          st_clusterdbscan(geom, 0, 0) OVER (PARTITION BY tag) 
AS cluster
+                   FROM filtered)
+SELECT row_number() OVER ()               AS id,
+       jsonb_build_object('amenity', tag) AS tags,
+       st_simplifypreservetopology(
+               (st_dump(
+                       st_buffer(
+                               st_collect(geom),
+                               -78270 / power(2, 6),
+                               'join=mitre'
+                       )
+                )).geom,
+               78270 / power(2, 6)
+       )                                  AS geom
+FROM clustered
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 6), 2) * 32
+GROUP BY tag, cluster
+WITH NO DATA;
+
+-- Zoom level 5
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z5 CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z5 AS
+WITH filtered AS (SELECT tags -> 'amenity' AS tag,
+                         st_buffer(
+                                 st_simplifypreservetopology(
+                                         geom,
+                                         78270 / power(2, 5)
+                                 ),
+                                 78270 / power(2, 5) * 1.1,
+                                 'join=mitre'
+                         )                 AS geom
+                  FROM osm_amenity_z6
+                  WHERE geom IS NOT NULL
+                    AND NOT ST_IsEmpty(geom)
+                    AND st_area(geom) > power(78270 / power(2, 5), 2) * 32),
+     clustered AS (SELECT tag,
+                          geom,
+                          st_clusterdbscan(geom, 0, 0) OVER (PARTITION BY tag) 
AS cluster
+                   FROM filtered)
+SELECT row_number() OVER ()               AS id,
+       jsonb_build_object('amenity', tag) AS tags,
+       st_simplifypreservetopology(
+               (st_dump(
+                       st_buffer(
+                               st_collect(geom),
+                               -78270 / power(2, 5),
+                               'join=mitre'
+                       )
+                )).geom,
+               78270 / power(2, 5)
+       )                                  AS geom
+FROM clustered
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 5), 2) * 32
+GROUP BY tag, cluster
+WITH NO DATA;
+
+-- Zoom level 4
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z4 CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z4 AS
+WITH filtered AS (SELECT tags -> 'amenity' AS tag,
+                         st_buffer(
+                                 st_simplifypreservetopology(
+                                         geom,
+                                         78270 / power(2, 4)
+                                 ),
+                                 78270 / power(2, 4) * 1.1,
+                                 'join=mitre'
+                         )                 AS geom
+                  FROM osm_amenity_z6
+                  WHERE geom IS NOT NULL
+                    AND NOT ST_IsEmpty(geom)
+                    AND st_area(geom) > power(78270 / power(2, 4), 2) * 32),
+     clustered AS (SELECT tag,
+                          geom,
+                          st_clusterdbscan(geom, 0, 0) OVER (PARTITION BY tag) 
AS cluster
+                   FROM filtered)
+SELECT row_number() OVER ()               AS id,
+       jsonb_build_object('amenity', tag) AS tags,
+       st_simplifypreservetopology(
+               (st_dump(
+                       st_buffer(
+                               st_collect(geom),
+                               -78270 / power(2, 4),
+                               'join=mitre'
+                       )
+                )).geom,
+               78270 / power(2, 4)
+       )                                  AS geom
+FROM clustered
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 4), 2) * 32
+GROUP BY tag, cluster
+WITH NO DATA;
+
+-- Zoom level 3
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z3 CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z3 AS
+SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 3)) AS geom
+FROM osm_amenity_z4
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 3), 2) * 16
+WITH NO DATA;
+
+-- Zoom level 2
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z2 CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z2 AS
+SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 2)) AS geom
+FROM osm_amenity_z4
+WHERE geom IS NOT NULL
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 2), 2) * 16
+WITH NO DATA;
+
+-- Zoom level 1
+
+DROP MATERIALIZED VIEW IF EXISTS osm_amenity_z1 CASCADE;
+CREATE MATERIALIZED VIEW IF NOT EXISTS osm_amenity_z1 AS
+SELECT id, tags, st_simplifypreservetopology(geom, 78270 / power(2, 1)) AS geom
+FROM osm_amenity_z4
 WHERE geom IS NOT NULL
-  AND tags ? 'amenity';
\ No newline at end of file
+  AND NOT ST_IsEmpty(geom)
+  AND st_area(geom) > power(78270 / power(2, 1), 2) * 16
+WITH NO DATA;
diff --git a/basemap/layers/amenity/overlay.js 
b/basemap/layers/amenity/overlay.js
index 699960b56..cb9e235b3 100644
--- a/basemap/layers/amenity/overlay.js
+++ b/basemap/layers/amenity/overlay.js
@@ -30,7 +30,6 @@ let directives = [
             ],
         ],
         'fill-color': theme.amenityParkingOverlayFillColor,
-        'fill-outline-color': theme.amenityParkingOverlayOutlineColor
     },
 ];
 
diff --git a/basemap/layers/amenity/refresh.sql 
b/basemap/layers/amenity/refresh.sql
new file mode 100644
index 000000000..b0d83fd13
--- /dev/null
+++ b/basemap/layers/amenity/refresh.sql
@@ -0,0 +1,128 @@
+-- Licensed to the Apache Software Foundation (ASF) under one or more
+-- contributor license agreements.  See the NOTICE file distributed with
+-- this work for additional information regarding copyright ownership.
+-- The ASF licenses this file to you under the Apache License, Version 2.0
+-- (the "License"); you may not use this file except in compliance with
+-- the License.  You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+
+-- Zoom level 12
+
+DROP INDEX IF EXISTS osm_amenity_z12_filtered_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z12_filtered_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z12_filtered;
+CREATE INDEX IF NOT EXISTS osm_amenity_z12_filtered_geom_idx ON 
osm_amenity_z12_filtered USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z12_filtered_tags_idx ON 
osm_amenity_z12_filtered (tag);
+
+DROP INDEX IF EXISTS osm_amenity_z12_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z12_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z12;
+CREATE INDEX IF NOT EXISTS osm_amenity_z12_geom_idx ON osm_amenity_z12 USING 
GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z12_tags_idx ON osm_amenity_z12 USING 
GIN (tags);
+
+-- Zoom level 11
+
+DROP INDEX IF EXISTS osm_amenity_z11_filtered_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z11_filtered_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z11_filtered;
+CREATE INDEX IF NOT EXISTS osm_amenity_z11_filtered_geom_idx ON 
osm_amenity_z11_filtered USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z11_filtered_tags_idx ON 
osm_amenity_z11_filtered (tag);
+
+DROP INDEX IF EXISTS osm_amenity_z11_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z11_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z11;
+CREATE INDEX IF NOT EXISTS osm_amenity_z11_geom_idx ON osm_amenity_z11 USING 
GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z11_tags_idx ON osm_amenity_z11 USING 
GIN (tags);
+
+-- Zoom level 10
+
+DROP INDEX IF EXISTS osm_amenity_z10_filtered_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z10_filtered_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z10_filtered;
+CREATE INDEX IF NOT EXISTS osm_amenity_z10_filtered_geom_idx ON 
osm_amenity_z10_filtered USING GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z10_filtered_tags_idx ON 
osm_amenity_z10_filtered (tag);
+
+DROP INDEX IF EXISTS osm_amenity_z10_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z10_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z10;
+CREATE INDEX IF NOT EXISTS osm_amenity_z10_geom_idx ON osm_amenity_z10 USING 
GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z10_tags_idx ON osm_amenity_z10 USING 
GIN (tags);
+
+-- Zoom level 9
+
+DROP INDEX IF EXISTS osm_amenity_z9_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z9_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z9;
+CREATE INDEX IF NOT EXISTS osm_amenity_z9_geom_idx ON osm_amenity_z9 USING 
GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z9_tags_idx ON osm_amenity_z9 USING GIN 
(tags);
+
+-- Zoom level 8
+
+DROP INDEX IF EXISTS osm_amenity_z8_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z8_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z8;
+CREATE INDEX IF NOT EXISTS osm_amenity_z8_geom_idx ON osm_amenity_z8 USING 
GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z8_tags_idx ON osm_amenity_z8 USING GIN 
(tags);
+
+-- Zoom level 7
+
+DROP INDEX IF EXISTS osm_amenity_z7_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z7_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z7;
+CREATE INDEX IF NOT EXISTS osm_amenity_z7_geom_idx ON osm_amenity_z7 USING 
GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z7_tags_idx ON osm_amenity_z7 USING GIN 
(tags);
+
+-- Zoom level 6
+
+DROP INDEX IF EXISTS osm_amenity_z6_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z6_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z6;
+CREATE INDEX IF NOT EXISTS osm_amenity_z6_geom_idx ON osm_amenity_z6 USING 
GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z6_tags_idx ON osm_amenity_z6 USING GIN 
(tags);
+
+-- Zoom level 5
+
+DROP INDEX IF EXISTS osm_amenity_z5_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z5_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z5;
+CREATE INDEX IF NOT EXISTS osm_amenity_z5_geom_idx ON osm_amenity_z5 USING 
GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z5_tags_idx ON osm_amenity_z5 USING GIN 
(tags);
+
+-- Zoom level 4
+
+DROP INDEX IF EXISTS osm_amenity_z4_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z4_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z4;
+CREATE INDEX IF NOT EXISTS osm_amenity_z4_geom_idx ON osm_amenity_z4 USING 
GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z4_tags_idx ON osm_amenity_z4 USING GIN 
(tags);
+
+-- Zoom level 3
+
+DROP INDEX IF EXISTS osm_amenity_z3_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z3_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z3;
+CREATE INDEX IF NOT EXISTS osm_amenity_z3_geom_idx ON osm_amenity_z3 USING 
GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z3_tags_idx ON osm_amenity_z3 USING GIN 
(tags);
+
+-- Zoom level 2
+
+DROP INDEX IF EXISTS osm_amenity_z2_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z2_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z2;
+CREATE INDEX IF NOT EXISTS osm_amenity_z2_geom_idx ON osm_amenity_z2 USING 
GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z2_tags_idx ON osm_amenity_z2 USING GIN 
(tags);
+
+-- Zoom level 1
+
+DROP INDEX IF EXISTS osm_amenity_z1_geom_idx;
+DROP INDEX IF EXISTS osm_amenity_z1_tags_idx;
+REFRESH MATERIALIZED VIEW osm_amenity_z1;
+CREATE INDEX IF NOT EXISTS osm_amenity_z1_geom_idx ON osm_amenity_z1 USING 
GIST (geom);
+CREATE INDEX IF NOT EXISTS osm_amenity_z1_tags_idx ON osm_amenity_z1 USING GIN 
(tags);
diff --git a/basemap/layers/amenity/tileset.js 
b/basemap/layers/amenity/tileset.js
index 9976e8f17..1fda5dc63 100644
--- a/basemap/layers/amenity/tileset.js
+++ b/basemap/layers/amenity/tileset.js
@@ -18,9 +18,9 @@ export default {
     id: 'amenity',
     queries: [
         {
-            minzoom: 13,
+            minzoom: 1,
             maxzoom: 20,
-            sql: "SELECT id, tags, geom FROM osm_amenity",
+            sql: "SELECT id, tags, geom FROM osm_amenity_z$zoom",
         },
     ],
 }

Reply via email to