Switch water layer to imposm3
This commit is contained in:
parent
908e6dc68c
commit
c86f5b9a26
67
layers/water/mapping.yaml
Normal file
67
layers/water/mapping.yaml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
generalized_tables:
|
||||||
|
water_polygon_gen3:
|
||||||
|
source: water_polygon
|
||||||
|
sql_filter: area>9000000.0
|
||||||
|
tolerance: 350.0
|
||||||
|
water_polygon_gen2:
|
||||||
|
source: water_polygon
|
||||||
|
sql_filter: area>1000000
|
||||||
|
tolerance: 200.0
|
||||||
|
water_polygon_gen1:
|
||||||
|
source: water_polygon
|
||||||
|
sql_filter: area>500000
|
||||||
|
tolerance: 100.0
|
||||||
|
tables:
|
||||||
|
water_polygon:
|
||||||
|
fields:
|
||||||
|
- name: osm_id
|
||||||
|
type: id
|
||||||
|
- name: geometry
|
||||||
|
type: validated_geometry
|
||||||
|
- name: area
|
||||||
|
type: pseudoarea
|
||||||
|
- key: name
|
||||||
|
name: name
|
||||||
|
type: string
|
||||||
|
- name: name_en
|
||||||
|
key: name:en
|
||||||
|
type: string
|
||||||
|
filters:
|
||||||
|
exclude_tags:
|
||||||
|
- [ "covered", "yes" ]
|
||||||
|
mapping:
|
||||||
|
landuse:
|
||||||
|
- reservoir
|
||||||
|
natural:
|
||||||
|
- water
|
||||||
|
- bay
|
||||||
|
waterway:
|
||||||
|
- river
|
||||||
|
- riverbank
|
||||||
|
- stream
|
||||||
|
- canal
|
||||||
|
- drain
|
||||||
|
- ditch
|
||||||
|
type: polygon
|
||||||
|
water_linestring:
|
||||||
|
fields:
|
||||||
|
- name: osm_id
|
||||||
|
type: id
|
||||||
|
- name: geometry
|
||||||
|
type: geometry
|
||||||
|
- name: waterway
|
||||||
|
type: mapping_value
|
||||||
|
- key: name
|
||||||
|
name: name
|
||||||
|
type: string
|
||||||
|
- name: name_en
|
||||||
|
key: name:en
|
||||||
|
type: string
|
||||||
|
mapping:
|
||||||
|
waterway:
|
||||||
|
- stream
|
||||||
|
- river
|
||||||
|
- canal
|
||||||
|
- drain
|
||||||
|
- ditch
|
||||||
|
type: linestring
|
||||||
@ -1,121 +1,115 @@
|
|||||||
CREATE OR REPLACE VIEW water_z0 AS (
|
CREATE OR REPLACE VIEW water_z0 AS (
|
||||||
SELECT geom FROM ne_110m_ocean
|
SELECT geom, 'ocean' AS class FROM ne_110m_ocean
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM ne_110m_lakes
|
SELECT geom, 'lake' AS class FROM ne_110m_lakes
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW water_z1 AS (
|
CREATE OR REPLACE VIEW water_z1 AS (
|
||||||
SELECT geom FROM ne_110m_ocean
|
SELECT geom, 'ocean' AS class FROM ne_110m_ocean
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM ne_110m_lakes
|
SELECT geom, 'lake' AS class FROM ne_110m_lakes
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW water_z2 AS (
|
CREATE OR REPLACE VIEW water_z2 AS (
|
||||||
SELECT geom FROM ne_50m_ocean
|
SELECT geom, 'ocean' AS class FROM ne_50m_ocean
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM ne_110m_lakes
|
SELECT geom, 'lake' AS class FROM ne_110m_lakes
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW water_z3 AS (
|
CREATE OR REPLACE VIEW water_z3 AS (
|
||||||
SELECT geom FROM ne_50m_ocean
|
SELECT geom, 'ocean' AS class FROM ne_50m_ocean
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM ne_110m_lakes
|
SELECT geom, 'lake' AS class FROM ne_110m_lakes
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM ne_110m_rivers_lake_centerlines
|
SELECT geom, 'river' AS class FROM ne_110m_rivers_lake_centerlines
|
||||||
WHERE featurecla = 'River'
|
WHERE featurecla = 'River'
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW water_z4 AS (
|
CREATE OR REPLACE VIEW water_z4 AS (
|
||||||
SELECT geom FROM ne_50m_ocean
|
SELECT geom, 'ocean' AS class FROM ne_50m_ocean
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM ne_50m_lakes
|
SELECT geom, 'lake' AS class FROM ne_50m_lakes
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM ne_50m_rivers_lake_centerlines
|
SELECT geom, 'river' AS class FROM ne_50m_rivers_lake_centerlines
|
||||||
WHERE featurecla = 'River'
|
WHERE featurecla = 'River'
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW water_z5 AS (
|
CREATE OR REPLACE VIEW water_z5 AS (
|
||||||
SELECT geom FROM ne_10m_ocean
|
SELECT geom, 'ocean' AS class FROM ne_10m_ocean
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM ne_10m_lakes
|
SELECT geom, 'lake' AS class FROM ne_10m_lakes
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM ne_50m_rivers_lake_centerlines
|
SELECT geom, 'river' AS class FROM ne_50m_rivers_lake_centerlines
|
||||||
WHERE featurecla = 'River'
|
WHERE featurecla = 'River'
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW water_z6 AS (
|
CREATE OR REPLACE VIEW water_z6 AS (
|
||||||
SELECT geom FROM ne_10m_ocean
|
SELECT geom, 'ocean' AS class FROM ne_10m_ocean
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM ne_10m_lakes
|
SELECT geom, 'lake' AS class FROM ne_10m_lakes
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM ne_10m_rivers_lake_centerlines
|
SELECT geom, 'river' AS class FROM ne_10m_rivers_lake_centerlines
|
||||||
WHERE featurecla = 'River'
|
WHERE featurecla = 'River'
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS water_z7 AS (
|
CREATE TABLE IF NOT EXISTS water_z7 AS (
|
||||||
SELECT geom FROM ne_10m_ocean
|
SELECT geom, 'ocean' AS class FROM ne_10m_ocean
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT ST_SimplifyPreserveTopology(way, 350) AS geom FROM water_areas
|
SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon_gen3
|
||||||
WHERE way_area > 9000000
|
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM ne_10m_rivers_lake_centerlines
|
SELECT geom, 'river' AS class FROM ne_10m_rivers_lake_centerlines
|
||||||
WHERE featurecla = 'River'
|
WHERE featurecla = 'River'
|
||||||
);
|
);
|
||||||
CREATE INDEX IF NOT EXISTS water_z7_geom_idx ON water_z7 USING gist(geom);
|
CREATE INDEX IF NOT EXISTS water_z7_geom_idx ON water_z7 USING gist(geom);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS water_z8 AS (
|
CREATE TABLE IF NOT EXISTS water_z8 AS (
|
||||||
SELECT geom FROM ne_10m_ocean
|
SELECT geom, 'ocean' AS class FROM ne_10m_ocean
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT ST_SimplifyPreserveTopology(way, 200) AS geom FROM water_areas
|
SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon_gen2
|
||||||
WHERE way_area > 1000000
|
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT ST_Simplify(way, 200) AS geom FROM waterways
|
SELECT ST_Simplify(geometry, 200) AS geom, waterway AS class FROM osm_water_linestring
|
||||||
WHERE waterway IN ('river') AND ST_Length(way) > 10000
|
WHERE waterway IN ('river') AND ST_Length(geometry) > 10000
|
||||||
);
|
);
|
||||||
CREATE INDEX IF NOT EXISTS water_z8_geom_idx ON water_z8 USING gist(geom);
|
CREATE INDEX IF NOT EXISTS water_z8_geom_idx ON water_z8 USING gist(geom);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS water_z9 AS (
|
CREATE TABLE IF NOT EXISTS water_z9 AS (
|
||||||
SELECT ST_SimplifyPreserveTopology(way, 100) AS geom FROM water_areas
|
SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon_gen1
|
||||||
WHERE way_area > 500000
|
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT ST_Simplify(way,100) AS geom FROM waterways
|
SELECT ST_Simplify(geometry, 100) AS geom, waterway AS class FROM osm_water_linestring
|
||||||
WHERE waterway IN ('river') AND ST_Length(way) > 5000
|
WHERE waterway IN ('river') AND ST_Length(geometry) > 5000
|
||||||
);
|
);
|
||||||
CREATE INDEX IF NOT EXISTS water_z9_geom_idx ON water_z9 USING gist(geom);
|
CREATE INDEX IF NOT EXISTS water_z9_geom_idx ON water_z9 USING gist(geom);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW water_z11 AS (
|
CREATE OR REPLACE VIEW water_z11 AS (
|
||||||
SELECT way AS geom FROM water_areas
|
SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon WHERE area > 40000
|
||||||
WHERE way_area > 50000
|
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT way AS geom FROM waterways
|
SELECT geometry AS geom, waterway AS class FROM osm_water_linestring
|
||||||
WHERE waterway IN ('river')
|
WHERE waterway IN ('river') AND ST_Length(geometry) > 5000
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW water_z12 AS (
|
CREATE OR REPLACE VIEW water_z12 AS (
|
||||||
SELECT way AS geom FROM water_areas
|
SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon WHERE area > 10000
|
||||||
WHERE way_area > 40000
|
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT way AS geom FROM waterways
|
SELECT geometry AS geom, waterway AS class FROM osm_water_linestring
|
||||||
WHERE waterway IN ('river', 'canal', 'stream')
|
WHERE waterway IN ('river', 'canal') OR (waterway = 'stream' AND ST_Length(geometry) > 1000)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW water_z13 AS (
|
CREATE OR REPLACE VIEW water_z13 AS (
|
||||||
SELECT way AS geom FROM water_areas
|
SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon WHERE area > 5000
|
||||||
WHERE way_area > 2000
|
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT way AS geom FROM waterways
|
SELECT geometry AS geom, waterway AS class FROM osm_water_linestring
|
||||||
WHERE waterway IN ('river', 'canal', 'stream', 'drain', 'ditch')
|
WHERE waterway IN ('river', 'canal', 'stream', 'drain', 'ditch') AND ST_Length(geometry) > 300
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE VIEW water_z14 AS (
|
CREATE OR REPLACE VIEW water_z14 AS (
|
||||||
SELECT way AS geom FROM water_areas
|
SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT way AS geom FROM waterways
|
SELECT geometry AS geom, waterway AS class FROM osm_water_linestring
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION layer_water (bbox geometry, zoom_level int)
|
CREATE OR REPLACE FUNCTION layer_water (bbox geometry, zoom_level int)
|
||||||
RETURNS TABLE(geom geometry) AS $$
|
RETURNS TABLE(geom geometry, class text) AS $$
|
||||||
SELECT geom FROM (
|
SELECT geom, class FROM (
|
||||||
SELECT * FROM water_z0 WHERE zoom_level = 0
|
SELECT * FROM water_z0 WHERE zoom_level = 0
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT * FROM water_z1 WHERE zoom_level = 1
|
SELECT * FROM water_z1 WHERE zoom_level = 1
|
||||||
@ -132,9 +126,9 @@ RETURNS TABLE(geom geometry) AS $$
|
|||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT * FROM water_z7 WHERE zoom_level = 7
|
SELECT * FROM water_z7 WHERE zoom_level = 7
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM water_z8 WHERE zoom_level = 8
|
SELECT * FROM water_z8 WHERE zoom_level = 8
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT geom FROM water_z9 WHERE zoom_level BETWEEN 9 AND 10
|
SELECT * FROM water_z9 WHERE zoom_level BETWEEN 9 AND 10
|
||||||
UNION ALL
|
UNION ALL
|
||||||
SELECT * FROM water_z11 WHERE zoom_level = 11
|
SELECT * FROM water_z11 WHERE zoom_level = 11
|
||||||
UNION ALL
|
UNION ALL
|
||||||
|
|||||||
@ -1,8 +1,12 @@
|
|||||||
layer:
|
layer:
|
||||||
id: "water"
|
id: "water"
|
||||||
description: water
|
description: |
|
||||||
|
Water polygons and linestrings representing oceans, lakes and waterways.
|
||||||
buffer_size: 4
|
buffer_size: 4
|
||||||
datasource:
|
datasource:
|
||||||
query: (SELECT * FROM layer_water(!bbox!, z(!scale_denominator!))) AS t
|
query: (SELECT * FROM layer_water(!bbox!, z(!scale_denominator!))) AS t
|
||||||
schema:
|
schema:
|
||||||
- ./water.sql
|
- ./water.sql
|
||||||
|
datasources:
|
||||||
|
- type: imposm3
|
||||||
|
mapping_file: ./mapping.yaml
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user