diff --git a/Makefile b/Makefile index 6e674b5..4069f0c 100644 --- a/Makefile +++ b/Makefile @@ -154,7 +154,8 @@ etl-graph: # generate etl graph for a certain layer, e.g. etl-graph-building, etl-graph-place etl-graph-%: layers/% build/devdoc - docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/$*/$*.yaml ./build/devdoc + docker run --rm -u $$(id -u $${USER}):$$(id -g $${USER}) -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-etlgraph layers/$*/$*.yaml ./build/devdoc + cp ./build/devdoc/etl_$*.png layers/$*/etl_diagram.png mappingLayers = $(notdir $(patsubst %/mapping.yaml,%, $(wildcard layers/*/mapping.yaml))) # layers with mapping.yaml @@ -166,7 +167,8 @@ mapping-graph: @echo 'Valid layers: $(mappingLayers)' mapping-graph-%: ./layers/%/mapping.yaml build/devdoc - docker run --rm -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-mapping-graph layers/$*/$*.yaml ./build/devdoc/mapping-diagram-$* + docker run --rm -u $$(id -u $${USER}):$$(id -g $${USER}) -v $$(pwd):/tileset openmaptiles/openmaptiles-tools generate-mapping-graph layers/$*/$*.yaml ./build/devdoc/mapping-diagram-$* + cp ./build/devdoc/mapping-diagram-$*.png layers/$*/mapping_diagram.png # generate all etl and mapping graphs generate-devdoc: $(addprefix etl-graph-,$(layers)) $(addprefix mapping-graph-,$(mappingLayers)) diff --git a/README.md b/README.md index 208f4af..1ef1c6e 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ You can start from several GL styles supporting the OpenMapTiles vector schema. - [Klokantech 3D](https://github.com/openmaptiles/klokantech-3d-gl-style) - [Fiord Color](https://github.com/openmaptiles/fiord-color-gl-style) - [Toner](https://github.com/openmaptiles/toner-gl-style) +- [OSM Liberty](https://github.com/maputnik/osm-liberty) We also ported over our favorite old raster styles (TM2). @@ -105,6 +106,16 @@ docker-compose run import-lakelines docker-compose run import-osmborder ``` +**[Optional]** +Import latest Wikidata. If an OSM feature has [Key:wikidata](https://wiki.openstreetmap.org/wiki/Key:wikidata), OpenMapTiles check corresponding item in Wikidata and use its [labels](https://www.wikidata.org/wiki/Help:Label) for languages listed in [openmaptiles.yaml](openmaptiles.yaml). So the generated vector tiles includes multi-languages in name field. + +Beware that current [Wikidata dump](https://dumps.wikimedia.org/wikidatawiki/entities/latest-all.json.gz) is more than 55GB, it takes time to download and import it. If you just want to have a quickstart on OpenMapTiles, just skip this step. + +```bash +make download-wikidata +docker-compose run import-wikidata +``` + [Download OpenStreetMap data extracts](http://download.geofabrik.de/) and store the PBF file in the `./data` directory. ```bash diff --git a/docker-compose.yml b/docker-compose.yml index 478d5c0..13aacfb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -18,7 +18,7 @@ services: networks: - postgres_conn import-water: - image: "openmaptiles/import-water:1.1" + image: "openmaptiles/import-water:1.2" env_file: .env networks: - postgres_conn @@ -68,7 +68,7 @@ services: - ./build:/mapping - cache:/cache import-sql: - image: "openmaptiles/import-sql:0.8" + image: "openmaptiles/import-sql:1.0" env_file: .env networks: - postgres_conn diff --git a/layers/aerodrome_label/aerodrome_label.yaml b/layers/aerodrome_label/aerodrome_label.yaml index 4942723..17b0fbe 100644 --- a/layers/aerodrome_label/aerodrome_label.yaml +++ b/layers/aerodrome_label/aerodrome_label.yaml @@ -27,6 +27,8 @@ layer: ele_ft: Elevation (`ele`) in feets. datasource: geometry_field: geometry + key_field: osm_id + key_field_as_attribute: no srid: 900913 query: (SELECT osm_id, geometry, name, name_en, name_de, {name_languages}, class, iata, icao, ele, ele_ft FROM layer_aerodrome_label (!bbox!, z(!scale_denominator!), !pixel_width!)) AS t schema: diff --git a/layers/aerodrome_label/etl_diagram.png b/layers/aerodrome_label/etl_diagram.png index 3e30825..3879664 100644 Binary files a/layers/aerodrome_label/etl_diagram.png and b/layers/aerodrome_label/etl_diagram.png differ diff --git a/layers/aerodrome_label/mapping_diagram.png b/layers/aerodrome_label/mapping_diagram.png index bcaf83a..cbbb899 100644 Binary files a/layers/aerodrome_label/mapping_diagram.png and b/layers/aerodrome_label/mapping_diagram.png differ diff --git a/layers/aeroway/etl_diagram.png b/layers/aeroway/etl_diagram.png index c2b3818..a895735 100644 Binary files a/layers/aeroway/etl_diagram.png and b/layers/aeroway/etl_diagram.png differ diff --git a/layers/aeroway/mapping_diagram.png b/layers/aeroway/mapping_diagram.png index 7a102c4..ca19fec 100644 Binary files a/layers/aeroway/mapping_diagram.png and b/layers/aeroway/mapping_diagram.png differ diff --git a/layers/boundary/etl_diagram.png b/layers/boundary/etl_diagram.png index 12e4cea..53f4eef 100644 Binary files a/layers/boundary/etl_diagram.png and b/layers/boundary/etl_diagram.png differ diff --git a/layers/building/etl_diagram.png b/layers/building/etl_diagram.png index 6b52667..8a43f94 100644 Binary files a/layers/building/etl_diagram.png and b/layers/building/etl_diagram.png differ diff --git a/layers/building/mapping_diagram.png b/layers/building/mapping_diagram.png index 887f487..8d8341f 100644 Binary files a/layers/building/mapping_diagram.png and b/layers/building/mapping_diagram.png differ diff --git a/layers/housenumber/etl_diagram.png b/layers/housenumber/etl_diagram.png index 5dcd499..add427d 100644 Binary files a/layers/housenumber/etl_diagram.png and b/layers/housenumber/etl_diagram.png differ diff --git a/layers/housenumber/mapping_diagram.png b/layers/housenumber/mapping_diagram.png index bcaf83a..a30e718 100644 Binary files a/layers/housenumber/mapping_diagram.png and b/layers/housenumber/mapping_diagram.png differ diff --git a/layers/landcover/etl_diagram.png b/layers/landcover/etl_diagram.png index ba8f588..8fb941a 100644 Binary files a/layers/landcover/etl_diagram.png and b/layers/landcover/etl_diagram.png differ diff --git a/layers/landcover/landcover.sql b/layers/landcover/landcover.sql index f157047..b949563 100644 --- a/layers/landcover/landcover.sql +++ b/layers/landcover/landcover.sql @@ -21,7 +21,7 @@ CREATE OR REPLACE FUNCTION landcover_class(landuse VARCHAR, "natural" VARCHAR, l OR leisure IN ('park', 'garden') THEN 'grass' WHEN "natural"='wetland' OR wetland IN ('bog', 'swamp', 'wet_meadow', 'marsh', 'reedbed', 'saltern', 'tidalflat', 'saltmarsh', 'mangrove') THEN 'wetland' - WHEN "natural"IN ('beach', 'sand') THEN 'sand' + WHEN "natural"IN ('beach', 'sand', 'dune') THEN 'sand' ELSE NULL END; $$ LANGUAGE SQL IMMUTABLE; diff --git a/layers/landcover/landcover.yaml b/layers/landcover/landcover.yaml index 4c29aea..6920b34 100644 --- a/layers/landcover/landcover.yaml +++ b/layers/landcover/landcover.yaml @@ -29,6 +29,7 @@ layer: - bare_rock - beach - bog + - dune - farm - farmland - forest diff --git a/layers/landcover/mapping.yaml b/layers/landcover/mapping.yaml index 90e7372..f5193d8 100644 --- a/layers/landcover/mapping.yaml +++ b/layers/landcover/mapping.yaml @@ -92,6 +92,7 @@ tables: - scree - beach - sand + - dune leisure: - park - garden diff --git a/layers/landcover/mapping_diagram.png b/layers/landcover/mapping_diagram.png index a0d708f..182658c 100644 Binary files a/layers/landcover/mapping_diagram.png and b/layers/landcover/mapping_diagram.png differ diff --git a/layers/landuse/etl_diagram.png b/layers/landuse/etl_diagram.png index a89a48c..bf447a3 100644 Binary files a/layers/landuse/etl_diagram.png and b/layers/landuse/etl_diagram.png differ diff --git a/layers/landuse/mapping_diagram.png b/layers/landuse/mapping_diagram.png index 2ee445e..51a2ec9 100644 Binary files a/layers/landuse/mapping_diagram.png and b/layers/landuse/mapping_diagram.png differ diff --git a/layers/mountain_peak/etl_diagram.png b/layers/mountain_peak/etl_diagram.png index 403d43c..e9a5bd7 100644 Binary files a/layers/mountain_peak/etl_diagram.png and b/layers/mountain_peak/etl_diagram.png differ diff --git a/layers/mountain_peak/mapping_diagram.png b/layers/mountain_peak/mapping_diagram.png index 77e06db..e0c5ceb 100644 Binary files a/layers/mountain_peak/mapping_diagram.png and b/layers/mountain_peak/mapping_diagram.png differ diff --git a/layers/mountain_peak/mountain_peak.yaml b/layers/mountain_peak/mountain_peak.yaml index e32a843..35a75b8 100644 --- a/layers/mountain_peak/mountain_peak.yaml +++ b/layers/mountain_peak/mountain_peak.yaml @@ -19,6 +19,8 @@ layer: rank: Rank of the peak within one tile (starting at 1 that is the most important peak). datasource: geometry_field: geometry + key_field: osm_id + key_field_as_attribute: no srid: 900913 query: (SELECT osm_id, geometry, name, name_en, name_de, {name_languages}, class, ele, ele_ft, rank FROM layer_mountain_peak(!bbox!, z(!scale_denominator!), !pixel_width!)) AS t schema: diff --git a/layers/park/etl_diagram.png b/layers/park/etl_diagram.png index 4eb1ea5..2ee4242 100644 Binary files a/layers/park/etl_diagram.png and b/layers/park/etl_diagram.png differ diff --git a/layers/park/mapping_diagram.png b/layers/park/mapping_diagram.png index 0c59a6d..0f1a4ef 100644 Binary files a/layers/park/mapping_diagram.png and b/layers/park/mapping_diagram.png differ diff --git a/layers/place/etl_diagram.png b/layers/place/etl_diagram.png index 223187c..f63eb6c 100644 Binary files a/layers/place/etl_diagram.png and b/layers/place/etl_diagram.png differ diff --git a/layers/place/mapping_diagram.png b/layers/place/mapping_diagram.png index d96830a..6a43d74 100644 Binary files a/layers/place/mapping_diagram.png and b/layers/place/mapping_diagram.png differ diff --git a/layers/poi/class.sql b/layers/poi/class.sql index 949dd33..c991d22 100644 --- a/layers/poi/class.sql +++ b/layers/poi/class.sql @@ -30,7 +30,7 @@ $$ LANGUAGE SQL IMMUTABLE; CREATE OR REPLACE FUNCTION poi_class(subclass TEXT, mapping_key TEXT) RETURNS TEXT AS $$ SELECT CASE - WHEN subclass IN ('accessories','antiques','beauty','bed','boutique','camera','carpet','charity','chemist','chocolate','coffee','computer','confectionery','convenience','copyshop','cosmetics','garden_centre','doityourself','erotic','electronics','fabric','florist','frozen_food','furniture','video_games','video','general','gift','hardware','hearing_aids','hifi','ice_cream','interior_decoration','jewelry','kiosk','lamps','mall','massage','motorcycle','mobile_phone','newsagent','optician','outdoor','perfumery','perfume','pet','photo','second_hand','shoes','sports','stationery','tailor','tattoo','ticket','tobacco','toys','travel_agency','watches','weapons','wholesale') THEN 'shop' + WHEN subclass IN ('accessories','antiques','beauty','bed','boutique','camera','carpet','charity','chemist','coffee','computer','convenience','copyshop','cosmetics','garden_centre','doityourself','erotic','electronics','fabric','florist','frozen_food','furniture','video_games','video','general','gift','hardware','hearing_aids','hifi','ice_cream','interior_decoration','jewelry','kiosk','lamps','mall','massage','motorcycle','mobile_phone','newsagent','optician','outdoor','perfumery','perfume','pet','photo','second_hand','shoes','sports','stationery','tailor','tattoo','ticket','tobacco','toys','travel_agency','watches','weapons','wholesale') THEN 'shop' WHEN subclass IN ('townhall','public_building','courthouse','community_centre') THEN 'town_hall' WHEN subclass IN ('golf','golf_course','miniature_golf') THEN 'golf' WHEN subclass IN ('fast_food','food_court') THEN 'fast_food' diff --git a/layers/poi/etl_diagram.png b/layers/poi/etl_diagram.png index 314855c..bbabf80 100644 Binary files a/layers/poi/etl_diagram.png and b/layers/poi/etl_diagram.png differ diff --git a/layers/poi/mapping_diagram.png b/layers/poi/mapping_diagram.png index 3fe9c14..f584a1a 100644 Binary files a/layers/poi/mapping_diagram.png and b/layers/poi/mapping_diagram.png differ diff --git a/layers/transportation/class.sql b/layers/transportation/class.sql index 3c632f4..187b5f8 100644 --- a/layers/transportation/class.sql +++ b/layers/transportation/class.sql @@ -9,7 +9,7 @@ $$ LANGUAGE SQL IMMUTABLE STRICT; -- The classes for highways are derived from the classes used in ClearTables -- https://github.com/ClearTables/ClearTables/blob/master/transportation.lua -CREATE OR REPLACE FUNCTION highway_class(highway TEXT, public_transport TEXT) RETURNS TEXT AS $$ +CREATE OR REPLACE FUNCTION highway_class(highway TEXT, public_transport TEXT, construction TEXT) RETURNS TEXT AS $$ SELECT CASE WHEN highway IN ('motorway', 'motorway_link') THEN 'motorway' WHEN highway IN ('trunk', 'trunk_link') THEN 'trunk' @@ -17,9 +17,19 @@ CREATE OR REPLACE FUNCTION highway_class(highway TEXT, public_transport TEXT) RE WHEN highway IN ('secondary', 'secondary_link') THEN 'secondary' WHEN highway IN ('tertiary', 'tertiary_link') THEN 'tertiary' WHEN highway IN ('unclassified', 'residential', 'living_street', 'road') THEN 'minor' - WHEN highway IN ('service', 'track') THEN highway WHEN highway IN ('pedestrian', 'path', 'footway', 'cycleway', 'steps', 'bridleway', 'corridor') OR public_transport IN ('platform') THEN 'path' - WHEN highway = 'raceway' THEN 'raceway' + WHEN highway IN ('service', 'track', 'raceway') THEN highway + WHEN highway = 'construction' THEN CASE + WHEN construction IN ('motorway', 'motorway_link') THEN 'motorway_construction' + WHEN construction IN ('trunk', 'trunk_link') THEN 'trunk_construction' + WHEN construction IN ('primary', 'primary_link') THEN 'primary_construction' + WHEN construction IN ('secondary', 'secondary_link') THEN 'secondary_construction' + WHEN construction IN ('tertiary', 'tertiary_link') THEN 'tertiary_construction' + WHEN construction = '' OR construction IN ('unclassified', 'residential', 'living_street', 'road') THEN 'minor_construction' + WHEN construction IN ('pedestrian', 'path', 'footway', 'cycleway', 'steps', 'bridleway', 'corridor') OR public_transport IN ('platform') THEN 'path_construction' + WHEN construction IN ('service', 'track', 'raceway') THEN CONCAT(highway, '_construction') + ELSE NULL + END ELSE NULL END; $$ LANGUAGE SQL IMMUTABLE; diff --git a/layers/transportation/etl_diagram.png b/layers/transportation/etl_diagram.png index 82b331d..ba57d14 100644 Binary files a/layers/transportation/etl_diagram.png and b/layers/transportation/etl_diagram.png differ diff --git a/layers/transportation/layer.sql b/layers/transportation/layer.sql index 441d08e..561f611 100644 --- a/layers/transportation/layer.sql +++ b/layers/transportation/layer.sql @@ -12,7 +12,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A SELECT osm_id, geometry, CASE - WHEN NULLIF(highway, '') IS NOT NULL OR NULLIF(public_transport, '') IS NOT NULL THEN highway_class(highway, public_transport) + WHEN NULLIF(highway, '') IS NOT NULL OR NULLIF(public_transport, '') IS NOT NULL THEN highway_class(highway, public_transport, construction) WHEN NULLIF(railway, '') IS NOT NULL THEN railway_class(railway) WHEN NULLIF(aerialway, '') IS NOT NULL THEN aerialway WHEN NULLIF(shipway, '') IS NOT NULL THEN shipway @@ -21,7 +21,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A CASE WHEN railway IS NOT NULL THEN railway WHEN (highway IS NOT NULL OR public_transport IS NOT NULL) - AND highway_class(highway, public_transport) = 'path' + AND highway_class(highway, public_transport, construction) = 'path' THEN COALESCE(NULLIF(public_transport, ''), highway) ELSE NULL END AS subclass, @@ -43,7 +43,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_transportation_merge_linestring_gen7 -> layer_transportation:z4 SELECT osm_id, geometry, - highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, + highway, construction, NULL AS railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, NULL AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_ford, @@ -58,7 +58,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_transportation_merge_linestring_gen6 -> layer_transportation:z5 SELECT osm_id, geometry, - highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, + highway, construction, NULL AS railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, NULL AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_ford, @@ -73,7 +73,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_transportation_merge_linestring_gen5 -> layer_transportation:z6 SELECT osm_id, geometry, - highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, + highway, construction, NULL AS railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, NULL AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_ford, @@ -88,7 +88,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_transportation_merge_linestring_gen4 -> layer_transportation:z7 SELECT osm_id, geometry, - highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, + highway, construction, NULL AS railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, NULL AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_ford, @@ -103,7 +103,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_transportation_merge_linestring_gen3 -> layer_transportation:z8 SELECT osm_id, geometry, - highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, + highway, construction, NULL AS railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, NULL AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_ford, @@ -119,7 +119,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_highway_linestring_gen2 -> layer_transportation:z10 SELECT osm_id, geometry, - highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, + highway, construction, NULL AS railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, NULL AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_ford, @@ -135,7 +135,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_highway_linestring_gen1 -> layer_transportation:z11 SELECT osm_id, geometry, - highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, + highway, construction, NULL AS railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, NULL AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_ford, @@ -153,7 +153,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_highway_linestring -> layer_transportation:z14_ SELECT osm_id, geometry, - highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, + highway, construction, NULL AS railway, NULL AS aerialway, NULL AS shipway, public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, man_made, layer, @@ -169,12 +169,12 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A FROM osm_highway_linestring WHERE NOT is_area AND ( zoom_level = 12 AND ( - highway_class(highway, public_transport) NOT IN ('track', 'path', 'minor') + highway_class(highway, public_transport, construction) NOT IN ('track', 'path', 'minor') OR highway IN ('unclassified', 'residential') ) AND man_made <> 'pier' OR zoom_level = 13 AND ( - highway_class(highway, public_transport) NOT IN ('track', 'path') AND man_made <> 'pier' + highway_class(highway, public_transport, construction) NOT IN ('track', 'path') AND man_made <> 'pier' OR man_made = 'pier' AND NOT ST_IsClosed(geometry) ) @@ -190,7 +190,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_railway_linestring_gen5 -> layer_transportation:z8 SELECT osm_id, geometry, - NULL AS highway, railway, NULL AS aerialway, NULL AS shipway, + NULL AS highway, NULL AS construction, railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, service_value(service) AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_ford, @@ -206,7 +206,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_railway_linestring_gen4 -> layer_transportation:z9 SELECT osm_id, geometry, - NULL AS highway, railway, NULL AS aerialway, NULL AS shipway, + NULL AS highway, NULL AS construction, railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, service_value(service) AS service, NULL::boolean AS is_bridge, NULL::boolean AS is_tunnel, NULL::boolean AS is_ford, @@ -222,7 +222,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_railway_linestring_gen3 -> layer_transportation:z10 SELECT osm_id, geometry, - NULL AS highway, railway, NULL AS aerialway, NULL AS shipway, + NULL AS highway, NULL AS construction, railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made, layer, NULL::int AS level, NULL::boolean AS indoor, @@ -236,7 +236,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_railway_linestring_gen2 -> layer_transportation:z11 SELECT osm_id, geometry, - NULL AS highway, railway, NULL AS aerialway, NULL AS shipway, + NULL AS highway, NULL AS construction, railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made, layer, NULL::int AS level, NULL::boolean AS indoor, @@ -250,7 +250,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_railway_linestring_gen1 -> layer_transportation:z12 SELECT osm_id, geometry, - NULL AS highway, railway, NULL AS aerialway, NULL AS shipway, + NULL AS highway, NULL AS construction, railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made, layer, NULL::int AS level, NULL::boolean AS indoor, @@ -265,7 +265,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_railway_linestring -> layer_transportation:z14_ SELECT osm_id, geometry, - NULL AS highway, railway, NULL AS aerialway, NULL AS shipway, + NULL AS highway, NULL AS construction, railway, NULL AS aerialway, NULL AS shipway, NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made, layer, NULL::int AS level, NULL::boolean AS indoor, @@ -280,7 +280,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_aerialway_linestring_gen1 -> layer_transportation:z12 SELECT osm_id, geometry, - NULL AS highway, NULL as railway, aerialway, NULL AS shipway, + NULL AS highway, NULL AS construction, NULL as railway, aerialway, NULL AS shipway, NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made, layer, NULL::int AS level, NULL::boolean AS indoor, @@ -294,7 +294,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_aerialway_linestring -> layer_transportation:z14_ SELECT osm_id, geometry, - NULL AS highway, NULL as railway, aerialway, NULL AS shipway, + NULL AS highway, NULL AS construction, NULL as railway, aerialway, NULL AS shipway, NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made, layer, NULL::int AS level, NULL::boolean AS indoor, @@ -307,7 +307,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_shipway_linestring_gen2 -> layer_transportation:z11 SELECT osm_id, geometry, - NULL AS highway, NULL AS railway, NULL AS aerialway, shipway, + NULL AS highway, NULL AS construction, NULL AS railway, NULL AS aerialway, shipway, NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made, layer, NULL::int AS level, NULL::boolean AS indoor, @@ -320,7 +320,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_shipway_linestring_gen1 -> layer_transportation:z12 SELECT osm_id, geometry, - NULL AS highway, NULL AS railway, NULL AS aerialway, shipway, + NULL AS highway, NULL AS construction, NULL AS railway, NULL AS aerialway, shipway, NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made, layer, NULL::int AS level, NULL::boolean AS indoor, @@ -334,7 +334,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_shipway_linestring -> layer_transportation:z14_ SELECT osm_id, geometry, - NULL AS highway, NULL AS railway, NULL AS aerialway, shipway, + NULL AS highway, NULL AS construction, NULL AS railway, NULL AS aerialway, shipway, NULL AS public_transport, service_value(service) AS service, is_bridge, is_tunnel, is_ford, is_ramp, is_oneway, NULL as man_made, layer, NULL::int AS level, NULL::boolean AS indoor, @@ -352,7 +352,7 @@ indoor INT, bicycle TEXT, foot TEXT, horse TEXT, mtb_scale TEXT, surface TEXT) A -- etldoc: osm_highway_polygon -> layer_transportation:z14_ SELECT osm_id, geometry, - highway, NULL AS railway, NULL AS aerialway, NULL AS shipway, + highway, NULL AS construction, NULL AS railway, NULL AS aerialway, NULL AS shipway, public_transport, NULL AS service, CASE WHEN man_made IN ('bridge') THEN TRUE ELSE FALSE diff --git a/layers/transportation/mapping.yaml b/layers/transportation/mapping.yaml index 1a5c229..29c0c25 100644 --- a/layers/transportation/mapping.yaml +++ b/layers/transportation/mapping.yaml @@ -45,13 +45,13 @@ generalized_tables: # etldoc: imposm3 -> osm_highway_linestring_gen2 highway_linestring_gen2: source: highway_linestring_gen1 - sql_filter: highway IN ('motorway', 'trunk', 'primary', 'secondary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link') AND NOT is_area + sql_filter: (highway IN ('motorway', 'trunk', 'primary', 'secondary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link') OR highway = 'construction' AND construction IN ('motorway', 'trunk', 'primary', 'secondary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link')) AND NOT is_area tolerance: ZRES11 # etldoc: imposm3 -> osm_highway_linestring_gen1 highway_linestring_gen1: source: highway_linestring - sql_filter: highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') AND NOT is_area AND ST_IsValid(geometry) + sql_filter: (highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') OR highway = 'construction' AND construction IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link')) AND NOT is_area AND ST_IsValid(geometry) tolerance: ZRES12 name_field: &name @@ -166,6 +166,9 @@ tables: - name: highway key: highway type: string + - name: construction + key: construction + type: string - *ref - *network - *z_order @@ -207,18 +210,19 @@ tables: - tertiary_link - unclassified - residential - - road - living_street - - raceway - - track - - service - - path - - cycleway - - bridleway - - footway - - corridor + - road - pedestrian + - path + - footway + - cycleway - steps + - bridleway + - corridor + - service + - track + - raceway + - construction public_transport: - platform man_made: diff --git a/layers/transportation/mapping_diagram.png b/layers/transportation/mapping_diagram.png index ef040b4..9bc4946 100644 Binary files a/layers/transportation/mapping_diagram.png and b/layers/transportation/mapping_diagram.png differ diff --git a/layers/transportation/transportation.yaml b/layers/transportation/transportation.yaml index 0ede861..c080bf2 100644 --- a/layers/transportation/transportation.yaml +++ b/layers/transportation/transportation.yaml @@ -14,9 +14,10 @@ layer: fields: class: description: | - Distinguish between more and less important roads or railways. + Distinguish between more and less important roads or railways and roads under construction. Class is derived from the value of the [`highway`](http://wiki.openstreetmap.org/wiki/Key:highway), + [`construction`](http://wiki.openstreetmap.org/wiki/Key:construction), [`railway`](http://wiki.openstreetmap.org/wiki/Key:railway), [`aerialway`](http://wiki.openstreetmap.org/wiki/Key:aerialway), [`route`](http://wiki.openstreetmap.org/wiki/Key:route) tag (for @@ -33,6 +34,16 @@ layer: - track - path - raceway + - motorway_construction + - trunk_construction + - primary_construction + - secondary_construction + - tertiary_construction + - minor_construction + - service_construction + - track_construction + - path_construction + - raceway_construction - rail - transit - cable_car diff --git a/layers/transportation/update_transportation_merge.sql b/layers/transportation/update_transportation_merge.sql index 36d0931..a2c1852 100644 --- a/layers/transportation/update_transportation_merge.sql +++ b/layers/transportation/update_transportation_merge.sql @@ -22,84 +22,88 @@ CREATE INDEX IF NOT EXISTS osm_highway_linestring_highway_idx -- Improve performance of the sql below CREATE INDEX IF NOT EXISTS osm_highway_linestring_highway_partial_idx ON osm_highway_linestring(highway) - WHERE highway IN ('motorway','trunk', 'primary'); + WHERE highway IN ('motorway','trunk', 'primary', 'construction'); -- etldoc: osm_highway_linestring -> osm_transportation_merge_linestring CREATE MATERIALIZED VIEW osm_transportation_merge_linestring AS ( SELECT (ST_Dump(geometry)).geom AS geometry, NULL::bigint AS osm_id, - highway, + highway, construction, z_order FROM ( SELECT ST_LineMerge(ST_Collect(geometry)) AS geometry, - highway, + highway, construction, min(z_order) AS z_order FROM osm_highway_linestring - WHERE highway IN ('motorway','trunk', 'primary') AND ST_IsValid(geometry) - group by highway + WHERE (highway IN ('motorway','trunk', 'primary') OR highway = 'construction' AND construction IN ('motorway','trunk', 'primary')) + AND ST_IsValid(geometry) + group by highway, construction ) AS highway_union ); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_geometry_idx ON osm_transportation_merge_linestring USING gist(geometry); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_highway_partial_idx - ON osm_transportation_merge_linestring(highway) - WHERE highway IN ('motorway','trunk', 'primary'); + ON osm_transportation_merge_linestring(highway, construction) + WHERE highway IN ('motorway','trunk', 'primary', 'construction'); -- etldoc: osm_transportation_merge_linestring -> osm_transportation_merge_linestring_gen3 CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen3 AS ( - SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, highway, z_order + SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, highway, construction, z_order FROM osm_transportation_merge_linestring WHERE highway IN ('motorway','trunk', 'primary') + OR highway = 'construction' AND construction IN ('motorway','trunk', 'primary') ); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen3_geometry_idx ON osm_transportation_merge_linestring_gen3 USING gist(geometry); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen3_highway_partial_idx - ON osm_transportation_merge_linestring_gen3(highway) - WHERE highway IN ('motorway','trunk', 'primary'); + ON osm_transportation_merge_linestring_gen3(highway, construction) + WHERE highway IN ('motorway','trunk', 'primary', 'construction'); -- etldoc: osm_transportation_merge_linestring_gen3 -> osm_transportation_merge_linestring_gen4 CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen4 AS ( - SELECT ST_Simplify(geometry, 200) AS geometry, osm_id, highway, z_order + SELECT ST_Simplify(geometry, 200) AS geometry, osm_id, highway, construction, z_order FROM osm_transportation_merge_linestring_gen3 - WHERE highway IN ('motorway','trunk', 'primary') AND ST_Length(geometry) > 50 + WHERE (highway IN ('motorway','trunk', 'primary') OR highway = 'construction' AND construction IN ('motorway','trunk', 'primary')) + AND ST_Length(geometry) > 50 ); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen4_geometry_idx ON osm_transportation_merge_linestring_gen4 USING gist(geometry); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen4_highway_partial_idx - ON osm_transportation_merge_linestring_gen4(highway) - WHERE highway IN ('motorway','trunk', 'primary'); + ON osm_transportation_merge_linestring_gen4(highway, construction) + WHERE highway IN ('motorway','trunk', 'primary', 'construction'); -- etldoc: osm_transportation_merge_linestring_gen4 -> osm_transportation_merge_linestring_gen5 CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen5 AS ( - SELECT ST_Simplify(geometry, 500) AS geometry, osm_id, highway, z_order + SELECT ST_Simplify(geometry, 500) AS geometry, osm_id, highway, construction, z_order FROM osm_transportation_merge_linestring_gen4 - WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 100 + WHERE (highway IN ('motorway','trunk') OR highway = 'construction' AND construction IN ('motorway','trunk')) + AND ST_Length(geometry) > 100 ); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen5_geometry_idx ON osm_transportation_merge_linestring_gen5 USING gist(geometry); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen5_highway_partial_idx - ON osm_transportation_merge_linestring_gen5(highway) - WHERE highway IN ('motorway', 'trunk'); + ON osm_transportation_merge_linestring_gen5(highway, construction) + WHERE highway IN ('motorway','trunk', 'construction'); -- etldoc: osm_transportation_merge_linestring_gen5 -> osm_transportation_merge_linestring_gen6 CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen6 AS ( - SELECT ST_Simplify(geometry, 1000) AS geometry, osm_id, highway, z_order + SELECT ST_Simplify(geometry, 1000) AS geometry, osm_id, highway, construction, z_order FROM osm_transportation_merge_linestring_gen5 - WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 500 + WHERE (highway IN ('motorway','trunk') OR highway = 'construction' AND construction IN ('motorway','trunk')) AND ST_Length(geometry) > 500 ); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen6_geometry_idx ON osm_transportation_merge_linestring_gen6 USING gist(geometry); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen6_highway_partial_idx - ON osm_transportation_merge_linestring_gen6(highway) - WHERE highway IN ('motorway','trunk'); + ON osm_transportation_merge_linestring_gen6(highway, construction) + WHERE highway IN ('motorway','trunk', 'construction'); -- etldoc: osm_transportation_merge_linestring_gen6 -> osm_transportation_merge_linestring_gen7 CREATE MATERIALIZED VIEW osm_transportation_merge_linestring_gen7 AS ( - SELECT ST_Simplify(geometry, 2000) AS geometry, osm_id, highway, z_order + SELECT ST_Simplify(geometry, 2000) AS geometry, osm_id, highway, construction, z_order FROM osm_transportation_merge_linestring_gen6 - WHERE highway IN ('motorway') AND ST_Length(geometry) > 1000 + WHERE (highway = 'motorway' OR highway = 'construction' AND construction = 'motorway') AND ST_Length(geometry) > 1000 ); CREATE INDEX IF NOT EXISTS osm_transportation_merge_linestring_gen7_geometry_idx ON osm_transportation_merge_linestring_gen7 USING gist(geometry); diff --git a/layers/transportation_name/etl_diagram.png b/layers/transportation_name/etl_diagram.png index 3d8e46d..cd90e76 100644 Binary files a/layers/transportation_name/etl_diagram.png and b/layers/transportation_name/etl_diagram.png differ diff --git a/layers/transportation_name/layer.sql b/layers/transportation_name/layer.sql index 0cfb45a..9f108d6 100644 --- a/layers/transportation_name/layer.sql +++ b/layers/transportation_name/layer.sql @@ -19,9 +19,9 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, when length(coalesce(ref, ''))>0 then 'road' end as network, - highway_class(highway, '') AS class, + highway_class(highway, '', construction) AS class, CASE - WHEN highway IS NOT NULL AND highway_class(highway, '') = 'path' + WHEN highway IS NOT NULL AND highway_class(highway, '', construction) = 'path' THEN highway ELSE NULL END AS subclass, @@ -70,6 +70,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, "tags", ref, highway, + construction, network, z_order, layer, @@ -78,7 +79,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, FROM osm_transportation_name_linestring WHERE zoom_level = 12 AND LineLabel(zoom_level, COALESCE(NULLIF(name, ''), ref), geometry) - AND highway_class(highway, '') NOT IN ('minor', 'track', 'path') + AND highway_class(highway, '', construction) NOT IN ('minor', 'track', 'path') AND NOT highway_is_link(highway) UNION ALL @@ -92,6 +93,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, "tags", ref, highway, + construction, network, z_order, layer, @@ -100,7 +102,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, FROM osm_transportation_name_linestring WHERE zoom_level = 13 AND LineLabel(zoom_level, COALESCE(NULLIF(name, ''), ref), geometry) - AND highway_class(highway, '') NOT IN ('track', 'path') + AND highway_class(highway, '', construction) NOT IN ('track', 'path') UNION ALL -- etldoc: osm_transportation_name_linestring -> layer_transportation_name:z14_ @@ -113,6 +115,7 @@ RETURNS TABLE(osm_id bigint, geometry geometry, name text, name_en text, "tags", ref, highway, + construction, network, z_order, layer, diff --git a/layers/transportation_name/transportation_name.yaml b/layers/transportation_name/transportation_name.yaml index 263032c..746ec50 100644 --- a/layers/transportation_name/transportation_name.yaml +++ b/layers/transportation_name/transportation_name.yaml @@ -29,7 +29,7 @@ layer: - road (default) class: description: | - Distinguish between more and less important roads. + Distinguish between more and less important roads and roads under construction. values: - motorway - trunk @@ -41,6 +41,16 @@ layer: - track - path - raceway + - motorway_construction + - trunk_construction + - primary_construction + - secondary_construction + - tertiary_construction + - minor_construction + - service_construction + - track_construction + - path_construction + - raceway_construction - rail - transit subclass: diff --git a/layers/transportation_name/update_transportation_name.sql b/layers/transportation_name/update_transportation_name.sql index 82a49dc..58a521f 100644 --- a/layers/transportation_name/update_transportation_name.sql +++ b/layers/transportation_name/update_transportation_name.sql @@ -24,6 +24,7 @@ CREATE MATERIALIZED VIEW osm_transportation_name_network AS ( else hl.ref end as ref, hl.highway, + hl.construction, CASE WHEN highway IN ('footway', 'steps') THEN layer ELSE NULL::int END AS layer, @@ -53,6 +54,7 @@ CREATE MATERIALIZED VIEW osm_transportation_name_linestring AS ( tags || get_basic_names(tags, geometry) AS "tags", ref, highway, + construction, "level", layer, indoor, @@ -68,6 +70,7 @@ CREATE MATERIALIZED VIEW osm_transportation_name_linestring AS ( AS "tags", ref, highway, + construction, "level", layer, indoor, @@ -77,56 +80,56 @@ CREATE MATERIALIZED VIEW osm_transportation_name_linestring AS ( WHERE ("rank"=1 OR "rank" is null) AND (name <> '' OR ref <> '') AND NULLIF(highway, '') IS NOT NULL - group by name, name_en, name_de, ref, highway, "level", layer, indoor, network_type + group by name, name_en, name_de, ref, highway, construction, "level", layer, indoor, network_type ) AS highway_union ); CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_geometry_idx ON osm_transportation_name_linestring USING gist(geometry); CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_highway_partial_idx - ON osm_transportation_name_linestring(highway) - WHERE highway IN ('motorway','trunk'); + ON osm_transportation_name_linestring(highway, construction) + WHERE highway IN ('motorway','trunk', 'construction'); -- etldoc: osm_transportation_name_linestring -> osm_transportation_name_linestring_gen1 CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen1 AS ( - SELECT ST_Simplify(geometry, 50) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, network, z_order + SELECT ST_Simplify(geometry, 50) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, construction, network, z_order FROM osm_transportation_name_linestring - WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 8000 + WHERE (highway IN ('motorway','trunk') OR highway = 'construction' AND construction IN ('motorway','trunk')) AND ST_Length(geometry) > 8000 ); CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen1_geometry_idx ON osm_transportation_name_linestring_gen1 USING gist(geometry); CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen1_highway_partial_idx - ON osm_transportation_name_linestring_gen1(highway) - WHERE highway IN ('motorway','trunk'); + ON osm_transportation_name_linestring_gen1(highway, construction) + WHERE highway IN ('motorway','trunk', 'construction'); -- etldoc: osm_transportation_name_linestring_gen1 -> osm_transportation_name_linestring_gen2 CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen2 AS ( - SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, network, z_order + SELECT ST_Simplify(geometry, 120) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, construction, network, z_order FROM osm_transportation_name_linestring_gen1 - WHERE highway IN ('motorway','trunk') AND ST_Length(geometry) > 14000 + WHERE (highway IN ('motorway','trunk') OR highway = 'construction' AND construction IN ('motorway','trunk')) AND ST_Length(geometry) > 14000 ); CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen2_geometry_idx ON osm_transportation_name_linestring_gen2 USING gist(geometry); CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen2_highway_partial_idx - ON osm_transportation_name_linestring_gen2(highway) - WHERE highway = 'motorway'; + ON osm_transportation_name_linestring_gen2(highway, construction) + WHERE highway IN ('motorway','trunk', 'construction'); -- etldoc: osm_transportation_name_linestring_gen2 -> osm_transportation_name_linestring_gen3 CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen3 AS ( - SELECT ST_Simplify(geometry, 200) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, network, z_order + SELECT ST_Simplify(geometry, 200) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, construction, network, z_order FROM osm_transportation_name_linestring_gen2 - WHERE highway = 'motorway' AND ST_Length(geometry) > 20000 + WHERE (highway = 'motorway' OR highway = 'construction' AND construction = 'motorway') AND ST_Length(geometry) > 20000 ); CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen3_geometry_idx ON osm_transportation_name_linestring_gen3 USING gist(geometry); CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen3_highway_partial_idx - ON osm_transportation_name_linestring_gen3(highway) - WHERE highway = 'motorway'; + ON osm_transportation_name_linestring_gen3(highway, construction) + WHERE highway IN ('motorway', 'construction'); -- etldoc: osm_transportation_name_linestring_gen3 -> osm_transportation_name_linestring_gen4 CREATE MATERIALIZED VIEW osm_transportation_name_linestring_gen4 AS ( - SELECT ST_Simplify(geometry, 500) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, network, z_order + SELECT ST_Simplify(geometry, 500) AS geometry, osm_id, name, name_en, name_de, tags, ref, highway, construction, network, z_order FROM osm_transportation_name_linestring_gen3 - WHERE highway = 'motorway' AND ST_Length(geometry) > 20000 + WHERE (highway = 'motorway' OR highway = 'construction' AND construction = 'motorway') AND ST_Length(geometry) > 20000 ); CREATE INDEX IF NOT EXISTS osm_transportation_name_linestring_gen4_geometry_idx ON osm_transportation_name_linestring_gen4 USING gist(geometry); diff --git a/layers/water/etl_diagram.png b/layers/water/etl_diagram.png index 936fe0c..8fad179 100644 Binary files a/layers/water/etl_diagram.png and b/layers/water/etl_diagram.png differ diff --git a/layers/water/mapping_diagram.png b/layers/water/mapping_diagram.png index 400bbda..2dce3fc 100644 Binary files a/layers/water/mapping_diagram.png and b/layers/water/mapping_diagram.png differ diff --git a/layers/water_name/etl_diagram.png b/layers/water_name/etl_diagram.png index 95d5006..b0e4a40 100644 Binary files a/layers/water_name/etl_diagram.png and b/layers/water_name/etl_diagram.png differ diff --git a/layers/water_name/mapping_diagram.png b/layers/water_name/mapping_diagram.png index 400bbda..2dce3fc 100644 Binary files a/layers/water_name/mapping_diagram.png and b/layers/water_name/mapping_diagram.png differ diff --git a/layers/waterway/etl_diagram.png b/layers/waterway/etl_diagram.png index babd2a5..e2e229d 100644 Binary files a/layers/waterway/etl_diagram.png and b/layers/waterway/etl_diagram.png differ diff --git a/layers/waterway/mapping_diagram.png b/layers/waterway/mapping_diagram.png index a622b6f..cd6c0b3 100644 Binary files a/layers/waterway/mapping_diagram.png and b/layers/waterway/mapping_diagram.png differ diff --git a/openmaptiles.yaml b/openmaptiles.yaml index 26cb732..71356bf 100644 --- a/openmaptiles.yaml +++ b/openmaptiles.yaml @@ -27,7 +27,8 @@ tileset: minzoom: 0 pixel_scale: 256 languages: - - ar # Arabic + - am # Amharic + - ar # Arabic - az # Azerbaijani, Latin - be # Belarusian - bg # Bulgarian @@ -65,6 +66,7 @@ tileset: - kn # Kannada - ko # Korean - ko_rm # romanization of Korean, Latin + - ku # Kurdish, Latin - la # Latin, Latin - lb # Luxembourgish, Latin - lt # Lithuanian, Latin