From 5c58cb70e0067b2a97437974aa3d24d8637640ac Mon Sep 17 00:00:00 2001 From: lukasmartinelli Date: Fri, 28 Oct 2016 16:11:26 +0200 Subject: [PATCH] Add water name layer --- docker-compose.yml | 5 +++++ layers/water_name/layer.sql | 10 ++++++++++ layers/water_name/merge_lakelines.sql | 9 +++++++++ layers/water_name/water_name.yaml | 18 ++++++++++++++++++ openmaptiles.yaml | 1 + 5 files changed, 43 insertions(+) create mode 100644 layers/water_name/layer.sql create mode 100644 layers/water_name/merge_lakelines.sql create mode 100644 layers/water_name/water_name.yaml diff --git a/docker-compose.yml b/docker-compose.yml index dcc2db35..9ac846c5 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 00000000..e6fafc9c --- /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 00000000..125f8022 --- /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 00000000..8080b446 --- /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 81a57ed2..5e50cb15 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