diff --git a/docker-compose.yml b/docker-compose.yml index dcc2db3..9ac846c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,6 +19,11 @@ services: env_file: .env links: - postgres + import-lakelines: + image: "openmaptiles/import-lakelines" + env_file: .env + links: + - postgres import-osm: image: "openmaptiles/import-osm" env_file: .env diff --git a/layers/water_name/layer.sql b/layers/water_name/layer.sql new file mode 100644 index 0000000..e6fafc9 --- /dev/null +++ b/layers/water_name/layer.sql @@ -0,0 +1,10 @@ +CREATE OR REPLACE FUNCTION layer_water_name(bbox geometry, zoom_level integer) +RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, class text) AS $$ + SELECT osm_id, geometry, name, name_en, 'lake'::text AS class + FROM osm_water_lakeline + WHERE geometry && bbox + AND name <> '' + AND ((zoom_level BETWEEN 10 AND 13 AND LineLabel(zoom_level, NULLIF(name, ''), geometry)) + OR (zoom_level >= 14)) + ORDER BY ST_Length(geometry) DESC; +$$ LANGUAGE SQL IMMUTABLE; diff --git a/layers/water_name/merge_lakelines.sql b/layers/water_name/merge_lakelines.sql new file mode 100644 index 0000000..125f802 --- /dev/null +++ b/layers/water_name/merge_lakelines.sql @@ -0,0 +1,9 @@ +CREATE TABLE IF NOT EXISTS osm_water_lakeline AS ( + SELECT wp.osm_id, + ll.wkb_geometry AS geometry, + name, name_en + FROM osm_water_polygon AS wp + INNER JOIN lake_centerline ll ON wp.osm_id = ll.osm_id +); + +CREATE INDEX IF NOT EXISTS osm_water_lakeline_geometry_idx ON osm_water_lakeline USING gist(geometry); diff --git a/layers/water_name/water_name.yaml b/layers/water_name/water_name.yaml new file mode 100644 index 0000000..8080b44 --- /dev/null +++ b/layers/water_name/water_name.yaml @@ -0,0 +1,18 @@ +layer: + id: "water_name" + description: | + OSM lakelines. + buffer_size: 8 + srs: +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over + fields: + class: String + datasource: + geometry_field: geometry + srid: 900913 + query: (SELECT geometry, name, name_en, class FROM layer_water_name(!bbox!, z(!scale_denominator!))) AS t +schema: + - ./merge_lakelines.sql + - ./layer.sql +datasources: + - type: imposm3 + mapping_file: ../water/mapping.yaml diff --git a/openmaptiles.yaml b/openmaptiles.yaml index 81a57ed..5e50cb1 100644 --- a/openmaptiles.yaml +++ b/openmaptiles.yaml @@ -8,6 +8,7 @@ tileset: #- layers/housenumber/housenumber.yaml - layers/place/place.yaml - layers/railway/railway.yaml + - layers/water_name/water_name.yaml - layers/water/water.yaml - layers/waterway/waterway.yaml - layers/landcover/landcover.yaml