Implement tile_area

pull/1457/head
Brian Sperlongano 2022-12-16 18:21:32 -05:00
rodzic a2697f9cec
commit 3ac1428794
3 zmienionych plików z 23 dodań i 6 usunięć

Plik binarny nie jest wyświetlany.

Przed

Szerokość:  |  Wysokość:  |  Rozmiar: 100 KiB

Po

Szerokość:  |  Wysokość:  |  Rozmiar: 109 KiB

Wyświetl plik

@ -2,6 +2,8 @@ DROP TRIGGER IF EXISTS trigger_delete_point ON osm_water_polygon;
DROP TRIGGER IF EXISTS trigger_update_point ON osm_water_polygon;
DROP TRIGGER IF EXISTS trigger_insert_point ON osm_water_polygon;
-- etldoc: osm_water_polygon -> osm_water_point_view
-- etldoc: lake_centerline -> osm_water_point_view
CREATE OR REPLACE VIEW osm_water_point_view AS
SELECT wp.osm_id,
ST_PointOnSurface(wp.geometry) AS geometry,
@ -9,7 +11,8 @@ SELECT wp.osm_id,
wp.name_en,
wp.name_de,
update_tags(wp.tags, ST_PointOnSurface(wp.geometry)) AS tags,
ST_Area(wp.geometry) AS area,
-- Area of the feature in square meters
ST_Area(wp.geometry) as area,
wp.is_intermittent
FROM osm_water_polygon AS wp
LEFT JOIN lake_centerline ll ON wp.osm_id = ll.osm_id
@ -17,11 +20,23 @@ WHERE ll.osm_id IS NULL
AND wp.name <> ''
AND ST_IsValid(wp.geometry);
-- etldoc: osm_water_polygon -> osm_water_point
-- etldoc: lake_centerline -> osm_water_point
-- etldoc: osm_water_point_view -> osm_water_point_earth_view
CREATE OR REPLACE VIEW osm_water_point_earth_view AS
SELECT osm_id,
geometry,
name,
name_en,
name_de,
tags,
-- Percentage of the earth's surface covered by this feature (approximately)
area / (405279708033600 * COS(ST_Y(ST_Transform(geometry,4326))*PI()/180)) as earth_area,
is_intermittent
FROM osm_water_point_view;
-- etldoc: osm_water_point_earth_view -> osm_water_point
CREATE TABLE IF NOT EXISTS osm_water_point AS
SELECT *
FROM osm_water_point_view;
FROM osm_water_point_earth_view;
DO
$$
BEGIN

Wyświetl plik

@ -44,7 +44,8 @@ SELECT
ELSE osm_id * 10 + 1
END AS osm_id_hash,
geometry,
POWER(4,zoom_level) * area / (405279708033600 * COS(ST_Y(ST_Transform(geometry,4326))*PI()/180)) as tile_area,
-- Percentage of a single tile covered by this feature
POWER(4,zoom_level) * earth_area as tile_area,
name,
COALESCE(NULLIF(name_en, ''), name) AS name_en,
COALESCE(NULLIF(name_de, ''), name, name_en) AS name_de,
@ -54,7 +55,8 @@ SELECT
FROM osm_water_point
WHERE geometry && bbox
AND (
(zoom_level BETWEEN 9 AND 13 AND area > 70000 * 2 ^ (20 - zoom_level))
-- Show a label if a water feature covers at least 1/4 of a tile or z14+
(zoom_level BETWEEN 9 AND 13 AND POWER(4,zoom_level) * earth_area > 0.25)
OR (zoom_level >= 14)
)
UNION ALL