diff --git a/layers/power/README.md b/layers/power/README.md new file mode 100644 index 00000000..604c5e60 --- /dev/null +++ b/layers/power/README.md @@ -0,0 +1,9 @@ +## power + +### Docs + +### Mapping Diagram +![Mapping diagram for transportation](mapping_diagram.png?raw=true) + +### ETL diagram +![ETL diagram for transportation](etl_diagram.png?raw=true) diff --git a/layers/power/etl_diagram.png b/layers/power/etl_diagram.png new file mode 100644 index 00000000..6ecefc13 Binary files /dev/null and b/layers/power/etl_diagram.png differ diff --git a/layers/power/mapping.yaml b/layers/power/mapping.yaml new file mode 100644 index 00000000..5a7b1897 --- /dev/null +++ b/layers/power/mapping.yaml @@ -0,0 +1,99 @@ +tables: + # etldoc: imposm3 -> osm_power_point + power_point: + type: point + fields: + - name: osm_id + type: id + - name: geometry + type: geometry + - key: power + name: class + type: string + - key: plant:source + name: source + type: string + - key: plant:method + name: method + type: string + - key: generator:source + name: gen_source + type: string + - key: generator:method + name: gen_method + type: string + - key: power + name: name + type: string + mapping: + power: + - tower + - pole + - catenary_mast + - generator + - portal + - transformer + - switch + - insulator + # etldoc: imposm3 -> osm_power_linestring + power_linestring: + type: linestring + fields: + - name: osm_id + type: id + - name: geometry + type: geometry + - key: power + name: class + type: string + - key: plant:source + name: source + type: string + - key: plant:method + name: method + type: string + - key: generator:source + name: gen_source + type: string + - key: generator:method + name: gen_method + type: string + - key: name + name: name + type: string + mapping: + power: + - line + - minor_line + # etldoc: imposm3 -> osm_power_polygon + power_polygon: + type: polygon + fields: + - name: osm_id + type: id + - name: geometry + type: geometry + - key: power + name: class + type: string + - key: plant:source + name: source + type: string + - key: plant:method + name: method + type: string + - key: generator:source + name: gen_source + type: string + - key: generator:method + name: gen_method + type: string + - key: name + name: name + type: string + mapping: + power: + - generator + - plant + - substation + - transformer diff --git a/layers/power/mapping_diagram.png b/layers/power/mapping_diagram.png new file mode 100644 index 00000000..e6379058 Binary files /dev/null and b/layers/power/mapping_diagram.png differ diff --git a/layers/power/power.sql b/layers/power/power.sql new file mode 100644 index 00000000..f5db5dfa --- /dev/null +++ b/layers/power/power.sql @@ -0,0 +1,41 @@ +-- etldoc: layer_power[shape=record fillcolor=lightpink, style="rounded,filled", +-- etldoc: label="layer_power | z13 | z14+ " ] ; + +CREATE OR REPLACE FUNCTION layer_power(bbox geometry, zoom_level int) +RETURNS TABLE(geometry geometry, class text, source text, method text, name text) AS $$ +SELECT geometry, class, COALESCE(NULLIF(source, ''),NULLIF(gen_source, '')), method, name +FROM( + -- etldoc: osm_power_point -> layer_power:z13 + SELECT geometry, class, source, gen_source, method, name + FROM osm_power_point + WHERE zoom_level >= 13 AND class = 'tower' AND geometry && bbox + UNION ALL + -- etldoc: osm_power_point -> layer_power:z14 + SELECT geometry, class, source, gen_source, method, name + FROM osm_power_point + WHERE zoom_level >= 14 AND class = 'pole' AND geometry && bbox + UNION ALL + -- etldoc: osm_power_linestring -> layer_power:z13 + SELECT geometry, class, source, gen_source, method, name + FROM osm_power_linestring + WHERE zoom_level >= 13 AND class = 'line' AND geometry && bbox + UNION ALL + -- etldoc: osm_power_linestring -> layer_power:z14 + SELECT geometry, class, source, gen_source, method, name + FROM osm_power_linestring + WHERE zoom_level >= 14 AND class = 'minor_line' AND geometry && bbox + UNION ALL + -- etldoc: osm_power_polygon -> layer_power:z13 + SELECT geometry, class, source, gen_source, method, name + FROM osm_power_polygon + WHERE zoom_level >= 13 AND class = 'plant' AND geometry && bbox + UNION ALL + -- etldoc: osm_power_polygon -> layer_power:z14 + SELECT geometry, class, source, gen_source, method, name + FROM osm_power_polygon + WHERE zoom_level >= 14 AND class IN ('substation', 'generator', 'transformer') AND geometry && bbox + ) AS zoom_levels +WHERE geometry && bbox; +$$ LANGUAGE SQL STABLE + -- STRICT + PARALLEL SAFE; diff --git a/layers/power/power.yaml b/layers/power/power.yaml new file mode 100644 index 00000000..1ee85bff --- /dev/null +++ b/layers/power/power.yaml @@ -0,0 +1,74 @@ +layer: + id: "power" + description: | + **power** contains power cables and lines. + buffer_size: 4 + fields: + name: + description: | + Name of the feature. + class: + description: | + Class is derived from the value of the + [`power`](http://wiki.openstreetmap.org/wiki/Key:power) tag. + values: + - line + - minor_line + - tower + - pole + - catenary_mast + - plant + - generator + - substation + - portal + - transformer + - switch + - insulator + source: + description: | + Class is derived from the value of the + [`plant:source`](http://wiki.openstreetmap.org/wiki/Key:plant:source) tag. + values: + - battery + - biogas + - biomass + - coal + - combustion + - diesel + - gas + - geothermal + - hydro + - nuclear + - oil + - solar + - solar_thermal + - waste + - wind + - wind_turbine + - wood + method: + description: | + Class is derived from the value of the + [`plant:method`](http://wiki.openstreetmap.org/wiki/Key:plant:method) tag. + values: + - anaerobic_digestion + - combustion + - dam + - fission + - gasification + - photovoltaic + - run-of-the-river + - thermal + - water-pumpted-storage + - water-storage + - wind_turbine + + datasource: + geometry_field: geometry + query: (SELECT geometry, class, source, method, name FROM layer_power(!bbox!, z(!scale_denominator!))) AS t + +schema: + - ./power.sql +datasources: + - type: imposm3 + mapping_file: ./mapping.yaml diff --git a/openmaptiles.yaml b/openmaptiles.yaml index 1f23408b..489489f5 100644 --- a/openmaptiles.yaml +++ b/openmaptiles.yaml @@ -1,5 +1,6 @@ tileset: layers: + - layers/power/power.yaml - layers/water/water.yaml - layers/waterway/waterway.yaml - layers/landcover/landcover.yaml