Add tile layer for regions with event count
This commit is contained in:
parent
bea4174b37
commit
3a97b07325
26
tile-generator/layers/obs_regions/layer.sql
Normal file
26
tile-generator/layers/obs_regions/layer.sql
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
DROP FUNCTION IF EXISTS layer_obs_regions(geometry, int);
|
||||||
|
|
||||||
|
CREATE OR REPLACE FUNCTION layer_obs_regions(bbox geometry, zoom_level int)
|
||||||
|
RETURNS TABLE(
|
||||||
|
region_id bigint,
|
||||||
|
geometry geometry,
|
||||||
|
name text,
|
||||||
|
admin_level int,
|
||||||
|
overtaking_event_count int
|
||||||
|
) AS $$
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
region.relation_id::bigint as region_id,
|
||||||
|
ST_SimplifyPreserveTopology(region.geometry, ZRes(zoom_level + 2)) as geometry,
|
||||||
|
region.name as name,
|
||||||
|
region.admin_level as admin_level,
|
||||||
|
count(overtaking_event.id)::int as overtaking_event_count
|
||||||
|
FROM region
|
||||||
|
LEFT JOIN overtaking_event on ST_Within(ST_Transform(overtaking_event.geometry, 3857), region.geometry)
|
||||||
|
WHERE
|
||||||
|
zoom_level >= 4 AND
|
||||||
|
zoom_level <= 12 AND
|
||||||
|
ST_Transform(region.geometry, 3857) && bbox
|
||||||
|
GROUP BY region.relation_id, region.name, region.geometry, region.admin_level
|
||||||
|
|
||||||
|
$$ LANGUAGE SQL IMMUTABLE;
|
23
tile-generator/layers/obs_regions/obs_regions.yaml
Normal file
23
tile-generator/layers/obs_regions/obs_regions.yaml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
layer:
|
||||||
|
id: "obs_regions"
|
||||||
|
description: |
|
||||||
|
Statistics on administrative boundary areas ("regions")
|
||||||
|
buffer_size: 4
|
||||||
|
fields:
|
||||||
|
overtaking_event_count: |
|
||||||
|
Number of overtaking events.
|
||||||
|
name: |
|
||||||
|
Name of the region
|
||||||
|
admin_level: |
|
||||||
|
Administrative level of the boundary, as tagged in OpenStreetMap
|
||||||
|
defaults:
|
||||||
|
srs: EPSG:3785
|
||||||
|
datasource:
|
||||||
|
srid: 3857
|
||||||
|
geometry_field: geometry
|
||||||
|
key_field: region_id
|
||||||
|
key_field_as_attribute: no
|
||||||
|
query: (SELECT region_id, geometry, name, admin_level, overtaking_event_count FROM layer_obs_regions(!bbox!, z(!scale_denominator!))) AS t
|
||||||
|
|
||||||
|
schema:
|
||||||
|
- ./layer.sql
|
|
@ -3,6 +3,7 @@ tileset:
|
||||||
layers:
|
layers:
|
||||||
- layers/obs_events/obs_events.yaml
|
- layers/obs_events/obs_events.yaml
|
||||||
- layers/obs_roads/obs_roads.yaml
|
- layers/obs_roads/obs_roads.yaml
|
||||||
|
- layers/obs_regions/obs_regions.yaml
|
||||||
version: 0.7.0
|
version: 0.7.0
|
||||||
id: openbikesensor
|
id: openbikesensor
|
||||||
description: >
|
description: >
|
||||||
|
|
Loading…
Reference in a new issue