kopia lustrzana https://github.com/openmaptiles/openmaptiles
Implement park rendering at z4-5 (#1160)
Unblocks ZeLonewolf/openstreetmap-americana#51 Currently, OpenMapTiles renders protected areas at zoom 6 and higher. However, the western United States has protected areas that are so vast that it makes sense to render these areas as low as zoom 4, as noted in ZeLonewolf/openstreetmap-americana#51 This PR extends the generalization of park features from its current termination at zoom 6 to zoom 4. Here is an example from the Americana style of rendering protected areas at zoom 6, which is currently the lowest supported zoom: https://zelonewolf.github.io/openstreetmap-americana/#6/45.313/-111.721 We would like to provide rendering at zoom 4 (no labels) and zoom 5 (with labels) in the Americana style. Below are samples generated from this PR for Idaho, USA: Zoom 4: ![image](https://user-images.githubusercontent.com/3254090/126924222-e21865e9-b184-479a-abd5-46238bd106f8.png) Zoom 5: ![image](https://user-images.githubusercontent.com/3254090/126924230-01853e8c-d3e0-41e8-b10f-06415da529d8.png)pull/1182/head^2
rodzic
f15ecbf07e
commit
0e17d53f42
Plik binarny nie jest wyświetlany.
Przed Szerokość: | Wysokość: | Rozmiar: 144 KiB Po Szerokość: | Wysokość: | Rozmiar: 194 KiB |
|
@ -1,33 +1,45 @@
|
|||
generalized_tables:
|
||||
# etldoc: osm_park_polygon_gen_z5 -> osm_park_polygon_gen_z4
|
||||
park_polygon_gen_z4:
|
||||
source: park_polygon_gen_z5
|
||||
sql_filter: area>power(ZRES3,2)
|
||||
tolerance: ZRES4
|
||||
|
||||
# etldoc: osm_park_polygon_gen_z6 -> osm_park_polygon_gen_z5
|
||||
park_polygon_gen_z5:
|
||||
source: park_polygon_gen_z6
|
||||
sql_filter: area>power(ZRES4,2)
|
||||
tolerance: ZRES5
|
||||
|
||||
# etldoc: osm_park_polygon_gen_z7 -> osm_park_polygon_gen_z6
|
||||
park_polygon_gen_z6:
|
||||
source: park_polygon_gen_z7
|
||||
sql_filter: area>power(ZRES5,2)
|
||||
tolerance: ZRES8
|
||||
tolerance: ZRES6
|
||||
|
||||
# etldoc: osm_park_polygon_gen_z8 -> osm_park_polygon_gen_z7
|
||||
park_polygon_gen_z7:
|
||||
source: park_polygon_gen_z8
|
||||
sql_filter: area>power(ZRES6,2)
|
||||
tolerance: ZRES8
|
||||
tolerance: ZRES7
|
||||
|
||||
# etldoc: osm_park_polygon_gen_z9 -> osm_park_polygon_gen_z8
|
||||
park_polygon_gen_z8:
|
||||
source: park_polygon_gen_z9
|
||||
sql_filter: area>power(ZRES7,2)
|
||||
tolerance: ZRES9
|
||||
tolerance: ZRES8
|
||||
|
||||
# etldoc: osm_park_polygon_gen_z10 -> osm_park_polygon_gen_z9
|
||||
park_polygon_gen_z9:
|
||||
source: park_polygon_gen_z10
|
||||
sql_filter: area>power(ZRES8,2)
|
||||
tolerance: ZRES10
|
||||
tolerance: ZRES9
|
||||
|
||||
# etldoc: osm_park_polygon_gen_z11 -> osm_park_polygon_gen_z10
|
||||
park_polygon_gen_z10:
|
||||
source: park_polygon_gen_z11
|
||||
sql_filter: area>power(ZRES9,2)
|
||||
tolerance: ZRES11
|
||||
tolerance: ZRES10
|
||||
|
||||
# etldoc: osm_park_polygon_gen_z12 -> osm_park_polygon_gen_z11
|
||||
park_polygon_gen_z11:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
-- etldoc: layer_park[shape=record fillcolor=lightpink, style="rounded,filled",
|
||||
-- etldoc: label="layer_park |<z6> z6 |<z7> z7 |<z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14> z14+" ] ;
|
||||
-- etldoc: label="layer_park |<z4> z4 |<z5> z5 |<z6> z6 |<z7> z7 |<z8> z8 |<z9> z9 |<z10> z10 |<z11> z11 |<z12> z12|<z13> z13|<z14> z14+" ] ;
|
||||
|
||||
CREATE OR REPLACE FUNCTION layer_park(bbox geometry, zoom_level int, pixel_width numeric)
|
||||
RETURNS TABLE
|
||||
|
@ -37,6 +37,34 @@ FROM (
|
|||
tags,
|
||||
NULL::int AS rank
|
||||
FROM (
|
||||
-- etldoc: osm_park_polygon_dissolve_z4 -> layer_park:z4
|
||||
SELECT NULL::int AS osm_id,
|
||||
geometry,
|
||||
NULL AS name,
|
||||
NULL AS name_en,
|
||||
NULL AS name_de,
|
||||
NULL AS tags,
|
||||
NULL AS leisure,
|
||||
NULL AS boundary,
|
||||
NULL AS protection_title
|
||||
FROM osm_park_polygon_dissolve_z4
|
||||
WHERE zoom_level = 4
|
||||
AND geometry && bbox
|
||||
UNION ALL
|
||||
-- etldoc: osm_park_polygon_gen_z5 -> layer_park:z5
|
||||
SELECT osm_id,
|
||||
geometry,
|
||||
name,
|
||||
name_en,
|
||||
name_de,
|
||||
tags,
|
||||
leisure,
|
||||
boundary,
|
||||
protection_title
|
||||
FROM osm_park_polygon_gen_z5
|
||||
WHERE zoom_level = 5
|
||||
AND geometry && bbox
|
||||
UNION ALL
|
||||
-- etldoc: osm_park_polygon_gen_z6 -> layer_park:z6
|
||||
SELECT osm_id,
|
||||
geometry,
|
||||
|
@ -184,6 +212,23 @@ FROM (
|
|||
area DESC
|
||||
)::int AS "rank"
|
||||
FROM (
|
||||
-- etldoc: osm_park_polygon_gen_z5 -> layer_park:z5
|
||||
SELECT osm_id,
|
||||
geometry_point,
|
||||
name,
|
||||
name_en,
|
||||
name_de,
|
||||
tags,
|
||||
leisure,
|
||||
boundary,
|
||||
protection_title,
|
||||
area
|
||||
FROM osm_park_polygon_gen_z5
|
||||
WHERE zoom_level = 5
|
||||
AND geometry_point && bbox
|
||||
AND area > 70000*2^(20-zoom_level)
|
||||
UNION ALL
|
||||
|
||||
-- etldoc: osm_park_polygon_gen_z6 -> layer_park:z6
|
||||
SELECT osm_id,
|
||||
geometry_point,
|
||||
|
|
|
@ -16,6 +16,18 @@ ALTER TABLE osm_park_polygon_gen_z7
|
|||
ADD COLUMN IF NOT EXISTS geometry_point geometry;
|
||||
ALTER TABLE osm_park_polygon_gen_z6
|
||||
ADD COLUMN IF NOT EXISTS geometry_point geometry;
|
||||
ALTER TABLE osm_park_polygon_gen_z5
|
||||
ADD COLUMN IF NOT EXISTS geometry_point geometry;
|
||||
|
||||
-- etldoc: osm_park_polygon_dissolve_z4 -> osm_park_polygon_gen_z4
|
||||
DROP MATERIALIZED VIEW IF EXISTS osm_park_polygon_dissolve_z4 CASCADE;
|
||||
CREATE MATERIALIZED VIEW osm_park_polygon_dissolve_z4 AS
|
||||
(
|
||||
SELECT
|
||||
(ST_Dump(
|
||||
ST_Union(geometry))).geom AS geometry
|
||||
FROM osm_park_polygon_gen_z4
|
||||
);
|
||||
|
||||
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon;
|
||||
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z13;
|
||||
|
@ -26,6 +38,8 @@ DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z9;
|
|||
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z8;
|
||||
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z7;
|
||||
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z6;
|
||||
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z5;
|
||||
DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z4;
|
||||
|
||||
-- etldoc: osm_park_polygon -> osm_park_polygon
|
||||
-- etldoc: osm_park_polygon_gen_z13 -> osm_park_polygon_gen_z13
|
||||
|
@ -36,6 +50,8 @@ DROP TRIGGER IF EXISTS update_row ON osm_park_polygon_gen_z6;
|
|||
-- etldoc: osm_park_polygon_gen_z8 -> osm_park_polygon_gen_z8
|
||||
-- etldoc: osm_park_polygon_gen_z7 -> osm_park_polygon_gen_z7
|
||||
-- etldoc: osm_park_polygon_gen_z6 -> osm_park_polygon_gen_z6
|
||||
-- etldoc: osm_park_polygon_gen_z5 -> osm_park_polygon_gen_z5
|
||||
-- etldoc: osm_park_polygon_gen_z4 -> osm_park_polygon_gen_z4
|
||||
CREATE OR REPLACE FUNCTION update_osm_park_polygon() RETURNS void AS
|
||||
$$
|
||||
BEGIN
|
||||
|
@ -75,6 +91,11 @@ BEGIN
|
|||
SET tags = update_tags(tags, geometry),
|
||||
geometry_point = st_centroid(geometry);
|
||||
|
||||
UPDATE osm_park_polygon_gen_z5
|
||||
SET tags = update_tags(tags, geometry),
|
||||
geometry_point = st_centroid(geometry);
|
||||
|
||||
REFRESH MATERIALIZED VIEW osm_park_polygon_dissolve_z4;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
|
@ -88,7 +109,9 @@ CREATE INDEX IF NOT EXISTS osm_park_polygon_gen_z9_point_geom_idx ON osm_park_po
|
|||
CREATE INDEX IF NOT EXISTS osm_park_polygon_gen_z8_point_geom_idx ON osm_park_polygon_gen_z8 USING gist (geometry_point);
|
||||
CREATE INDEX IF NOT EXISTS osm_park_polygon_gen_z7_point_geom_idx ON osm_park_polygon_gen_z7 USING gist (geometry_point);
|
||||
CREATE INDEX IF NOT EXISTS osm_park_polygon_gen_z6_point_geom_idx ON osm_park_polygon_gen_z6 USING gist (geometry_point);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS osm_park_polygon_gen_z5_point_geom_idx ON osm_park_polygon_gen_z5 USING gist (geometry_point);
|
||||
CREATE INDEX IF NOT EXISTS osm_park_polygon_gen_z4_polygon_geom_idx ON osm_park_polygon_gen_z4 USING gist (geometry);
|
||||
CREATE INDEX IF NOT EXISTS osm_park_polygon_dissolve_z4_polygon_geom_idx ON osm_park_polygon_dissolve_z4 USING gist (geometry);
|
||||
|
||||
CREATE OR REPLACE FUNCTION update_osm_park_polygon_row()
|
||||
RETURNS trigger
|
||||
|
@ -154,3 +177,16 @@ CREATE TRIGGER update_row
|
|||
ON osm_park_polygon_gen_z6
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE update_osm_park_polygon_row();
|
||||
|
||||
CREATE TRIGGER update_row
|
||||
BEFORE INSERT OR UPDATE
|
||||
ON osm_park_polygon_gen_z5
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE update_osm_park_polygon_row();
|
||||
|
||||
CREATE TRIGGER update_row
|
||||
BEFORE INSERT OR UPDATE
|
||||
ON osm_park_polygon_gen_z4
|
||||
FOR EACH ROW
|
||||
EXECUTE PROCEDURE update_osm_park_polygon_row();
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue