diff --git a/project.mml b/project.mml index fffc90702c..ca775ff4f3 100644 --- a/project.mml +++ b/project.mml @@ -1,2112 +1,2567 @@ -{ - "interactivity": false, - "Layer": [ - { - "name": "world", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "world", - "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", - "Datasource": { - "type": "shape", - "file": "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "maxzoom": 9 - }, - "advanced": {} - }, - { - "name": "coast-poly", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "coast-poly", - "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", - "Datasource": { - "type": "shape", - "file": "data/land-polygons-split-3857/land_polygons.shp" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 10 - }, - "advanced": {} - }, - { - "name": "builtup", - "srs-name": "mercator", - "geometry": "polygon", - "class": "", - "id": "builtup", - "srs": "+proj=merc +datum=WGS84 +over", - "Datasource": { - "type": "shape", - "file": "data/world_boundaries/builtup_area.shp" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "maxzoom": 9, - "minzoom": 8 - }, - "advanced": {} - }, - { - "name": "necountries", - "srs-name": "WGS84", - "geometry": "linestring", - "class": "", - "id": "necountries", - "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", - "Datasource": { - "type": "shape", - "file": "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "maxzoom": 3, - "minzoom": 1 - }, - "advanced": {} - }, - { - "name": "landcover-low-zoom", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "landcover-low-zoom", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, name, way_pixels,\n COALESCE(wetland, landuse, \"natural\") AS feature\n FROM (SELECT\n way, COALESCE(name, '') AS name,\n ('landuse_' || (CASE WHEN landuse IN ('forest', 'military') THEN landuse ELSE NULL END)) AS landuse,\n ('natural_' || (CASE WHEN \"natural\" IN ('wood', 'sand', 'scree', 'shingle', 'bare_rock') THEN \"natural\" ELSE NULL END)) AS \"natural\",\n ('wetland_' || (CASE WHEN \"natural\" IN ('wetland', 'mud') THEN (CASE WHEN \"natural\" IN ('mud') THEN \"natural\" ELSE wetland END) ELSE NULL END)) AS wetland,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n FROM planet_osm_polygon\n WHERE (landuse IN ('forest', 'military')\n OR \"natural\" IN ('wood', 'wetland', 'mud', 'sand', 'scree', 'shingle', 'bare_rock'))\n AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real\n AND building IS NULL\n ORDER BY CASE WHEN layer~E'^-?\\\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END, way_area DESC\n ) AS features\n) AS landcover_low_zoom", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "maxzoom": 9, - "minzoom": 7 - }, - "advanced": {} - }, - { - "name": "landcover", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "landcover", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, name, religion, way_pixels,\n COALESCE(aeroway, amenity, wetland, power, landuse, leisure, military, \"natural\", tourism, highway, railway) AS feature\n FROM (SELECT\n way, COALESCE(name, '') AS name,\n ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway ELSE NULL END)) AS aeroway,\n ('amenity_' || (CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', \n 'hospital', 'kindergarten', 'grave_yard', 'prison', 'place_of_worship', 'clinic') \n THEN amenity ELSE NULL END)) AS amenity,\n ('landuse_' || (CASE WHEN landuse IN ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', \n 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'greenhouse_horticulture', \n 'recreation_ground', 'village_green', 'retail', 'industrial', 'railway', 'commercial', \n 'brownfield', 'landfill', 'construction') THEN landuse ELSE NULL END)) AS landuse,\n ('leisure_' || (CASE WHEN leisure IN ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', \n 'golf_course', 'miniature_golf', 'picnic_table', 'sports_centre', 'stadium', 'pitch', \n 'track', 'dog_park') THEN leisure ELSE NULL END)) AS leisure,\n ('military_' || (CASE WHEN military IN ('danger_area') THEN military ELSE NULL END)) AS military,\n ('natural_' || (CASE WHEN \"natural\" IN ('beach', 'shoal', 'heath', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub') THEN \"natural\" ELSE NULL END)) AS \"natural\",\n ('wetland_' || (CASE WHEN \"natural\" IN ('wetland', 'marsh', 'mud') THEN (CASE WHEN \"natural\" IN ('marsh', 'mud') THEN \"natural\" ELSE wetland END) ELSE NULL END)) AS wetland,\n ('power_' || (CASE WHEN power IN ('station', 'sub_station', 'substation', 'generator') THEN power ELSE NULL END)) AS power,\n ('tourism_' || (CASE WHEN tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site') THEN tourism ELSE NULL END)) AS tourism,\n ('highway_' || (CASE WHEN highway IN ('services', 'rest_area') THEN highway ELSE NULL END)) AS highway,\n ('railway_' || (CASE WHEN railway = 'station' THEN railway ELSE NULL END)) AS railway,\n CASE WHEN religion IN ('christian', 'jewish') THEN religion ELSE 'INT-generic'::text END AS religion,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n FROM planet_osm_polygon\n WHERE (landuse IS NOT NULL\n OR leisure IS NOT NULL\n OR aeroway IN ('apron', 'aerodrome')\n OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', 'hospital', 'kindergarten', \n 'grave_yard', 'place_of_worship', 'prison', 'clinic')\n OR military IN ('danger_area')\n OR \"natural\" IN ('beach', 'shoal', 'heath', 'mud', 'marsh', 'wetland', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub')\n OR power IN ('station', 'sub_station', 'substation', 'generator')\n OR tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site')\n OR highway IN ('services', 'rest_area')\n OR railway = 'station')\n AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real\n ORDER BY CASE WHEN layer~E'^-?\\\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END, way_area DESC\n ) AS landcover\n) AS features", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 10 - }, - "advanced": {} - }, - { - "name": "landcover-line", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "landcover-line", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way\n FROM planet_osm_line\n WHERE man_made = 'cutline'\n) AS landcover_line", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 14 - }, - "advanced": {} - }, - { - "name": "water-lines-casing", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "water-lines-casing", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, waterway, intermittent,\n CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel\n FROM planet_osm_line\n WHERE waterway IN ('stream', 'drain', 'ditch')\n) AS water_lines_casing", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "water-lines-low-zoom", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "water-lines-low-zoom", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n waterway,\n intermittent\n FROM planet_osm_line\n WHERE waterway = 'river'\n) AS water_lines_low_zoom", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "maxzoom": 11, - "minzoom": 8 - }, - "advanced": {} - }, - { - "name": "icesheet-poly", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "icesheet-poly", - "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", - "Datasource": { - "type": "shape", - "file": "data/antarctica-icesheet-polygons-3857/icesheet_polygons.shp" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 4 - }, - "advanced": {} - }, - { - "name": "water-areas", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "water-areas", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n \"natural\",\n waterway,\n landuse,\n name,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir', 'basin')\n OR \"natural\" IN ('water', 'glacier'))\n AND building IS NULL\n AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real\n ORDER BY z_order, way_area DESC\n) AS water_areas", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 4 - }, - "advanced": {} - }, - { - "name": "landcover-area-symbols", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "landcover-area-symbols", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, surface, \n COALESCE(CASE WHEN landuse = 'forest' THEN 'wood' ELSE NULL END, \"natural\") AS \"natural\",\n CASE WHEN \"natural\" IN ('marsh', 'mud') \n THEN \"natural\" \n ELSE CASE WHEN (\"natural\" = 'wetland' AND wetland IS NULL) \n THEN 'wetland' \n ELSE CASE WHEN (\"natural\" = 'wetland')\n THEN wetland\n ELSE NULL\n END \n END\n END AS int_wetland\n FROM planet_osm_polygon\n WHERE (\"natural\" IN ('marsh', 'mud', 'wetland', 'wood', 'beach', 'shoal', 'reef') OR landuse = 'forest')\n AND building IS NULL\n AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real\n ORDER BY z_order, way_area DESC\n) AS landcover_area_symbols", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 10 - }, - "advanced": {} - }, - { - "name": "icesheet-outlines", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "icesheet-outlines", - "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", - "Datasource": { - "type": "shape", - "file": "data/antarctica-icesheet-outlines-3857/icesheet_outlines.shp" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 4 - }, - "advanced": {} - }, - { - "name": "water-lines", - "srs-name": "900913", - "geometry": "linestring", - "class": "water-lines", - "id": "water-lines", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, waterway, name, intermittent,\n CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel,\n 'no' AS bridge\n FROM planet_osm_line\n WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')\n AND (bridge IS NULL OR bridge NOT IN ('yes', 'aqueduct'))\n ORDER BY z_order\n) AS water_lines", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 12 - }, - "advanced": {} - }, - { - "name": "water-barriers-line", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "water-barriers-line", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n waterway,\n name\n FROM planet_osm_line\n WHERE waterway IN ('dam', 'weir', 'lock_gate')\n) AS water_barriers_line", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "water-barriers-poly", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "water-barriers-poly", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n waterway,\n name\n FROM planet_osm_polygon\n WHERE waterway IN ('dam', 'weir', 'lock_gate')\n) AS water_barriers_poly", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "marinas-area", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "marinas-area", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way\n FROM planet_osm_polygon\n WHERE leisure = 'marina'\n) AS marinas_area", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 14 - }, - "advanced": {} - }, - { - "name": "piers-poly", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "piers-poly", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, man_made\n FROM planet_osm_polygon\n WHERE man_made IN ('pier', 'breakwater', 'groyne')\n) AS piers_poly", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 12 - }, - "advanced": {} - }, - { - "name": "piers-line", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "piers-line", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, man_made\n FROM planet_osm_line\n WHERE man_made IN ('pier', 'breakwater', 'groyne')\n) AS piers_line", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 12 - }, - "advanced": {} - }, - { - "name": "water-barriers-point", - "srs-name": "900913", - "geometry": "point", - "class": "", - "id": "water-barriers-point", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, waterway\n FROM planet_osm_point\n WHERE waterway IN ('dam', 'weir', 'lock_gate')\n) AS water_barriers_points", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 17 - }, - "advanced": {} - }, - { - "name": "bridge", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "bridge", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n man_made,\n name\n FROM planet_osm_polygon\n WHERE man_made = 'bridge'\n) AS bridge", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 12 - }, - "advanced": {} - }, - { - "name": "buildings", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "buildings", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n building\n FROM planet_osm_polygon\n WHERE building IS NOT NULL\n AND building != 'no'\n AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real\n ORDER BY z_order, way_area DESC\n) AS buildings", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "buildings-major", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "buildings-major", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n building,\n amenity,\n aeroway\n FROM planet_osm_polygon\n WHERE building IS NOT NULL\n AND building != 'no'\n AND (aeroway = 'terminal' OR amenity = 'place_of_worship')\n AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real\n ORDER BY z_order, way_area DESC)\nAS buildings_major", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "tunnels", - "srs-name": "900913", - "geometry": "linestring", - "class": "tunnels-fill tunnels-casing access", - "id": "tunnels", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,\n horse,\n foot,\n bicycle,\n tracktype,\n int_surface,\n access,\n construction,\n service,\n link,\n layernotnull\n FROM ( -- subselect that contains both roads and rail/aero\n SELECT\n way,\n ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on\n horse,\n foot,\n bicycle,\n tracktype,\n CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',\n 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'\n WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',\n 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'\n ELSE NULL\n END AS int_surface,\n CASE WHEN access IN ('destination') THEN 'destination'::text\n WHEN access IN ('no', 'private') THEN 'no'::text\n ELSE NULL\n END AS access,\n construction,\n CASE\n WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text\n ELSE 'INT-normal'::text\n END AS service,\n CASE\n WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'\n ELSE 'no'\n END AS link,\n CASE WHEN layer~E'^-?\\\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull\n FROM planet_osm_line\n WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes')\n AND highway IS NOT NULL -- end of road select\n UNION ALL\n SELECT\n way,\n COALESCE(\n ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text \n WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' \n WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)),\n ('aeroway_' || aeroway)\n ) AS feature,\n horse,\n foot,\n bicycle,\n tracktype,\n 'null',\n CASE\n WHEN access IN ('destination') THEN 'destination'::text\n WHEN access IN ('no', 'private') THEN 'no'::text\n ELSE NULL\n END AS access,\n construction,\n CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,\n 'no' AS link,\n CASE WHEN layer~E'^-?\\\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull\n FROM planet_osm_line\n WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes')\n AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select\n ) AS features\n JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.\n ('railway_rail', 440),\n ('railway_INT-preserved-ssy', 430),\n ('railway_INT-spur-siding-yard', 430),\n ('railway_subway', 420),\n ('railway_narrow_gauge', 420),\n ('railway_light_rail', 420),\n ('railway_preserved', 420),\n ('railway_funicular', 420),\n ('railway_monorail', 420),\n ('railway_miniature', 420),\n ('railway_turntable', 420),\n ('railway_tram', 410),\n ('railway_tram-service', 405),\n ('railway_disused', 400),\n ('railway_construction', 400),\n ('highway_motorway', 380),\n ('highway_trunk', 370),\n ('highway_primary', 360),\n ('highway_secondary', 350),\n ('highway_tertiary', 340),\n ('highway_residential', 330),\n ('highway_unclassified', 330),\n ('highway_road', 330),\n ('highway_living_street', 320),\n ('highway_pedestrian', 310),\n ('highway_raceway', 300),\n ('highway_motorway_link', 240),\n ('highway_trunk_link', 230),\n ('highway_primary_link', 220),\n ('highway_secondary_link', 210),\n ('highway_tertiary_link', 200),\n ('highway_service', 150),\n ('highway_track', 110),\n ('highway_path', 100),\n ('highway_footway', 100),\n ('highway_bridleway', 100),\n ('highway_cycleway', 100),\n ('highway_steps', 100),\n ('highway_platform', 90),\n ('railway_platform', 90),\n ('aeroway_runway', 60),\n ('aeroway_taxiway', 50),\n ('highway_construction', 10)\n ) AS ordertable (feature, prio)\n USING (feature)\n ORDER BY\n layernotnull,\n prio,\n CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,\n CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END\n) AS tunnels", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "group-by": "layernotnull", - "minzoom": 9 - }, - "advanced": {} - }, - { - "name": "landuse-overlay", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "landuse-overlay", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n landuse,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n FROM planet_osm_polygon\n WHERE landuse = 'military'\n AND building IS NULL\n) AS landuse_overlay", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 7 - }, - "advanced": {} - }, - { - "name": "line-barriers", - "srs-name": "900913", - "geometry": "linestring", - "class": "barriers", - "id": "line-barriers", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, COALESCE(historic, barrier) AS feature\n FROM (SELECT way,\n ('barrier_' || (CASE WHEN barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail',\n 'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall') THEN barrier ELSE NULL END)) AS barrier,\n ('historic_' || (CASE WHEN historic = 'citywalls' THEN historic ELSE NULL END)) AS historic\n FROM planet_osm_line\n WHERE barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail',\n 'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall')\n OR historic = 'city_wall'\n AND (waterway IS NULL OR waterway NOT IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi'))\n ) AS features\n) AS line_barriers", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 14 - }, - "advanced": {} - }, - { - "name": "cliffs", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "cliffs", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, \"natural\", man_made\n FROM planet_osm_line\n WHERE \"natural\" = 'cliff' OR man_made = 'embankment'\n) AS cliffs", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "area-barriers", - "srs-name": "900913", - "geometry": "polygon", - "class": "barriers", - "id": "area-barriers", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, barrier AS feature\n FROM (SELECT way,\n ('barrier_' || barrier) AS barrier\n FROM planet_osm_polygon\n WHERE barrier IS NOT NULL\n ) AS features\n) AS area_barriers", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 16 - }, - "advanced": {} - }, - { - "name": "ferry-routes", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "ferry-routes", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way\n FROM planet_osm_line\n WHERE route = 'ferry'\n) AS ferry_routes", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 7 - }, - "advanced": {} - }, - { - "name": "turning-circle-casing", - "srs-name": "900913", - "geometry": "point", - "class": "", - "id": "turning-circle-casing", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT DISTINCT ON (p.way)\n p.way AS way, l.highway AS int_tc_type,\n CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway')\n THEN 'INT-minor'::text\n ELSE 'INT-normal'::text\n END AS int_tc_service\n FROM planet_osm_point p\n JOIN planet_osm_line l ON ST_DWithin(p.way, l.way, 0.1) -- Assumes Mercator\n JOIN (VALUES\n ('tertiary', 1),\n ('unclassified', 2),\n ('residential', 3),\n ('living_street', 4),\n ('service', 5)\n ) AS v (highway, prio)\n ON v.highway=l.highway\n WHERE p.highway = 'turning_circle'\n OR p.highway = 'turning_loop'\n ORDER BY p.way, v.prio\n) AS turning_circle_casing", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 15 - }, - "advanced": {} - }, - { - "name": "highway-area-casing", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "highway-area-casing", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n COALESCE((\n 'highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'track', 'path', 'platform') THEN highway ELSE NULL END)),\n ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END))\n ) AS feature\n FROM planet_osm_polygon\n WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform')\n OR railway IN ('platform')\n ORDER BY z_order, way_area DESC\n) AS highway_area_casing", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 14 - }, - "advanced": {} - }, - { - "name": "roads-casing", - "srs-name": "900913", - "geometry": "linestring", - "class": "roads-casing", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,\n horse,\n foot,\n bicycle,\n tracktype,\n int_surface,\n access,\n construction,\n service,\n link,\n layernotnull\n FROM ( -- subselect that contains both roads and rail/aero\n SELECT\n way,\n ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on\n horse,\n foot,\n bicycle,\n tracktype,\n CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',\n 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'\n WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',\n 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'\n ELSE NULL\n END AS int_surface,\n CASE WHEN access IN ('destination') THEN 'destination'::text\n WHEN access IN ('no', 'private') THEN 'no'::text\n ELSE NULL\n END AS access,\n construction,\n CASE\n WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text\n ELSE 'INT-normal'::text\n END AS service,\n CASE\n WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'\n ELSE 'no'\n END AS link,\n CASE WHEN layer~E'^-?\\\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull\n FROM planet_osm_line\n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))\n AND (covered IS NULL OR NOT covered = 'yes')\n AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))\n AND highway IS NOT NULL -- end of road select\n UNION ALL\n SELECT\n way,\n COALESCE(\n ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text \n WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' \n WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)),\n ('aeroway_' || aeroway)\n ) AS feature,\n horse,\n foot,\n bicycle,\n tracktype,\n 'null',\n CASE\n WHEN access IN ('destination') THEN 'destination'::text\n WHEN access IN ('no', 'private') THEN 'no'::text\n ELSE NULL\n END AS access,\n construction,\n CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,\n 'no' AS link,\n CASE WHEN layer~E'^-?\\\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull\n FROM planet_osm_line\n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))\n AND (covered IS NULL OR NOT covered = 'yes')\n AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))\n AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select\n ) AS features\n JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.\n ('railway_rail', 440),\n ('railway_INT-preserved-ssy', 430),\n ('railway_INT-spur-siding-yard', 430),\n ('railway_subway', 420),\n ('railway_narrow_gauge', 420),\n ('railway_light_rail', 420),\n ('railway_preserved', 420),\n ('railway_funicular', 420),\n ('railway_monorail', 420),\n ('railway_miniature', 420),\n ('railway_turntable', 420),\n ('railway_tram', 410),\n ('railway_tram-service', 405),\n ('railway_disused', 400),\n ('railway_construction', 400),\n ('highway_motorway', 380),\n ('highway_trunk', 370),\n ('highway_primary', 360),\n ('highway_secondary', 350),\n ('highway_tertiary', 340),\n ('highway_residential', 330),\n ('highway_unclassified', 330),\n ('highway_road', 330),\n ('highway_living_street', 320),\n ('highway_pedestrian', 310),\n ('highway_raceway', 300),\n ('highway_motorway_link', 240),\n ('highway_trunk_link', 230),\n ('highway_primary_link', 220),\n ('highway_secondary_link', 210),\n ('highway_tertiary_link', 200),\n ('highway_service', 150),\n ('highway_track', 110),\n ('highway_path', 100),\n ('highway_footway', 100),\n ('highway_bridleway', 100),\n ('highway_cycleway', 100),\n ('highway_steps', 100),\n ('highway_platform', 90),\n ('railway_platform', 90),\n ('aeroway_runway', 60),\n ('aeroway_taxiway', 50),\n ('highway_construction', 10)\n ) AS ordertable (feature, prio)\n USING (feature)\n ORDER BY\n layernotnull,\n prio,\n CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,\n CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END\n) AS roads_casing", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "id": "roads-casing", - "properties": { - "minzoom": 9 - }, - "advanced": {} - }, - { - "name": "highway-area-fill", - "srs-name": "900913", - "class": "", - "id": "highway-area-fill", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n COALESCE(\n ('highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', \n 'track', 'path', 'platform', 'services') THEN highway ELSE NULL END)),\n ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END)),\n (('aeroway_' || CASE WHEN aeroway IN ('runway', 'taxiway', 'helipad') THEN aeroway ELSE NULL END))\n ) AS feature\n FROM planet_osm_polygon\n WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'living_street', 'track', 'path', 'platform', 'services')\n OR railway IN ('platform')\n OR aeroway IN ('runway', 'taxiway', 'helipad')\n ORDER BY z_order, way_area desc\n) AS highway_area_fill", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 14 - }, - "advanced": {} - }, - { - "name": "roads-fill", - "srs-name": "900913", - "geometry": "linestring", - "class": "roads-fill access", - "id": "roads-fill", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,\n horse,\n foot,\n bicycle,\n tracktype,\n int_surface,\n access,\n construction,\n service,\n link,\n layernotnull\n FROM ( -- begin \"features\" subselect that contains both roads and rail/aero\n SELECT\n way,\n ('highway_' || highway) AS feature, -- only motorway to tertiary links are accepted later on\n horse,\n foot,\n bicycle,\n tracktype,\n CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',\n 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'\n WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',\n 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'\n ELSE NULL\n END AS int_surface,\n CASE WHEN access IN ('destination') THEN 'destination'::text\n WHEN access IN ('no', 'private') THEN 'no'::text\n ELSE NULL\n END AS access,\n construction,\n CASE\n WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text\n ELSE 'INT-normal'::text\n END AS service,\n CASE\n WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'\n ELSE 'no'\n END AS link,\n CASE WHEN layer~E'^-?\\\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull\n FROM planet_osm_line\n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))\n AND (covered IS NULL OR NOT covered = 'yes')\n AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))\n AND highway IS NOT NULL -- end of road select\n UNION ALL\n SELECT\n way,\n COALESCE(\n ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text \n WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' \n WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)),\n ('aeroway_' || aeroway)\n ) AS feature,\n horse,\n foot,\n bicycle,\n tracktype,\n 'null' AS surface, -- Should be a SQL NULL?\n CASE\n WHEN access IN ('destination') THEN 'destination'::text\n WHEN access IN ('no', 'private') THEN 'no'::text\n ELSE NULL\n END AS access,\n construction,\n CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,\n 'no' AS link,\n CASE WHEN layer~E'^-?\\\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull\n FROM planet_osm_line\n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))\n AND (covered IS NULL OR NOT covered = 'yes')\n AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))\n AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select\n ) AS features\n JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.\n ('railway_rail', 440),\n ('railway_INT-preserved-ssy', 430),\n ('railway_INT-spur-siding-yard', 430),\n ('railway_subway', 420),\n ('railway_narrow_gauge', 420),\n ('railway_light_rail', 420),\n ('railway_preserved', 420),\n ('railway_funicular', 420),\n ('railway_monorail', 420),\n ('railway_miniature', 420),\n ('railway_turntable', 420),\n ('railway_tram', 410),\n ('railway_tram-service', 405),\n ('railway_disused', 400),\n ('railway_construction', 400),\n ('highway_motorway', 380),\n ('highway_trunk', 370),\n ('highway_primary', 360),\n ('highway_secondary', 350),\n ('highway_tertiary', 340),\n ('highway_residential', 330),\n ('highway_unclassified', 330),\n ('highway_road', 330),\n ('highway_living_street', 320),\n ('highway_pedestrian', 310),\n ('highway_raceway', 300),\n ('highway_motorway_link', 240),\n ('highway_trunk_link', 230),\n ('highway_primary_link', 220),\n ('highway_secondary_link', 210),\n ('highway_tertiary_link', 200),\n ('highway_service', 150),\n ('highway_track', 110),\n ('highway_path', 100),\n ('highway_footway', 100),\n ('highway_bridleway', 100),\n ('highway_cycleway', 100),\n ('highway_steps', 100),\n ('highway_platform', 90),\n ('railway_platform', 90),\n ('aeroway_runway', 60),\n ('aeroway_taxiway', 50),\n ('highway_construction', 10)\n ) AS ordertable (feature, prio)\n USING (feature)\n ORDER BY\n layernotnull,\n prio,\n CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,\n CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END\n) AS roads_fill", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 10 - }, - "advanced": {} - }, - { - "name": "turning-circle-fill", - "srs-name": "900913", - "geometry": "point", - "class": "", - "id": "turning-circle-fill", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n DISTINCT on (p.way)\n p.way AS way, l.highway AS int_tc_type,\n CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text\n ELSE 'INT-normal'::text END AS int_tc_service\n FROM planet_osm_point p\n JOIN planet_osm_line l\n ON ST_DWithin(p.way, l.way, 0.1)\n JOIN (VALUES\n ('tertiary', 1),\n ('unclassified', 2),\n ('residential', 3),\n ('living_street', 4),\n ('service', 5),\n ('track', 6)\n ) AS v (highway, prio)\n ON v.highway=l.highway\n WHERE p.highway = 'turning_circle' OR p.highway = 'turning_loop'\n ORDER BY p.way, v.prio\n) AS turning_circle_fill", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 15 - }, - "advanced": {} - }, - { - "name": "aerialways", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "aerialways", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n aerialway\n FROM planet_osm_line\n WHERE aerialway IS NOT NULL\n) AS aerialways", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 12 - }, - "advanced": {} - }, - { - "name": "roads-low-zoom", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "roads-low-zoom", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n COALESCE(\n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway end)),\n ('railway_' || (CASE WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' \n WHEN railway IN ('rail', 'tram', 'light_rail', 'funicular', 'narrow_gauge') THEN railway ELSE NULL END))\n ) AS feature,\n CASE WHEN tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes' THEN 'yes' ELSE 'no' END AS int_tunnel,\n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' ELSE 'no' END AS link,\n CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',\n 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'\n WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',\n 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'\n ELSE NULL\n END AS int_surface\n FROM planet_osm_roads\n WHERE highway IS NOT NULL\n OR (railway IS NOT NULL AND railway != 'preserved'\n AND (service IS NULL OR service NOT IN ('spur', 'siding', 'yard')))\n ORDER BY z_order\n) AS roads_low_zoom", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "maxzoom": 9, - "minzoom": 5 - }, - "advanced": {} - }, - { - "name": "waterway-bridges", - "srs-name": "900913", - "geometry": "linestring", - "class": "water-lines", - "id": "waterway-bridges", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n waterway,\n name,\n intermittent,\n CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel,\n 'yes' AS bridge\n FROM planet_osm_line\n WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')\n AND bridge IN ('yes', 'aqueduct')\n ORDER BY z_order\n) AS waterway_bridges", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 15 - }, - "advanced": {} - }, - { - "name": "bridges", - "srs-name": "900913", - "geometry": "linestring", - "class": "bridges-fill bridges-casing access", - "id": "bridges", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,\n horse,\n foot,\n bicycle,\n tracktype,\n int_surface,\n access,\n construction,\n service,\n link,\n layernotnull\n FROM ( -- subselect that contains both roads and rail/aero\n SELECT\n way,\n ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on\n horse,\n foot,\n bicycle,\n tracktype,\n CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',\n 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'\n WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',\n 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'\n ELSE NULL\n END AS int_surface,\n CASE WHEN access IN ('destination') THEN 'destination'::text\n WHEN access IN ('no', 'private') THEN 'no'::text\n ELSE NULL\n END AS access,\n construction,\n CASE\n WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text\n ELSE 'INT-normal'::text\n END AS service,\n CASE\n WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'\n ELSE 'no'\n END AS link,\n CASE WHEN layer~E'^-?\\\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull\n FROM planet_osm_line\n WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')\n AND highway IS NOT NULL -- end of road select\n UNION ALL\n SELECT\n way,\n COALESCE(\n ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text \n WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' \n WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)),\n ('aeroway_' || aeroway)\n ) AS feature,\n horse,\n foot,\n bicycle,\n tracktype,\n 'null',\n CASE\n WHEN access IN ('destination') THEN 'destination'::text\n WHEN access IN ('no', 'private') THEN 'no'::text\n ELSE NULL\n END AS access,\n construction,\n CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,\n 'no' AS link,\n CASE WHEN layer~E'^-?\\\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull\n FROM planet_osm_line\n WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')\n AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select\n ) AS features\n JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.\n ('railway_rail', 440),\n ('railway_INT-preserved-ssy', 430),\n ('railway_INT-spur-siding-yard', 430),\n ('railway_subway', 420),\n ('railway_narrow_gauge', 420),\n ('railway_light_rail', 420),\n ('railway_preserved', 420),\n ('railway_funicular', 420),\n ('railway_monorail', 420),\n ('railway_miniature', 420),\n ('railway_turntable', 420),\n ('railway_tram', 410),\n ('railway_tram-service', 405),\n ('railway_disused', 400),\n ('railway_construction', 400),\n ('highway_motorway', 380),\n ('highway_trunk', 370),\n ('highway_primary', 360),\n ('highway_secondary', 350),\n ('highway_tertiary', 340),\n ('highway_residential', 330),\n ('highway_unclassified', 330),\n ('highway_road', 330),\n ('highway_living_street', 320),\n ('highway_pedestrian', 310),\n ('highway_raceway', 300),\n ('highway_motorway_link', 240),\n ('highway_trunk_link', 230),\n ('highway_primary_link', 220),\n ('highway_secondary_link', 210),\n ('highway_tertiary_link', 200),\n ('highway_service', 150),\n ('highway_track', 110),\n ('highway_path', 100),\n ('highway_footway', 100),\n ('highway_bridleway', 100),\n ('highway_cycleway', 100),\n ('highway_steps', 100),\n ('highway_platform', 90),\n ('railway_platform', 90),\n ('aeroway_runway', 60),\n ('aeroway_taxiway', 50),\n ('highway_construction', 10)\n ) AS ordertable (feature, prio)\n USING (feature)\n ORDER BY\n layernotnull,\n prio,\n CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,\n CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END\n) AS bridges", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "group-by": "layernotnull", - "minzoom": 9 - }, - "advanced": {} - }, - { - "name": "guideways", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "guideways", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way\n FROM planet_osm_line\n WHERE highway = 'bus_guideway'\n) AS guideways", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "admin-low-zoom", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n admin_level\n FROM planet_osm_roads\n WHERE boundary = 'administrative'\n AND admin_level IN ('0', '1', '2', '3', '4')\n AND osm_id < 0\n ORDER BY admin_level DESC\n) AS admin_low_zoom", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "id": "admin-low-zoom", - "properties": { - "maxzoom": 10, - "minzoom": 4 - }, - "advanced": {} - }, - { - "name": "admin-mid-zoom", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "admin-mid-zoom", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n admin_level\n FROM planet_osm_roads\n WHERE boundary = 'administrative'\n AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8')\n AND osm_id < 0\n ORDER BY admin_level DESC\n) AS admin_mid_zoom", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "maxzoom": 12, - "minzoom": 11 - }, - "advanced": {} - }, - { - "name": "admin-high-zoom", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "admin-high-zoom", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n admin_level\n FROM planet_osm_roads\n WHERE boundary = 'administrative'\n AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10')\n AND osm_id < 0\n ORDER BY admin_level::integer DESC -- With 10 as a valid value, we need to do a numeric ordering, not a text ordering\n) AS admin_high_zoom", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "power-minorline", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "power-minorline", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way\n FROM planet_osm_line\n WHERE power = 'minor_line'\n) AS power_minorline", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 16 - }, - "advanced": {} - }, - { - "name": "power-line", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "power-line", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way\n FROM planet_osm_line\n WHERE power = 'line'\n) AS power_line", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 14 - }, - "advanced": {} - }, - { - "name": "nature-reserve-boundaries", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "nature-reserve-boundaries", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n name,\n boundary,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n FROM planet_osm_polygon\n WHERE (boundary = 'national_park' OR leisure = 'nature_reserve')\n AND building IS NULL\n AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real\n) AS national_park_boundaries", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 7 - }, - "advanced": {} - }, - { - "name": "tourism-boundary", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "tourism-boundary", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n name,\n tourism\n FROM planet_osm_polygon\n WHERE tourism = 'theme_park'\n OR tourism = 'zoo'\n) AS tourism_boundary", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 10 - }, - "advanced": {} - }, - { - "name": "trees", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "trees", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, \"natural\"\n FROM planet_osm_point\n WHERE \"natural\" = 'tree'\nUNION ALL\nSELECT\n way, \"natural\"\n FROM planet_osm_line\n WHERE \"natural\" = 'tree_row'\n) AS trees", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 16 - }, - "advanced": {} - }, - { - "name": "country-names", - "srs-name": "900913", - "geometry": "point", - "class": "country", - "id": "country-names", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n name\n FROM planet_osm_polygon\n WHERE boundary = 'administrative'\n AND admin_level = '2'\n AND name IS NOT NULL\n AND way_area > 100*!pixel_width!::real*!pixel_height!::real\n ORDER BY way_area DESC\n) AS country_names", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 2 - } - }, - { - "name": "capital-names", - "srs-name": "900913", - "geometry": "point", - "class": "", - "id": "capital-names", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n name,\n CASE\n WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER ELSE 0\n END as population,\n round(random()) AS dir\n FROM planet_osm_point\n WHERE capital = 'yes'\n AND admin_level = '2'\n ORDER BY population DESC\n) AS capital_names", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "maxzoom": 15, - "minzoom": 3 - }, - "advanced": {} - }, - { - "name": "state-names", - "srs-name": "900913", - "geometry": "point", - "class": "state", - "id": "state-names", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n name,\n ref\n FROM planet_osm_polygon\n WHERE boundary = 'administrative'\n AND admin_level = '4'\n AND name IS NOT NULL\n AND way_area > 100*!pixel_width!::real*!pixel_height!::real\n ORDER BY way_area DESC\n) AS state_names", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 4 - }, - "advanced": {} - }, - { - "name": "placenames-medium", - "srs-name": "900913", - "geometry": "point", - "class": "", - "id": "placenames-medium", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n name,\n score,\n CASE\n WHEN (place = 'city') THEN 1\n ELSE 2\n END as category,\n round(random()) AS dir\n FROM \n (SELECT\n way,\n place,\n name,\n (\n (CASE\n WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER\n WHEN (place = 'city') THEN 100000\n WHEN (place = 'town') THEN 1000\n ELSE 1\n END)\n *\n (CASE\n WHEN (capital = '4' OR (capital = 'yes' AND admin_level = '4')) THEN 2\n ELSE 1\n END)\n ) AS score\n FROM planet_osm_point\n WHERE place IN ('city', 'town')\n AND name IS NOT NULL\n AND capital IS NULL OR capital != 'yes' OR (capital = 'yes' AND admin_level != '2')\n ) as p\n ORDER BY score DESC, length(name) DESC, name\n) AS placenames_medium", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "maxzoom": 15, - "minzoom": 4 - }, - "advanced": {} - }, - { - "name": "placenames-small", - "srs-name": "900913", - "geometry": "point", - "class": "", - "id": "placenames-small", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n place,\n name\n FROM planet_osm_point\n WHERE place IN ('suburb', 'village', 'hamlet', 'neighbourhood', 'locality', 'isolated_dwelling', 'farm')\n AND name IS NOT NULL\n ORDER BY CASE\n WHEN place = 'suburb' THEN 3\n WHEN place = 'village' THEN 4\n WHEN place = 'hamlet' THEN 5\n WHEN place = 'neighbourhood' THEN 6\n WHEN place = 'locality' THEN 7\n WHEN place = 'isolated_dwelling' THEN 8\n WHEN place = 'farm' THEN 9\n END ASC, length(name) DESC, name\n) AS placenames_small", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 12 - }, - "advanced": {} - }, - { - "name": "stations", - "srs-name": "900913", - "geometry": "point", - "class": "stations", - "id": "stations", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n name,\n railway,\n aerialway,\n CASE railway \n WHEN 'station' THEN 1 \n WHEN 'subway_entrance' THEN 3\n ELSE 2\n END\n AS prio\n FROM planet_osm_point\n WHERE railway IN ('station', 'halt', 'tram_stop', 'subway_entrance')\n OR aerialway = 'station'\n ORDER BY prio\n) AS stations", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 12 - }, - "advanced": {} - }, - { - "name": "stations-poly", - "srs-name": "900913", - "geometry": "polygon", - "class": "stations", - "id": "stations-poly", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n name,\n railway,\n aerialway\nFROM planet_osm_polygon\nWHERE railway IN ('station', 'halt', 'tram_stop')\n OR aerialway = 'station'\n) AS stations_poly", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 12 - }, - "advanced": {} - }, - { - "name": "amenity-points-poly", - "srs-name": "900913", - "geometry": "polygon", - "class": "points", - "id": "amenity-points-poly", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n COALESCE(\n 'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', \n 'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,\n 'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', \n 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', 'fire_station', 'fountain',\n 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 'townhall', 'parking', \n 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', \n 'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', \n 'fast_food', 'telephone', 'emergency_phone', 'taxi', 'theatre', 'toilets', 'drinking_water', \n 'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility',\n 'charging_station') THEN amenity ELSE NULL END,\n 'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', \n 'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', \n 'garden_centre', 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', \n 'photo', 'photo_studio', 'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', \n 'mobile_phone', 'motorcycle', 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', \n 'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', \n 'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', \n 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop \n WHEN shop IN ('accessories', 'antiques', 'appliance', 'baby_goods', 'bathroom_furnishing', \n 'bed', 'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', \n 'carpet', 'charity', 'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', \n 'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', \n 'fabric', 'fishing', 'flooring', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', \n 'gallery', 'games', 'gas', 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', \n 'herbalist', 'hobby', 'household', 'houseware', 'hunting', 'interior_decoration', 'kitchen', \n 'leather', 'lighting', 'locksmith', 'lottery', 'market', 'massage', 'medical', 'medical_supply', 'money_lender', \n 'motorcycle_repair', 'music', 'office_supplies', 'organic', 'paint', 'pastry', 'pawnbroker', \n 'phone', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', \n 'scuba_diving', 'second_hand', 'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir', \n 'tailor', 'tanning', 'tattoo', 'ticket', 'tiles', 'trade', 'tyres', 'vacuum_cleaner', 'video', \n 'video_games', 'watches', 'wholesale', 'yes') THEN 'other' ELSE NULL END,\n 'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table') THEN leisure ELSE NULL END,\n 'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') THEN man_made ELSE NULL END,\n 'natural_' || CASE WHEN \"natural\" IN ('spring') THEN \"natural\" ELSE NULL END,\n 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END,\n 'highway_'|| CASE WHEN highway IN ('bus_stop', 'elevator', 'traffic_signals') THEN highway ELSE NULL END,\n 'power_' || CASE WHEN power IN ('generator') THEN power ELSE NULL END,\n 'tourism_' || CASE WHEN tourism IN ('viewpoint') THEN tourism ELSE NULL END\n ) AS feature,\n access,\n religion,\n denomination,\n \"generator:source\",\n power_source,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n FROM planet_osm_polygon\n -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering\n WHERE aeroway IN ('helipad', 'aerodrome')\n OR tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', \n 'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site')\n OR amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', \n 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre',\n 'fire_station', 'fountain', 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', \n 'townhall', 'parking', 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', \n 'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', \n 'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', 'taxi', \n 'theatre', 'toilets', 'drinking_water', 'prison', 'hunting_stand', 'nightclub', 'veterinary',\n 'social_facility', 'charging_station')\n OR shop IS NOT NULL -- skip checking a huge list and use a null check\n OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table')\n OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk')\n OR \"natural\" IN ('spring')\n OR historic IN ('memorial', 'monument', 'archaeological_site')\n OR highway IN ('bus_stop', 'elevator', 'traffic_signals')\n OR (power = 'generator' AND (\"generator:source\" = 'wind' OR power_source = 'wind'))\n ORDER BY way_area desc\n) AS amenity_points_poly", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 10 - }, - "advanced": {} - }, - { - "name": "amenity-points", - "srs-name": "900913", - "geometry": "point", - "class": "points", - "id": "amenity-points", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n COALESCE(\n 'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', \n 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,\n 'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', \n 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', 'fire_station', 'fountain',\n 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 'townhall', 'parking', \n 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', \n 'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', \n 'fast_food', 'telephone', 'emergency_phone', 'taxi', 'theatre', 'toilets', 'drinking_water', \n 'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility',\n 'charging_station') THEN amenity ELSE NULL END,\n 'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', \n 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', \n 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', \n 'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', \n 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', \n 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', \n 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop \n WHEN shop IN ('accessories', 'antiques', 'appliance', 'baby_goods', 'bathroom_furnishing', 'bed', \n 'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', 'carpet', 'charity', \n 'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', \n 'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 'fabric', 'fishing', \n 'flooring', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'gallery', 'games', 'gas', \n 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hobby', 'household', \n 'houseware', 'hunting', 'interior_decoration', 'kitchen', 'leather', 'lighting', 'locksmith', 'lottery', \n 'market', 'massage', 'medical', 'medical_supply', 'money_lender', 'motorcycle_repair', 'music', 'office_supplies', \n 'organic', 'paint', 'pastry', 'pawnbroker', 'phone', 'pottery', 'printing', 'radiotechnics', \n 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'second_hand', 'sewing', 'shoe_repair', 'shopping_centre', \n 'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo', 'ticket', 'tiles', 'trade', 'tyres', \n 'vacuum_cleaner', 'video', 'video_games', 'watches', 'wholesale', 'yes') THEN 'other' ELSE NULL END,\n 'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway',\n 'dog_park') THEN leisure ELSE NULL END,\n 'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') THEN man_made ELSE NULL END,\n 'natural_' || CASE WHEN \"natural\" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance') THEN \"natural\" ELSE NULL END,\n 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END,\n 'highway_'|| CASE WHEN highway IN ('bus_stop', 'elevator', 'traffic_signals', 'ford') THEN highway ELSE NULL END,\n 'power_' || CASE WHEN power IN ('generator') THEN power ELSE NULL END,\n 'tourism_' || CASE WHEN tourism IN ('viewpoint') THEN tourism ELSE NULL END,\n 'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END,\n 'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END\n ) AS feature,\n access,\n CASE\n WHEN \"natural\" IN ('peak', 'volcano', 'saddle') THEN\n CASE\n WHEN ele ~ '^-?\\d{1,4}(\\.\\d+)?$' THEN ele::NUMERIC\n ELSE NULL\n END\n ELSE NULL\n END AS score,\n religion,\n denomination,\n \"generator:source\",\n power_source,\n NULL AS way_pixels\n FROM planet_osm_point\n -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering\n WHERE aeroway IN ('helipad', 'aerodrome')\n OR tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', \n 'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site')\n OR amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', \n 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre',\n 'fire_station', 'fountain', 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', \n 'townhall', 'parking', 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', \n 'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', \n 'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', \n 'taxi', 'theatre', 'toilets', 'drinking_water', 'prison', 'hunting_stand', 'nightclub', \n 'veterinary', 'social_facility', 'charging_station')\n OR shop IS NOT NULL -- skip checking a huge list and use a null check\n OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway',\n 'dog_park')\n OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'cross', 'obelisk')\n OR \"natural\" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance')\n OR historic IN ('memorial', 'monument', 'archaeological_site', 'wayside_cross')\n OR highway IN ('bus_stop', 'elevator', 'traffic_signals', 'ford')\n OR (power = 'generator' AND (\"generator:source\" = 'wind' OR power_source = 'wind'))\n ORDER BY score DESC NULLS LAST\n ) AS amenity_points", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 10 - }, - "advanced": {} - }, - { - "name": "power-towers", - "srs-name": "900913", - "geometry": "point", - "class": "", - "id": "power-towers", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way\n FROM planet_osm_point\n WHERE power = 'tower'\n) AS power_towers", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 14 - }, - "advanced": {} - }, - { - "name": "power-poles", - "srs-name": "900913", - "geometry": "point", - "class": "", - "id": "power-poles", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way\n FROM planet_osm_point\n WHERE power = 'pole'\n) AS power_poles", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 16 - }, - "advanced": {} - }, - { - "name": "roads-text-ref-low-zoom", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "roads-text-ref-low-zoom", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n highway,\n height,\n width,\n refs\n FROM (\n SELECT\n way, highway,\n array_length(refs,1) AS height,\n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width,\n array_to_string(refs, E'\\n') AS refs\n FROM (\n SELECT\n way,\n highway,\n string_to_array(ref, ';') AS refs\n FROM planet_osm_roads\n WHERE highway IN ('motorway', 'trunk', 'primary', 'secondary')\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "maxzoom": 12, - "minzoom": 10 - }, - "advanced": {} - }, - { - "name": "junctions", - "srs-name": "900913", - "geometry": "point", - "class": "", - "id": "junctions", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n highway,\n junction,\n ref,\n name\n FROM planet_osm_point\n WHERE highway = 'motorway_junction' OR highway = 'traffic_signals' OR junction = 'yes'\n) AS junctions", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 11 - }, - "advanced": {} - }, - { - "name": "bridge-text", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "bridge-text", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n man_made,\n name\n FROM planet_osm_polygon\n WHERE man_made = 'bridge'\n) AS bridge_text", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 11 - }, - "advanced": {} - }, - { - "name": "roads-text-ref", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "roads-text-ref", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n highway,\n height,\n width,\n refs\n FROM (\n SELECT\n way, highway,\n array_length(refs,1) AS height,\n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width,\n array_to_string(refs, E'\\n') AS refs\n FROM (\n SELECT\n way,\n COALESCE(\n CASE WHEN highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') THEN highway ELSE NULL END,\n CASE WHEN aeroway IN ('runway', 'taxiway') THEN aeroway ELSE NULL END\n ) AS highway,\n string_to_array(ref, ';') AS refs\n FROM planet_osm_line\n WHERE (highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') OR aeroway IN ('runway', 'taxiway'))\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "roads-area-text-name", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "roads-area-text-name", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n highway,\n name\n FROM planet_osm_polygon\n WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 'track', 'path', 'platform')\n OR railway IN ('platform')\n AND name IS NOT NULL\n) AS roads_area_text_name", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 15 - }, - "advanced": {} - }, - { - "name": "roads-text-name", - "srs-name": "900913", - "geometry": "linestring", - "class": "directions", - "id": "roads-text-name", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END,\n CASE WHEN (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') THEN 'yes' ELSE 'no' END AS tunnel,\n CASE WHEN construction IN ('service', 'footway', 'cycleway', 'bridleway', 'path', 'track') THEN 'yes' ELSE 'no' END AS int_construction_minor,\n name,\n CASE\n WHEN oneway IN ('yes', '-1') THEN oneway\n WHEN junction IN ('roundabout') AND (oneway IS NULL OR NOT oneway IN ('no', 'reversible')) THEN 'yes'\n ELSE NULL\n END AS oneway,\n horse, bicycle\n FROM planet_osm_line\n WHERE highway IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', \n 'tertiary_link', 'residential', 'unclassified', 'road', 'service', 'pedestrian', 'raceway', 'living_street', 'construction')\n AND (name IS NOT NULL\n OR oneway IN ('yes', '-1')\n OR junction IN ('roundabout'))\n) AS roads_text_name", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "paths-text-name", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "paths-text-name", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n highway,\n name\n FROM planet_osm_line\n WHERE highway IN ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps')\n AND name IS NOT NULL\n) AS paths_text_name", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 15 - }, - "advanced": {} - }, - { - "name": "text-poly-low-zoom", - "srs-name": "900913", - "geometry": "polygon", - "class": "text-low-zoom", - "id": "text-poly-low-zoom", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n COALESCE(\n 'landuse_' || CASE WHEN landuse IN ('forest', 'military') THEN landuse ELSE NULL END,\n 'natural_' || CASE WHEN \"natural\" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock') THEN \"natural\" ELSE NULL END,\n 'place_' || CASE WHEN place IN ('island') THEN place ELSE NULL END,\n 'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END,\n 'leisure_' || CASE WHEN leisure IN ('nature_reserve') THEN leisure ELSE NULL END\n ) AS feature,\n name,\n CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building -- always no with the where conditions\n FROM planet_osm_polygon\n WHERE (landuse IN ('forest', 'military')\n OR \"natural\" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock')\n OR \"place\" IN ('island')\n OR boundary IN ('national_park')\n OR leisure IN ('nature_reserve'))\n AND building IS NULL\n AND name IS NOT NULL\n ORDER BY way_area DESC\n) AS text_poly_low_zoom", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "maxzoom": 9, - "minzoom": 7 - }, - "advanced": {} - }, - { - "name": "text-poly", - "srs-name": "900913", - "geometry": "polygon", - "class": "text", - "id": "text-poly", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n COALESCE(\n 'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', \n 'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END,\n 'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', \n 'theatre', 'courthouse', 'townhall', 'cinema', 'clinic', 'community_centre', 'parking', \n 'bicycle_parking', 'motorcycle_parking', 'police', 'fire_station', 'fountain', 'place_of_worship', \n 'grave_yard', 'shelter', 'bank', 'embassy', 'fuel', 'bus_station', 'prison', 'university', \n 'school', 'college', 'kindergarten', 'hospital', 'ice_cream', 'pharmacy', 'doctors', 'dentist', \n 'atm', 'bicycle_rental', 'car_rental', 'car_wash', 'post_box', 'post_office',\n 'recycling', 'telephone', 'emergency_phone', 'toilets', 'taxi', 'drinking_water', 'hunting_stand', \n 'nightclub', 'veterinary', 'social_facility', 'charging_station') THEN amenity ELSE NULL END,\n 'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', \n 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', \n 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', \n 'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', \n 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', \n 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', \n 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop \n WHEN shop IN ('accessories', 'antiques', 'appliance', 'baby_goods', 'bathroom_furnishing', 'bed', \n 'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', 'carpet', 'charity', \n 'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', \n 'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 'fabric', 'fishing', \n 'flooring', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'gallery', 'games', 'gas', \n 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hobby', 'household', \n 'houseware', 'hunting', 'interior_decoration', 'kitchen', 'leather', 'lighting', 'locksmith', \n 'lottery', 'market', 'massage', 'medical', 'medical_supply', 'money_lender', 'motorcycle_repair', 'music', \n 'office_supplies', 'organic', 'paint', 'pastry', 'pawnbroker', 'phone', 'pottery', \n 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'second_hand', \n 'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo',\n 'ticket', 'tiles', 'trade', 'tyres', 'vacuum_cleaner', 'video', 'video_games', 'watches', 'wholesale', \n 'yes') THEN 'other' ELSE NULL END,\n 'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', \n 'pitch', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', \n 'picnic_table', 'dog_park') THEN leisure ELSE NULL END,\n 'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END,\n 'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', \n 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', \n 'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', \n 'construction', 'military') THEN landuse ELSE NULL END,\n 'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk') THEN man_made ELSE NULL END,\n 'natural_' || CASE WHEN \"natural\" IN ('wood', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath', \n 'grassland', 'scrub', 'beach', 'shoal', 'reef', 'glacier') THEN \"natural\" ELSE NULL END,\n 'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END,\n 'military_' || CASE WHEN military IN ('danger_area') THEN military ELSE NULL END,\n 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END,\n 'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford') THEN highway ELSE NULL END,\n 'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END,\n 'waterway_' || CASE WHEN waterway IN ('dam') THEN waterway ELSE NULL END,\n 'tourism_' || CASE WHEN tourism IN ('viewpoint', 'attraction') THEN tourism ELSE NULL END\n ) AS feature,\n access,\n name,\n operator,\n ref,\n way_area,\n CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building\n FROM planet_osm_polygon\n -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering\n WHERE (aeroway IN ('gate', 'apron', 'helipad', 'aerodrome')\n OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', \n 'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site')\n OR amenity IS NOT NULL -- skip checking a huge list and use a null check\n OR shop IS NOT NULL\n OR leisure IS NOT NULL\n OR landuse IS NOT NULL\n OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk')\n OR \"natural\" IS NOT NULL\n OR place IN ('island', 'islet')\n OR military IN ('danger_area')\n OR historic IN ('memorial', 'monument', 'archaeological_site')\n OR highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford')\n OR power IN ('plant', 'station', 'generator', 'sub_station', 'substation')\n OR boundary IN ('national_park')\n OR waterway = 'dam')\n AND (name IS NOT NULL\n OR (ref IS NOT NULL AND aeroway IN ('gate'))\n )\n ORDER BY way_area DESC\n) AS text_poly", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 10 - }, - "advanced": {} - }, - { - "name": "text-line", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "text-line", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n NULL as way_pixels,\n COALESCE('man_made_' || man_made, 'waterway_' || waterway, 'natural_' || \"natural\") AS feature,\n access,\n name,\n operator,\n ref,\n NULL AS way_area,\n CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building\n FROM planet_osm_line\n WHERE (man_made IN ('pier', 'breakwater', 'groyne', 'embankment')\n OR waterway IN ('dam', 'weir')\n OR \"natural\" IN ('cliff'))\n AND name IS NOT NULL\n) AS text_line", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 10 - }, - "advanced": {} - }, - { - "name": "text-point", - "srs-name": "900913", - "geometry": "point", - "class": "text", - "id": "text-point", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n way_pixels,\n feature,\n access,\n CONCAT(\n name,\n CASE WHEN name IS NOT NULL AND elevation IS NOT NULL THEN E'\\n' ELSE NULL END,\n CASE WHEN elevation IS NOT NULL THEN CONCAT(REPLACE(ROUND(elevation)::TEXT, '-', U&'\\2212'), U&'\\00A0', 'm') ELSE NULL END\n ) AS name,\n CASE\n WHEN \"natural\" IN ('peak', 'volcano', 'saddle') THEN elevation\n ELSE NULL\n END AS score,\n operator,\n ref,\n way_area,\n is_building\n FROM\n (SELECT\n way,\n NULL AS way_pixels,\n COALESCE(\n 'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', \n 'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END,\n 'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 'theatre', \n 'courthouse', 'townhall', 'cinema', 'clinic', 'community_centre', 'parking', 'bicycle_parking', \n 'motorcycle_parking', 'police', 'fire_station', 'fountain', 'place_of_worship', 'grave_yard', 'shelter', 'bank', \n 'embassy', 'fuel', 'bus_station', 'prison', 'university', 'school', 'college', 'kindergarten', 'hospital', \n 'ice_cream', 'pharmacy', 'doctors', 'dentist', 'atm', 'bicycle_rental', 'car_rental',\n 'car_wash', 'post_box', 'post_office', 'recycling', 'telephone', 'emergency_phone', 'toilets', 'taxi', \n 'drinking_water', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility',\n 'charging_station') THEN amenity ELSE NULL END,\n 'shop_' || CASE WHEN shop IN ('supermarket', 'bag','bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 'fashion', \n 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', 'hairdresser', \n 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', 'photography', \n 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', 'musical_instrument', \n 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', \n 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', \n 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop \n WHEN shop IN ('accessories', 'antiques', 'appliance',\n 'baby_goods', 'bathroom_furnishing', 'bed', 'boat', 'bookmaker', 'boutique', 'builder', \n 'building_materials', 'camera', 'car_service', 'carpet', 'charity', 'cheese', 'chocolate', 'coffee', \n 'communication', 'craft', 'curtain', 'dairy', 'discount', \n 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 'fabric', 'fishing', 'flooring', \n 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'gallery', 'games', 'gas', \n 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hobby', 'household', \n 'houseware', 'hunting', 'interior_decoration', 'kitchen', 'leather', 'lighting', 'locksmith', \n 'lottery', 'market', 'massage', 'medical', 'medical_supply', 'money_lender', 'motorcycle_repair', 'music', \n 'office_supplies', 'organic', 'paint', 'pastry', 'pawnbroker', 'phone', 'pottery', \n 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'second_hand', \n 'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo', \n 'ticket', 'tiles', 'trade', 'tyres', 'vacuum_cleaner', 'video', 'video_games', 'watches', \n 'wholesale', 'yes') THEN 'other' ELSE NULL END,\n 'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', \n 'pitch','playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', \n 'slipway', 'picnic_table', 'dog_park') THEN leisure ELSE NULL END,\n 'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END,\n 'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', \n 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', \n 'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', \n 'construction', 'military') THEN landuse ELSE NULL END,\n 'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'obelisk') THEN man_made ELSE NULL END,\n 'natural_' || CASE WHEN \"natural\" IN ('wood', 'peak', 'volcano', 'saddle', 'cave_entrance', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', \n 'scree', 'shingle', 'bare_rock', 'sand', 'heath', 'grassland', 'scrub', 'beach', 'glacier', 'tree') \n THEN \"natural\" ELSE NULL END,\n 'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END,\n 'military_' || CASE WHEN military IN ('danger_area') THEN military ELSE NULL END,\n 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END,\n 'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford') THEN highway ELSE NULL END,\n 'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END,\n 'waterway_' || CASE WHEN waterway IN ('dam', 'weir') THEN waterway ELSE NULL END,\n 'tourism_' || CASE WHEN tourism IN ('viewpoint', 'attraction') THEN tourism ELSE NULL END,\n 'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END,\n 'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END\n ) AS feature,\n access,\n name,\n CASE\n WHEN \"natural\" IN ('peak', 'volcano', 'saddle') OR tourism = 'alpine_hut' OR amenity = 'shelter' THEN\n CASE\n WHEN ele ~ '^-?\\d{1,4}(\\.\\d+)?$' THEN ele::NUMERIC\n ELSE NULL\n END\n ELSE NULL\n END AS elevation,\n \"natural\",\n operator,\n ref,\n NULL AS way_area,\n CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building\n FROM planet_osm_point\n -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering\n WHERE (aeroway IN ('gate', 'apron', 'helipad', 'aerodrome')\n OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', \n 'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site')\n OR amenity IS NOT NULL -- skip checking a huge list and use a null check\n OR shop IS NOT NULL\n OR leisure IS NOT NULL\n OR landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', \n 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'greenhouse_horticulture', \n 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military')\n OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'cross', 'obelisk')\n OR \"natural\" IS NOT NULL\n OR place IN ('island', 'islet')\n OR military IN ('danger_area')\n OR historic IN ('memorial', 'monument', 'archaeological_site', 'wayside_cross')\n OR highway IN ('bus_stop', 'services', 'rest_area', 'elevator', 'ford')\n OR power IN ('plant', 'station', 'generator', 'sub_station', 'substation')\n OR boundary IN ('national_park')\n OR waterway IN ('dam', 'weir'))\n AND (name IS NOT NULL\n OR (ele IS NOT NULL AND (\"natural\" IN ('peak', 'volcano', 'saddle') OR tourism = 'alpine_hut' OR amenity = 'shelter'))\n OR (ref IS NOT NULL AND aeroway IN ('gate'))\n )\n ) AS p\n ORDER BY score DESC NULLS LAST\n ) AS text", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 10 - }, - "advanced": {} - }, - { - "name": "building-text", - "srs-name": "900913", - "geometry": "polygon", - "class": "", - "id": "building-text", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n name,\n way,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n FROM planet_osm_polygon\n WHERE building IS NOT NULL\n AND building NOT IN ('no')\n AND name IS NOT NULL\n ORDER BY way_area DESC\n) AS building_text", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 14 - }, - "advanced": {} - }, - { - "name": "interpolation", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "interpolation", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way\n FROM planet_osm_line\n WHERE \"addr:interpolation\" IS NOT NULL\n) AS interpolation", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 17 - }, - "advanced": {} - }, - { - "name": "addresses", - "srs-name": "900913", - "geometry": "point", - "class": "", - "id": "addresses", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n \"addr:housenumber\" AS addr_housenumber,\n \"addr:housename\" AS addr_housename,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n FROM planet_osm_polygon\n WHERE ((\"addr:housenumber\" IS NOT NULL) OR (\"addr:housename\" IS NOT NULL))\n AND building IS NOT NULL\nUNION ALL\nSELECT\n way,\n \"addr:housenumber\" AS addr_housenumber,\n \"addr:housename\" AS addr_housename,\n NULL AS way_pixels\n FROM planet_osm_point\n WHERE (\"addr:housenumber\" IS NOT NULL) OR (\"addr:housename\" IS NOT NULL)\n ORDER BY way_pixels DESC NULLS LAST\n) AS addresses", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 17 - }, - "advanced": {} - }, - { - "name": "water-lines-text", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "water-lines-text", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n waterway,\n lock,\n name,\n intermittent,\n CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel\n FROM planet_osm_line\n WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')\n AND (tunnel IS NULL or tunnel != 'culvert')\n AND name IS NOT NULL\n ORDER BY z_order\n) AS water_lines_text", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "ferry-routes-text", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "ferry-routes-text", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n name\n FROM planet_osm_line\n WHERE route = 'ferry'\n AND name IS NOT NULL\n) AS ferry_routes_text", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "admin-text", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "admin-text", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n name,\n admin_level\n FROM planet_osm_polygon\n WHERE boundary = 'administrative'\n AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10')\n AND name IS NOT NULL\n ORDER BY admin_level::integer ASC, way_area DESC\n) AS admin_text", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 16 - }, - "advanced": {} - }, - { - "name": "nature-reserve-text", - "srs-name": "900913", - "geometry": "linestring", - "class": "", - "id": "nature-reserve-text", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n name,\n way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n FROM planet_osm_polygon\n WHERE (boundary = 'national_park' OR leisure = 'nature_reserve')\n AND name IS NOT NULL\n) AS nature_reserve_text", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 13 - }, - "advanced": {} - }, - { - "name": "amenity-low-priority", - "srs-name": "900913", - "geometry": "point", - "class": "amenity-low-priority", - "id": "amenity-low-priority", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n COALESCE(\n 'highway_' || CASE WHEN highway IN ('mini_roundabout') THEN highway ELSE NULL END,\n 'railway_' || CASE WHEN railway IN ('level_crossing', 'crossing') THEN railway ELSE NULL END,\n 'amenity_' || CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'bench', 'waste_basket') THEN amenity ELSE NULL END,\n 'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END,\n 'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END,\n 'barrier_' || CASE WHEN barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') THEN barrier ELSE NULL END\n ) AS feature,\n access,\n CASE WHEN amenity='waste_basket' THEN 2 ELSE 1 END AS prio\n FROM planet_osm_point p\n WHERE highway IN ('mini_roundabout')\n OR railway IN ('level_crossing', 'crossing')\n OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'bench', 'waste_basket')\n OR historic IN ('wayside_cross')\n OR man_made IN ('cross')\n OR barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block')\n ORDER BY prio\n ) AS amenity_low_priority", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 14 - }, - "advanced": {} - }, - { - "name": "amenity-low-priority-poly", - "srs-name": "900913", - "geometry": "polygon", - "class": "amenity-low-priority", - "id": "amenity-low-priority-poly", - "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", - "Datasource": { - "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way,\n COALESCE(\n 'amenity_' || CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking') THEN amenity ELSE NULL END,\n 'barrier_' || CASE WHEN barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') THEN barrier ELSE NULL END\n ) AS feature,\n access\n FROM planet_osm_polygon p\n WHERE amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking')\n OR barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block')\n ) AS amenity_low_priority_poly", - "geometry_field": "way", - "type": "postgis", - "key_field": "", - "dbname": "gis" - }, - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "properties": { - "minzoom": 14 - }, - "advanced": {} - } - ], - "scale": 1, - "center": [ - 0, - 0, - 4 - ], - "format": "png", - "_parts": { - "extents": { - "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", - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "srs-name": "900913" - }, - "osm2pgsql": { - "geometry_field": "way", - "type": "postgis", - "dbname": "gis", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "" - }, - "extents84": { - "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", - "extent": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "srs-name": "WGS84" - } - }, - "metatile": 2, - "bounds": [ - -180, - -85.05112877980659, - 180, - 85.05112877980659 - ], - "name": "OpenStreetMap Carto", - "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", - "Stylesheet": [ - "style.mss", - "shapefiles.mss", - "landcover.mss", - "water.mss", - "water-features.mss", - "road-colors-generated.mss", - "roads.mss", - "power.mss", - "placenames.mss", - "buildings.mss", - "stations.mss", - "amenity-points.mss", - "ferry-routes.mss", - "aerialways.mss", - "admin.mss", - "addressing.mss" - ], - "minzoom": 0, - "maxzoom": 22, - "description": "A general-purpose OpenStreetMap mapnik style, in CartoCSS" -} \ No newline at end of file +scale: 1 +metatile: 2 +name: "OpenStreetMap Carto" +description: "A general-purpose OpenStreetMap mapnik style, in CartoCSS" +bounds: &world + - -180 + - -85.05112877980659 + - 180 + - 85.05112877980659 +center: + - 0 + - 0 + - 4 +format: "png" +interactivity: false +minzoom: 0 +maxzoom: 22 +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" + +# Various parts to be included later on +_parts: + # Extents are used for tilemill, and don't actually make it to the generated XML + extents: &extents + extent: *world + srs-name: "900913" + 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" + extents84: &extents84 + extent: *world + srs-name: "WGS84" + srs: "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" + osm2pgsql: &osm2pgsql + type: "postgis" + dbname: "gis" + key_field: "" + geometry_field: "way" + extent: "-20037508,-20037508,20037508,20037508" + +Stylesheet: + - "style.mss" + - "shapefiles.mss" + - "landcover.mss" + - "water.mss" + - "water-features.mss" + - "road-colors-generated.mss" + - "roads.mss" + - "power.mss" + - "placenames.mss" + - "buildings.mss" + - "stations.mss" + - "amenity-points.mss" + - "ferry-routes.mss" + - "aerialways.mss" + - "admin.mss" + - "addressing.mss" +Layer: + - id: "world" + name: "world" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + file: "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp" + type: "shape" + advanced: {} + properties: + maxzoom: 9 + - id: "coast-poly" + name: "coast-poly" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + file: "data/land-polygons-split-3857/land_polygons.shp" + type: "shape" + properties: + minzoom: 10 + advanced: {} + - id: "builtup" + name: "builtup" + geometry: "polygon" + class: "" + extent: *world + srs-name: "mercator" + srs: "+proj=merc +datum=WGS84 +over" + Datasource: + file: "data/world_boundaries/builtup_area.shp" + type: "shape" + properties: + minzoom: 8 + maxzoom: 9 + advanced: {} + - id: "necountries" + name: "necountries" + class: "" + geometry: "linestring" + <<: *extents84 + Datasource: + file: "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp" + type: "shape" + properties: + minzoom: 1 + maxzoom: 3 + advanced: {} + - id: "landcover-low-zoom" + name: "landcover-low-zoom" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, name, way_pixels, + COALESCE(wetland, landuse, "natural") AS feature + FROM (SELECT + way, COALESCE(name, '') AS name, + ('landuse_' || (CASE WHEN landuse IN ('forest', 'military') THEN landuse ELSE NULL END)) AS landuse, + ('natural_' || (CASE WHEN "natural" IN ('wood', 'sand', 'scree', 'shingle', 'bare_rock') THEN "natural" ELSE NULL END)) AS "natural", + ('wetland_' || (CASE WHEN "natural" IN ('wetland', 'mud') THEN (CASE WHEN "natural" IN ('mud') THEN "natural" ELSE wetland END) ELSE NULL END)) AS wetland, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels + FROM planet_osm_polygon + WHERE (landuse IN ('forest', 'military') + OR "natural" IN ('wood', 'wetland', 'mud', 'sand', 'scree', 'shingle', 'bare_rock')) + AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real + AND building IS NULL + ORDER BY CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END, way_area DESC + ) AS features + ) AS landcover_low_zoom + properties: + minzoom: 7 + maxzoom: 9 + advanced: {} + - id: "landcover" + name: "landcover" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, name, religion, way_pixels, + COALESCE(aeroway, amenity, wetland, power, landuse, leisure, military, "natural", tourism, highway, railway) AS feature + FROM (SELECT + way, COALESCE(name, '') AS name, + ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway ELSE NULL END)) AS aeroway, + ('amenity_' || (CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', + 'hospital', 'kindergarten', 'grave_yard', 'prison', 'place_of_worship', 'clinic') + THEN amenity ELSE NULL END)) AS amenity, + ('landuse_' || (CASE WHEN landuse IN ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', + 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'greenhouse_horticulture', + 'recreation_ground', 'village_green', 'retail', 'industrial', 'railway', 'commercial', + 'brownfield', 'landfill', 'construction') THEN landuse ELSE NULL END)) AS landuse, + ('leisure_' || (CASE WHEN leisure IN ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', + 'golf_course', 'miniature_golf', 'picnic_table', 'sports_centre', 'stadium', 'pitch', + 'track', 'dog_park') THEN leisure ELSE NULL END)) AS leisure, + ('military_' || (CASE WHEN military IN ('danger_area') THEN military ELSE NULL END)) AS military, + ('natural_' || (CASE WHEN "natural" IN ('beach', 'shoal', 'heath', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub') THEN "natural" ELSE NULL END)) AS "natural", + ('wetland_' || (CASE WHEN "natural" IN ('wetland', 'marsh', 'mud') THEN (CASE WHEN "natural" IN ('marsh', 'mud') THEN "natural" ELSE wetland END) ELSE NULL END)) AS wetland, + ('power_' || (CASE WHEN power IN ('station', 'sub_station', 'substation', 'generator') THEN power ELSE NULL END)) AS power, + ('tourism_' || (CASE WHEN tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site') THEN tourism ELSE NULL END)) AS tourism, + ('highway_' || (CASE WHEN highway IN ('services', 'rest_area') THEN highway ELSE NULL END)) AS highway, + ('railway_' || (CASE WHEN railway = 'station' THEN railway ELSE NULL END)) AS railway, + CASE WHEN religion IN ('christian', 'jewish') THEN religion ELSE 'INT-generic'::text END AS religion, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels + FROM planet_osm_polygon + WHERE (landuse IS NOT NULL + OR leisure IS NOT NULL + OR aeroway IN ('apron', 'aerodrome') + OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', 'hospital', 'kindergarten', + 'grave_yard', 'place_of_worship', 'prison', 'clinic') + OR military IN ('danger_area') + OR "natural" IN ('beach', 'shoal', 'heath', 'mud', 'marsh', 'wetland', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub') + OR power IN ('station', 'sub_station', 'substation', 'generator') + OR tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site') + OR highway IN ('services', 'rest_area') + OR railway = 'station') + AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real + ORDER BY CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END, way_area DESC + ) AS landcover + ) AS features + properties: + minzoom: 10 + advanced: {} + - id: "landcover-line" + name: "landcover-line" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way + FROM planet_osm_line + WHERE man_made = 'cutline' + ) AS landcover_line + advanced: {} + properties: + minzoom: 14 + - id: "water-lines-casing" + name: "water-lines-casing" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, waterway, intermittent, + CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel + FROM planet_osm_line + WHERE waterway IN ('stream', 'drain', 'ditch') + ) AS water_lines_casing + properties: + minzoom: 13 + advanced: {} + - id: "water-lines-low-zoom" + name: "water-lines-low-zoom" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + waterway, + intermittent + FROM planet_osm_line + WHERE waterway = 'river' + ) AS water_lines_low_zoom + properties: + minzoom: 8 + maxzoom: 11 + advanced: {} + - id: "icesheet-poly" + name: "icesheet-poly" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + file: "data/antarctica-icesheet-polygons-3857/icesheet_polygons.shp" + type: "shape" + properties: + minzoom: 4 + advanced: {} + - id: "water-areas" + name: "water-areas" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + "natural", + waterway, + landuse, + name, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels + FROM planet_osm_polygon + WHERE + (waterway IN ('dock', 'riverbank', 'canal') + OR landuse IN ('reservoir', 'basin') + OR "natural" IN ('water', 'glacier')) + AND building IS NULL + AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real + ORDER BY z_order, way_area DESC + ) AS water_areas + properties: + minzoom: 4 + advanced: {} + - id: "landcover-area-symbols" + name: "landcover-area-symbols" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, surface, + COALESCE(CASE WHEN landuse = 'forest' THEN 'wood' ELSE NULL END, "natural") AS "natural", + CASE WHEN "natural" IN ('marsh', 'mud') + THEN "natural" + ELSE CASE WHEN ("natural" = 'wetland' AND wetland IS NULL) + THEN 'wetland' + ELSE CASE WHEN ("natural" = 'wetland') + THEN wetland + ELSE NULL + END + END + END AS int_wetland + FROM planet_osm_polygon + WHERE ("natural" IN ('marsh', 'mud', 'wetland', 'wood', 'beach', 'shoal', 'reef') OR landuse = 'forest') + AND building IS NULL + AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real + ORDER BY z_order, way_area DESC + ) AS landcover_area_symbols + properties: + minzoom: 10 + advanced: {} + - id: "icesheet-outlines" + name: "icesheet-outlines" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + file: "data/antarctica-icesheet-outlines-3857/icesheet_outlines.shp" + type: "shape" + properties: + minzoom: 4 + advanced: {} + - id: "water-lines" + name: "water-lines" + class: "water-lines" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, waterway, name, intermittent, + CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel, + 'no' AS bridge + FROM planet_osm_line + WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi') + AND (bridge IS NULL OR bridge NOT IN ('yes', 'aqueduct')) + ORDER BY z_order + ) AS water_lines + properties: + minzoom: 12 + advanced: {} + - id: "water-barriers-line" + name: "water-barriers-line" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + waterway, + name + FROM planet_osm_line + WHERE waterway IN ('dam', 'weir', 'lock_gate') + ) AS water_barriers_line + advanced: {} + properties: + minzoom: 13 + - id: "water-barriers-poly" + name: "water-barriers-poly" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + waterway, + name + FROM planet_osm_polygon + WHERE waterway IN ('dam', 'weir', 'lock_gate') + ) AS water_barriers_poly + advanced: {} + properties: + minzoom: 13 + - id: "marinas-area" + name: "marinas-area" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way + FROM planet_osm_polygon + WHERE leisure = 'marina' + ) AS marinas_area + properties: + minzoom: 14 + advanced: {} + - id: "piers-poly" + name: "piers-poly" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, man_made + FROM planet_osm_polygon + WHERE man_made IN ('pier', 'breakwater', 'groyne') + ) AS piers_poly + properties: + minzoom: 12 + advanced: {} + - id: "piers-line" + name: "piers-line" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, man_made + FROM planet_osm_line + WHERE man_made IN ('pier', 'breakwater', 'groyne') + ) AS piers_line + properties: + minzoom: 12 + advanced: {} + - id: "water-barriers-point" + name: "water-barriers-point" + class: "" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, waterway + FROM planet_osm_point + WHERE waterway IN ('dam', 'weir', 'lock_gate') + ) AS water_barriers_points + properties: + minzoom: 17 + advanced: {} + - id: "bridge" + name: "bridge" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, + man_made, + name + FROM planet_osm_polygon + WHERE man_made = 'bridge' + ) AS bridge + properties: + minzoom: 12 + advanced: {} + - id: "buildings" + name: "buildings" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + building + FROM planet_osm_polygon + WHERE building IS NOT NULL + AND building != 'no' + AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real + ORDER BY z_order, way_area DESC + ) AS buildings + properties: + minzoom: 13 + advanced: {} + - id: "buildings-major" + name: "buildings-major" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + building, + amenity, + aeroway + FROM planet_osm_polygon + WHERE building IS NOT NULL + AND building != 'no' + AND (aeroway = 'terminal' OR amenity = 'place_of_worship') + AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real + ORDER BY z_order, way_area DESC) + AS buildings_major + properties: + minzoom: 13 + advanced: {} + - id: "tunnels" + name: "tunnels" + class: "tunnels-fill tunnels-casing access" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + # This query is quite large, having to deal with both roads, railways and + # runways. To allow for ways that are both railways and roads, a UNION + # ALL is present, and to use an ordering different than current osm2pgsql + # an order is generated in SQL. + table: |- + (SELECT + way, + (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature, + horse, + foot, + bicycle, + tracktype, + int_surface, + access, + construction, + service, + link, + layernotnull + FROM ( -- subselect that contains both roads and rail/aero + SELECT + way, + ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on + horse, + foot, + bicycle, + tracktype, + CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground', + 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved' + WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', + 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved' + ELSE NULL + END AS int_surface, + CASE WHEN access IN ('destination') THEN 'destination'::text + WHEN access IN ('no', 'private') THEN 'no'::text + ELSE NULL + END AS access, + construction, + CASE + WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text + ELSE 'INT-normal'::text + END AS service, + CASE + WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' + ELSE 'no' + END AS link, + CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull + FROM planet_osm_line + WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') + AND highway IS NOT NULL -- end of road select + UNION ALL + SELECT + way, + COALESCE( + ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text + WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' + WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)), + ('aeroway_' || aeroway) + ) AS feature, + horse, + foot, + bicycle, + tracktype, + 'null', + CASE + WHEN access IN ('destination') THEN 'destination'::text + WHEN access IN ('no', 'private') THEN 'no'::text + ELSE NULL + END AS access, + construction, + CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service, + 'no' AS link, + CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull + FROM planet_osm_line + WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') + AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select + ) AS features + JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results. + ('railway_rail', 440), + ('railway_INT-preserved-ssy', 430), + ('railway_INT-spur-siding-yard', 430), + ('railway_subway', 420), + ('railway_narrow_gauge', 420), + ('railway_light_rail', 420), + ('railway_preserved', 420), + ('railway_funicular', 420), + ('railway_monorail', 420), + ('railway_miniature', 420), + ('railway_turntable', 420), + ('railway_tram', 410), + ('railway_tram-service', 405), + ('railway_disused', 400), + ('railway_construction', 400), + ('highway_motorway', 380), + ('highway_trunk', 370), + ('highway_primary', 360), + ('highway_secondary', 350), + ('highway_tertiary', 340), + ('highway_residential', 330), + ('highway_unclassified', 330), + ('highway_road', 330), + ('highway_living_street', 320), + ('highway_pedestrian', 310), + ('highway_raceway', 300), + ('highway_motorway_link', 240), + ('highway_trunk_link', 230), + ('highway_primary_link', 220), + ('highway_secondary_link', 210), + ('highway_tertiary_link', 200), + ('highway_service', 150), + ('highway_track', 110), + ('highway_path', 100), + ('highway_footway', 100), + ('highway_bridleway', 100), + ('highway_cycleway', 100), + ('highway_steps', 100), + ('highway_platform', 90), + ('railway_platform', 90), + ('aeroway_runway', 60), + ('aeroway_taxiway', 50), + ('highway_construction', 10) + ) AS ordertable (feature, prio) + USING (feature) + ORDER BY + layernotnull, + prio, + CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END, + CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END + ) AS tunnels + properties: + group-by: "layernotnull" + minzoom: 9 + advanced: {} + - id: "landuse-overlay" + name: "landuse-overlay" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + landuse, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels + FROM planet_osm_polygon + WHERE landuse = 'military' + AND building IS NULL + ) AS landuse_overlay + properties: + minzoom: 7 + advanced: {} + - id: "line-barriers" + name: "line-barriers" + class: "barriers" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, COALESCE(historic, barrier) AS feature + FROM (SELECT way, + ('barrier_' || (CASE WHEN barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail', + 'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall') THEN barrier ELSE NULL END)) AS barrier, + ('historic_' || (CASE WHEN historic = 'citywalls' THEN historic ELSE NULL END)) AS historic + FROM planet_osm_line + WHERE barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail', + 'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall') + OR historic = 'city_wall' + AND (waterway IS NULL OR waterway NOT IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')) + ) AS features + ) AS line_barriers + properties: + minzoom: 14 + advanced: {} + - id: "cliffs" + name: "cliffs" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, "natural", man_made + FROM planet_osm_line + WHERE "natural" = 'cliff' OR man_made = 'embankment' + ) AS cliffs + properties: + minzoom: 13 + advanced: {} + - id: "area-barriers" + name: "area-barriers" + class: "barriers" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, barrier AS feature + FROM (SELECT way, + ('barrier_' || barrier) AS barrier + FROM planet_osm_polygon + WHERE barrier IS NOT NULL + ) AS features + ) AS area_barriers + properties: + minzoom: 16 + advanced: {} + - id: "ferry-routes" + name: "ferry-routes" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way + FROM planet_osm_line + WHERE route = 'ferry' + ) AS ferry_routes + properties: + minzoom: 7 + advanced: {} + - id: "turning-circle-casing" + name: "turning-circle-casing" + class: "" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT DISTINCT ON (p.way) + p.way AS way, l.highway AS int_tc_type, + CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway') + THEN 'INT-minor'::text + ELSE 'INT-normal'::text + END AS int_tc_service + FROM planet_osm_point p + JOIN planet_osm_line l ON ST_DWithin(p.way, l.way, 0.1) -- Assumes Mercator + JOIN (VALUES + ('tertiary', 1), + ('unclassified', 2), + ('residential', 3), + ('living_street', 4), + ('service', 5) + ) AS v (highway, prio) + ON v.highway=l.highway + WHERE p.highway = 'turning_circle' + OR p.highway = 'turning_loop' + ORDER BY p.way, v.prio + ) AS turning_circle_casing + properties: + minzoom: 15 + advanced: {} + - id: "highway-area-casing" + name: "highway-area-casing" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + COALESCE(( + 'highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'track', 'path', 'platform') THEN highway ELSE NULL END)), + ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END)) + ) AS feature + FROM planet_osm_polygon + WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform') + OR railway IN ('platform') + ORDER BY z_order, way_area DESC + ) AS highway_area_casing + properties: + minzoom: 14 + advanced: {} + - name: "roads-casing" + id: "roads-casing" + class: "roads-casing" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature, + horse, + foot, + bicycle, + tracktype, + int_surface, + access, + construction, + service, + link, + layernotnull + FROM ( -- subselect that contains both roads and rail/aero + SELECT + way, + ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on + horse, + foot, + bicycle, + tracktype, + CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground', + 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved' + WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', + 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved' + ELSE NULL + END AS int_surface, + CASE WHEN access IN ('destination') THEN 'destination'::text + WHEN access IN ('no', 'private') THEN 'no'::text + ELSE NULL + END AS access, + construction, + CASE + WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text + ELSE 'INT-normal'::text + END AS service, + CASE + WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' + ELSE 'no' + END AS link, + CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull + FROM planet_osm_line + WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) + AND (covered IS NULL OR NOT covered = 'yes') + AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')) + AND highway IS NOT NULL -- end of road select + UNION ALL + SELECT + way, + COALESCE( + ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text + WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' + WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)), + ('aeroway_' || aeroway) + ) AS feature, + horse, + foot, + bicycle, + tracktype, + 'null', + CASE + WHEN access IN ('destination') THEN 'destination'::text + WHEN access IN ('no', 'private') THEN 'no'::text + ELSE NULL + END AS access, + construction, + CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service, + 'no' AS link, + CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull + FROM planet_osm_line + WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) + AND (covered IS NULL OR NOT covered = 'yes') + AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')) + AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select + ) AS features + JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results. + ('railway_rail', 440), + ('railway_INT-preserved-ssy', 430), + ('railway_INT-spur-siding-yard', 430), + ('railway_subway', 420), + ('railway_narrow_gauge', 420), + ('railway_light_rail', 420), + ('railway_preserved', 420), + ('railway_funicular', 420), + ('railway_monorail', 420), + ('railway_miniature', 420), + ('railway_turntable', 420), + ('railway_tram', 410), + ('railway_tram-service', 405), + ('railway_disused', 400), + ('railway_construction', 400), + ('highway_motorway', 380), + ('highway_trunk', 370), + ('highway_primary', 360), + ('highway_secondary', 350), + ('highway_tertiary', 340), + ('highway_residential', 330), + ('highway_unclassified', 330), + ('highway_road', 330), + ('highway_living_street', 320), + ('highway_pedestrian', 310), + ('highway_raceway', 300), + ('highway_motorway_link', 240), + ('highway_trunk_link', 230), + ('highway_primary_link', 220), + ('highway_secondary_link', 210), + ('highway_tertiary_link', 200), + ('highway_service', 150), + ('highway_track', 110), + ('highway_path', 100), + ('highway_footway', 100), + ('highway_bridleway', 100), + ('highway_cycleway', 100), + ('highway_steps', 100), + ('highway_platform', 90), + ('railway_platform', 90), + ('aeroway_runway', 60), + ('aeroway_taxiway', 50), + ('highway_construction', 10) + ) AS ordertable (feature, prio) + USING (feature) + ORDER BY + layernotnull, + prio, + CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END, + CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END + ) AS roads_casing + properties: + minzoom: 9 + advanced: {} + - id: "highway-area-fill" + name: "highway-area-fill" + class: "" + # FIXME: No geometry? + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + COALESCE( + ('highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', + 'track', 'path', 'platform', 'services') THEN highway ELSE NULL END)), + ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END)), + (('aeroway_' || CASE WHEN aeroway IN ('runway', 'taxiway', 'helipad') THEN aeroway ELSE NULL END)) + ) AS feature + FROM planet_osm_polygon + WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'living_street', 'track', 'path', 'platform', 'services') + OR railway IN ('platform') + OR aeroway IN ('runway', 'taxiway', 'helipad') + ORDER BY z_order, way_area desc + ) AS highway_area_fill + properties: + minzoom: 14 + advanced: {} + - id: "roads-fill" + name: "roads-fill" + class: "roads-fill access" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + # This is one of the most complex layers, so it bears explaining in some detail + # It is necessary to + # - Have roads and railways in the same layer to get ordering right + # - Return two linestrings for ways which are both a road and railway + # - Compute z_order here, rather than rely on osm2pgsql z_order + table: |- + (SELECT + way, + (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature, + horse, + foot, + bicycle, + tracktype, + int_surface, + access, + construction, + service, + link, + layernotnull + FROM ( -- begin "features" subselect that contains both roads and rail/aero + SELECT + way, + ('highway_' || highway) AS feature, -- only motorway to tertiary links are accepted later on + horse, + foot, + bicycle, + tracktype, + CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground', + 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved' + WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', + 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved' + ELSE NULL + END AS int_surface, + CASE WHEN access IN ('destination') THEN 'destination'::text + WHEN access IN ('no', 'private') THEN 'no'::text + ELSE NULL + END AS access, + construction, + CASE + WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text + ELSE 'INT-normal'::text + END AS service, + CASE + WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' + ELSE 'no' + END AS link, + CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull + FROM planet_osm_line + WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) + AND (covered IS NULL OR NOT covered = 'yes') + AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')) + AND highway IS NOT NULL -- end of road select + UNION ALL + SELECT + way, + COALESCE( + ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text + WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' + WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)), + ('aeroway_' || aeroway) + ) AS feature, + horse, + foot, + bicycle, + tracktype, + 'null' AS surface, -- Should be a SQL NULL? + CASE + WHEN access IN ('destination') THEN 'destination'::text + WHEN access IN ('no', 'private') THEN 'no'::text + ELSE NULL + END AS access, + construction, + CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service, + 'no' AS link, + CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull + FROM planet_osm_line + WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) + AND (covered IS NULL OR NOT covered = 'yes') + AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')) + AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select + ) AS features + JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results. + ('railway_rail', 440), + ('railway_INT-preserved-ssy', 430), + ('railway_INT-spur-siding-yard', 430), + ('railway_subway', 420), + ('railway_narrow_gauge', 420), + ('railway_light_rail', 420), + ('railway_preserved', 420), + ('railway_funicular', 420), + ('railway_monorail', 420), + ('railway_miniature', 420), + ('railway_turntable', 420), + ('railway_tram', 410), + ('railway_tram-service', 405), + ('railway_disused', 400), + ('railway_construction', 400), + ('highway_motorway', 380), + ('highway_trunk', 370), + ('highway_primary', 360), + ('highway_secondary', 350), + ('highway_tertiary', 340), + ('highway_residential', 330), + ('highway_unclassified', 330), + ('highway_road', 330), + ('highway_living_street', 320), + ('highway_pedestrian', 310), + ('highway_raceway', 300), + ('highway_motorway_link', 240), + ('highway_trunk_link', 230), + ('highway_primary_link', 220), + ('highway_secondary_link', 210), + ('highway_tertiary_link', 200), + ('highway_service', 150), + ('highway_track', 110), + ('highway_path', 100), + ('highway_footway', 100), + ('highway_bridleway', 100), + ('highway_cycleway', 100), + ('highway_steps', 100), + ('highway_platform', 90), + ('railway_platform', 90), + ('aeroway_runway', 60), + ('aeroway_taxiway', 50), + ('highway_construction', 10) + ) AS ordertable (feature, prio) + USING (feature) + ORDER BY + layernotnull, + prio, + CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END, + CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END + ) AS roads_fill + properties: + minzoom: 10 + advanced: {} + - id: "turning-circle-fill" + name: "turning-circle-fill" + class: "" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + DISTINCT on (p.way) + p.way AS way, l.highway AS int_tc_type, + CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text + ELSE 'INT-normal'::text END AS int_tc_service + FROM planet_osm_point p + JOIN planet_osm_line l + ON ST_DWithin(p.way, l.way, 0.1) + JOIN (VALUES + ('tertiary', 1), + ('unclassified', 2), + ('residential', 3), + ('living_street', 4), + ('service', 5), + ('track', 6) + ) AS v (highway, prio) + ON v.highway=l.highway + WHERE p.highway = 'turning_circle' OR p.highway = 'turning_loop' + ORDER BY p.way, v.prio + ) AS turning_circle_fill + properties: + minzoom: 15 + advanced: {} + - id: "aerialways" + name: "aerialways" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + aerialway + FROM planet_osm_line + WHERE aerialway IS NOT NULL + ) AS aerialways + properties: + minzoom: 12 + advanced: {} + - id: "roads-low-zoom" + name: "roads-low-zoom" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + COALESCE( + ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway end)), + ('railway_' || (CASE WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' + WHEN railway IN ('rail', 'tram', 'light_rail', 'funicular', 'narrow_gauge') THEN railway ELSE NULL END)) + ) AS feature, + CASE WHEN tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes' THEN 'yes' ELSE 'no' END AS int_tunnel, + CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' ELSE 'no' END AS link, + CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground', + 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved' + WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', + 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved' + ELSE NULL + END AS int_surface + FROM planet_osm_roads + WHERE highway IS NOT NULL + OR (railway IS NOT NULL AND railway != 'preserved' + AND (service IS NULL OR service NOT IN ('spur', 'siding', 'yard'))) + ORDER BY z_order + ) AS roads_low_zoom + properties: + minzoom: 5 + maxzoom: 9 + advanced: {} + - id: "waterway-bridges" + name: "waterway-bridges" + class: "water-lines" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + waterway, + name, + intermittent, + CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel, + 'yes' AS bridge + FROM planet_osm_line + WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi') + AND bridge IN ('yes', 'aqueduct') + ORDER BY z_order + ) AS waterway_bridges + properties: + minzoom: 15 + advanced: {} + - id: "bridges" + name: "bridges" + class: "bridges-fill bridges-casing access" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature, + horse, + foot, + bicycle, + tracktype, + int_surface, + access, + construction, + service, + link, + layernotnull + FROM ( -- subselect that contains both roads and rail/aero + SELECT + way, + ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on + horse, + foot, + bicycle, + tracktype, + CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground', + 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved' + WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', + 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved' + ELSE NULL + END AS int_surface, + CASE WHEN access IN ('destination') THEN 'destination'::text + WHEN access IN ('no', 'private') THEN 'no'::text + ELSE NULL + END AS access, + construction, + CASE + WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text + ELSE 'INT-normal'::text + END AS service, + CASE + WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' + ELSE 'no' + END AS link, + CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull + FROM planet_osm_line + WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct') + AND highway IS NOT NULL -- end of road select + UNION ALL + SELECT + way, + COALESCE( + ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text + WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' + WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)), + ('aeroway_' || aeroway) + ) AS feature, + horse, + foot, + bicycle, + tracktype, + 'null', + CASE + WHEN access IN ('destination') THEN 'destination'::text + WHEN access IN ('no', 'private') THEN 'no'::text + ELSE NULL + END AS access, + construction, + CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service, + 'no' AS link, + CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull + FROM planet_osm_line + WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct') + AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select + ) AS features + JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results. + ('railway_rail', 440), + ('railway_INT-preserved-ssy', 430), + ('railway_INT-spur-siding-yard', 430), + ('railway_subway', 420), + ('railway_narrow_gauge', 420), + ('railway_light_rail', 420), + ('railway_preserved', 420), + ('railway_funicular', 420), + ('railway_monorail', 420), + ('railway_miniature', 420), + ('railway_turntable', 420), + ('railway_tram', 410), + ('railway_tram-service', 405), + ('railway_disused', 400), + ('railway_construction', 400), + ('highway_motorway', 380), + ('highway_trunk', 370), + ('highway_primary', 360), + ('highway_secondary', 350), + ('highway_tertiary', 340), + ('highway_residential', 330), + ('highway_unclassified', 330), + ('highway_road', 330), + ('highway_living_street', 320), + ('highway_pedestrian', 310), + ('highway_raceway', 300), + ('highway_motorway_link', 240), + ('highway_trunk_link', 230), + ('highway_primary_link', 220), + ('highway_secondary_link', 210), + ('highway_tertiary_link', 200), + ('highway_service', 150), + ('highway_track', 110), + ('highway_path', 100), + ('highway_footway', 100), + ('highway_bridleway', 100), + ('highway_cycleway', 100), + ('highway_steps', 100), + ('highway_platform', 90), + ('railway_platform', 90), + ('aeroway_runway', 60), + ('aeroway_taxiway', 50), + ('highway_construction', 10) + ) AS ordertable (feature, prio) + USING (feature) + ORDER BY + layernotnull, + prio, + CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END, + CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END + ) AS bridges + properties: + group-by: "layernotnull" + minzoom: 9 + advanced: {} + - id: "guideways" + name: "guideways" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way + FROM planet_osm_line + WHERE highway = 'bus_guideway' + ) AS guideways + properties: + minzoom: 13 + advanced: {} + - name: "admin-low-zoom" + id: "admin-low-zoom" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + admin_level + FROM planet_osm_roads + WHERE boundary = 'administrative' + AND admin_level IN ('0', '1', '2', '3', '4') + AND osm_id < 0 + ORDER BY admin_level DESC + ) AS admin_low_zoom + properties: + minzoom: 4 + maxzoom: 10 + advanced: {} + - id: "admin-mid-zoom" + name: "admin-mid-zoom" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + admin_level + FROM planet_osm_roads + WHERE boundary = 'administrative' + AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8') + AND osm_id < 0 + ORDER BY admin_level DESC + ) AS admin_mid_zoom + properties: + minzoom: 11 + maxzoom: 12 + advanced: {} + - id: "admin-high-zoom" + name: "admin-high-zoom" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + admin_level + FROM planet_osm_roads + WHERE boundary = 'administrative' + AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10') + AND osm_id < 0 + ORDER BY admin_level::integer DESC -- With 10 as a valid value, we need to do a numeric ordering, not a text ordering + ) AS admin_high_zoom + properties: + minzoom: 13 + advanced: {} + - id: "power-minorline" + name: "power-minorline" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way + FROM planet_osm_line + WHERE power = 'minor_line' + ) AS power_minorline + properties: + minzoom: 16 + advanced: {} + - id: "power-line" + name: "power-line" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way + FROM planet_osm_line + WHERE power = 'line' + ) AS power_line + properties: + minzoom: 14 + advanced: {} + - id: "nature-reserve-boundaries" + name: "nature-reserve-boundaries" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + name, + boundary, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels + FROM planet_osm_polygon + WHERE (boundary = 'national_park' OR leisure = 'nature_reserve') + AND building IS NULL + AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real + ) AS national_park_boundaries + properties: + minzoom: 7 + advanced: {} + - id: "tourism-boundary" + name: "tourism-boundary" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, + name, + tourism + FROM planet_osm_polygon + WHERE tourism = 'theme_park' + OR tourism = 'zoo' + ) AS tourism_boundary + properties: + minzoom: 10 + advanced: {} + - id: "trees" + name: "trees" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, "natural" + FROM planet_osm_point + WHERE "natural" = 'tree' + UNION ALL + SELECT + way, "natural" + FROM planet_osm_line + WHERE "natural" = 'tree_row' + ) AS trees + properties: + minzoom: 16 + advanced: {} + - id: "country-names" + name: "country-names" + class: "country" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, + name + FROM planet_osm_polygon + WHERE boundary = 'administrative' + AND admin_level = '2' + AND name IS NOT NULL + AND way_area > 100*!pixel_width!::real*!pixel_height!::real + ORDER BY way_area DESC + ) AS country_names + properties: + minzoom: 2 + - id: "capital-names" + name: "capital-names" + class: "" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + name, + CASE + WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER ELSE 0 + END as population, + round(random()) AS dir + FROM planet_osm_point + WHERE capital = 'yes' + AND admin_level = '2' + ORDER BY population DESC + ) AS capital_names + properties: + minzoom: 3 + maxzoom: 15 + advanced: {} + - id: "state-names" + name: "state-names" + class: "state" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, + name, + ref + FROM planet_osm_polygon + WHERE boundary = 'administrative' + AND admin_level = '4' + AND name IS NOT NULL + AND way_area > 100*!pixel_width!::real*!pixel_height!::real + ORDER BY way_area DESC + ) AS state_names + properties: + minzoom: 4 + advanced: {} + - id: "placenames-medium" + name: "placenames-medium" + class: "" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + name, + score, + CASE + WHEN (place = 'city') THEN 1 + ELSE 2 + END as category, + round(random()) AS dir + FROM + (SELECT + way, + place, + name, + ( + (CASE + WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER + WHEN (place = 'city') THEN 100000 + WHEN (place = 'town') THEN 1000 + ELSE 1 + END) + * + (CASE + WHEN (capital = '4' OR (capital = 'yes' AND admin_level = '4')) THEN 2 + ELSE 1 + END) + ) AS score + FROM planet_osm_point + WHERE place IN ('city', 'town') + AND name IS NOT NULL + AND capital IS NULL OR capital != 'yes' OR (capital = 'yes' AND admin_level != '2') + ) as p + ORDER BY score DESC, length(name) DESC, name + ) AS placenames_medium + properties: + minzoom: 4 + maxzoom: 15 + advanced: {} + - id: "placenames-small" + name: "placenames-small" + class: "" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + place, + name + FROM planet_osm_point + WHERE place IN ('suburb', 'village', 'hamlet', 'neighbourhood', 'locality', 'isolated_dwelling', 'farm') + AND name IS NOT NULL + ORDER BY CASE + WHEN place = 'suburb' THEN 3 + WHEN place = 'village' THEN 4 + WHEN place = 'hamlet' THEN 5 + WHEN place = 'neighbourhood' THEN 6 + WHEN place = 'locality' THEN 7 + WHEN place = 'isolated_dwelling' THEN 8 + WHEN place = 'farm' THEN 9 + END ASC, length(name) DESC, name + ) AS placenames_small + properties: + minzoom: 12 + advanced: {} + - id: "stations" + class: "stations" + name: "stations" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + name, + ref, + railway, + aerialway, + CASE railway + WHEN 'station' THEN 1 + WHEN 'subway_entrance' THEN 3 + ELSE 2 + END + AS prio + FROM planet_osm_point + WHERE railway IN ('station', 'halt', 'tram_stop', 'subway_entrance') + OR aerialway = 'station' + ORDER BY prio + ) AS stations + properties: + minzoom: 12 + advanced: {} + - id: "stations-poly" + name: "stations-poly" + class: "stations" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + name, + ref, + railway, + aerialway + FROM planet_osm_polygon + WHERE railway IN ('station', 'halt', 'tram_stop') + OR aerialway = 'station' + ) AS stations_poly + properties: + minzoom: 12 + advanced: {} + - id: "amenity-points-poly" + name: "amenity-points-poly" + class: "points" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + COALESCE( + 'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END, + 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', + 'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END, + 'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', + 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', 'fire_station', 'fountain', + 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 'townhall', 'parking', + 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', + 'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', + 'fast_food', 'telephone', 'emergency_phone', 'taxi', 'theatre', 'toilets', 'drinking_water', + 'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility', + 'charging_station') THEN amenity ELSE NULL END, + 'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', + 'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', + 'garden_centre', 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', + 'photo', 'photo_studio', 'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', + 'mobile_phone', 'motorcycle', 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', + 'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', + 'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', + 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop + WHEN shop IN ('accessories', 'antiques', 'appliance', 'baby_goods', 'bathroom_furnishing', + 'bed', 'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', + 'carpet', 'charity', 'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', + 'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', + 'fabric', 'fishing', 'flooring', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', + 'gallery', 'games', 'gas', 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', + 'herbalist', 'hobby', 'household', 'houseware', 'hunting', 'interior_decoration', 'kitchen', + 'leather', 'lighting', 'locksmith', 'lottery', 'market', 'massage', 'medical', 'medical_supply', 'money_lender', + 'motorcycle_repair', 'music', 'office_supplies', 'organic', 'paint', 'pastry', 'pawnbroker', + 'phone', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', + 'scuba_diving', 'second_hand', 'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir', + 'tailor', 'tanning', 'tattoo', 'ticket', 'tiles', 'trade', 'tyres', 'vacuum_cleaner', 'video', + 'video_games', 'watches', 'wholesale', 'yes') THEN 'other' ELSE NULL END, + 'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table') THEN leisure ELSE NULL END, + 'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') THEN man_made ELSE NULL END, + 'natural_' || CASE WHEN "natural" IN ('spring') THEN "natural" ELSE NULL END, + 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END, + 'highway_'|| CASE WHEN highway IN ('bus_stop', 'elevator', 'traffic_signals') THEN highway ELSE NULL END, + 'power_' || CASE WHEN power IN ('generator') THEN power ELSE NULL END, + 'tourism_' || CASE WHEN tourism IN ('viewpoint') THEN tourism ELSE NULL END + ) AS feature, + access, + religion, + denomination, + "generator:source", + power_source, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels + FROM planet_osm_polygon + -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering + WHERE aeroway IN ('helipad', 'aerodrome') + OR tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', + 'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site') + OR amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', + 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', + 'fire_station', 'fountain', 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', + 'townhall', 'parking', 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', + 'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', + 'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', 'taxi', + 'theatre', 'toilets', 'drinking_water', 'prison', 'hunting_stand', 'nightclub', 'veterinary', + 'social_facility', 'charging_station') + OR shop IS NOT NULL -- skip checking a huge list and use a null check + OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table') + OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') + OR "natural" IN ('spring') + OR historic IN ('memorial', 'monument', 'archaeological_site') + OR highway IN ('bus_stop', 'elevator', 'traffic_signals') + OR (power = 'generator' AND ("generator:source" = 'wind' OR power_source = 'wind')) + ORDER BY way_area desc + ) AS amenity_points_poly + properties: + minzoom: 10 + advanced: {} + - id: "amenity-points" + name: "amenity-points" + class: "points" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + COALESCE( + 'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END, + 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', + 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END, + 'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', + 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', 'fire_station', 'fountain', + 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 'townhall', 'parking', + 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', + 'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', + 'fast_food', 'telephone', 'emergency_phone', 'taxi', 'theatre', 'toilets', 'drinking_water', + 'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility', + 'charging_station') THEN amenity ELSE NULL END, + 'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', + 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', + 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', + 'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', + 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', + 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', + 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop + WHEN shop IN ('accessories', 'antiques', 'appliance', 'baby_goods', 'bathroom_furnishing', 'bed', + 'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', 'carpet', 'charity', + 'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', + 'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 'fabric', 'fishing', + 'flooring', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'gallery', 'games', 'gas', + 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hobby', 'household', + 'houseware', 'hunting', 'interior_decoration', 'kitchen', 'leather', 'lighting', 'locksmith', 'lottery', + 'market', 'massage', 'medical', 'medical_supply', 'money_lender', 'motorcycle_repair', 'music', 'office_supplies', + 'organic', 'paint', 'pastry', 'pawnbroker', 'phone', 'pottery', 'printing', 'radiotechnics', + 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'second_hand', 'sewing', 'shoe_repair', 'shopping_centre', + 'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo', 'ticket', 'tiles', 'trade', 'tyres', + 'vacuum_cleaner', 'video', 'video_games', 'watches', 'wholesale', 'yes') THEN 'other' ELSE NULL END, + 'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway', + 'dog_park') THEN leisure ELSE NULL END, + 'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') THEN man_made ELSE NULL END, + 'natural_' || CASE WHEN "natural" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance') THEN "natural" ELSE NULL END, + 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END, + 'highway_'|| CASE WHEN highway IN ('bus_stop', 'elevator', 'traffic_signals', 'ford') THEN highway ELSE NULL END, + 'power_' || CASE WHEN power IN ('generator') THEN power ELSE NULL END, + 'tourism_' || CASE WHEN tourism IN ('viewpoint') THEN tourism ELSE NULL END, + 'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END, + 'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END + ) AS feature, + access, + CASE + WHEN "natural" IN ('peak', 'volcano', 'saddle') THEN + CASE + WHEN ele ~ '^-?\d{1,4}(\.\d+)?$' THEN ele::NUMERIC + ELSE NULL + END + ELSE NULL + END AS score, + religion, + denomination, + "generator:source", + power_source, + NULL AS way_pixels + FROM planet_osm_point + -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering + WHERE aeroway IN ('helipad', 'aerodrome') + OR tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', + 'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site') + OR amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', + 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', + 'fire_station', 'fountain', 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', + 'townhall', 'parking', 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', + 'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', + 'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', + 'taxi', 'theatre', 'toilets', 'drinking_water', 'prison', 'hunting_stand', 'nightclub', + 'veterinary', 'social_facility', 'charging_station') + OR shop IS NOT NULL -- skip checking a huge list and use a null check + OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway', + 'dog_park') + OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'cross', 'obelisk') + OR "natural" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance') + OR historic IN ('memorial', 'monument', 'archaeological_site', 'wayside_cross') + OR highway IN ('bus_stop', 'elevator', 'traffic_signals', 'ford') + OR (power = 'generator' AND ("generator:source" = 'wind' OR power_source = 'wind')) + ORDER BY score DESC NULLS LAST + ) AS amenity_points + properties: + minzoom: 10 + advanced: {} + - id: "power-towers" + name: "power-towers" + class: "" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way + FROM planet_osm_point + WHERE power = 'tower' + ) AS power_towers + properties: + minzoom: 14 + advanced: {} + - id: "power-poles" + name: "power-poles" + class: "" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way + FROM planet_osm_point + WHERE power = 'pole' + ) AS power_poles + properties: + minzoom: 16 + advanced: {} + - id: "roads-text-ref-low-zoom" + name: "roads-text-ref-low-zoom" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + highway, + height, + width, + refs + FROM ( + SELECT + way, highway, + array_length(refs,1) AS height, + (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, + array_to_string(refs, E'\n') AS refs + FROM ( + SELECT + way, + highway, + string_to_array(ref, ';') AS refs + FROM planet_osm_roads + WHERE highway IN ('motorway', 'trunk', 'primary', 'secondary') + AND ref IS NOT NULL + ) AS p) AS q + WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom + properties: + minzoom: 10 + maxzoom: 12 + advanced: {} + - id: "junctions" + name: "junctions" + class: "" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + highway, + junction, + ref, + name + FROM planet_osm_point + WHERE highway = 'motorway_junction' OR highway = 'traffic_signals' OR junction = 'yes' + ) AS junctions + properties: + minzoom: 11 + advanced: {} + - id: "bridge-text" + name: "bridge-text" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, + man_made, + name + FROM planet_osm_polygon + WHERE man_made = 'bridge' + ) AS bridge_text + properties: + minzoom: 11 + advanced: {} + - id: "roads-text-ref" + name: "roads-text-ref" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + highway, + height, + width, + refs + FROM ( + SELECT + way, highway, + array_length(refs,1) AS height, + (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, + array_to_string(refs, E'\n') AS refs + FROM ( + SELECT + way, + COALESCE( + CASE WHEN highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') THEN highway ELSE NULL END, + CASE WHEN aeroway IN ('runway', 'taxiway') THEN aeroway ELSE NULL END + ) AS highway, + string_to_array(ref, ';') AS refs + FROM planet_osm_line + WHERE (highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') OR aeroway IN ('runway', 'taxiway')) + AND ref IS NOT NULL + ) AS p) AS q + WHERE height <= 4 AND width <= 11) AS roads_text_ref + properties: + minzoom: 13 + advanced: {} + - id: "roads-area-text-name" + name: "roads-area-text-name" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, + highway, + name + FROM planet_osm_polygon + WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 'track', 'path', 'platform') + OR railway IN ('platform') + AND name IS NOT NULL + ) AS roads_area_text_name + properties: + minzoom: 15 + advanced: {} + - id: "roads-text-name" + name: "roads-text-name" + class: "directions" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END, + CASE WHEN (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') THEN 'yes' ELSE 'no' END AS tunnel, + CASE WHEN construction IN ('service', 'footway', 'cycleway', 'bridleway', 'path', 'track') THEN 'yes' ELSE 'no' END AS int_construction_minor, + name, + CASE + WHEN oneway IN ('yes', '-1') THEN oneway + WHEN junction IN ('roundabout') AND (oneway IS NULL OR NOT oneway IN ('no', 'reversible')) THEN 'yes' + ELSE NULL + END AS oneway, + horse, bicycle + FROM planet_osm_line + WHERE highway IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', + 'tertiary_link', 'residential', 'unclassified', 'road', 'service', 'pedestrian', 'raceway', 'living_street', 'construction') + AND (name IS NOT NULL + OR oneway IN ('yes', '-1') + OR junction IN ('roundabout')) + ) AS roads_text_name + properties: + minzoom: 13 + advanced: {} + - id: "paths-text-name" + name: "paths-text-name" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + highway, + name + FROM planet_osm_line + WHERE highway IN ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') + AND name IS NOT NULL + ) AS paths_text_name + properties: + minzoom: 15 + advanced: {} + - id: "text-poly-low-zoom" + name: "text-poly-low-zoom" + class: "text-low-zoom" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, + COALESCE( + 'landuse_' || CASE WHEN landuse IN ('forest', 'military') THEN landuse ELSE NULL END, + 'natural_' || CASE WHEN "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock') THEN "natural" ELSE NULL END, + 'place_' || CASE WHEN place IN ('island') THEN place ELSE NULL END, + 'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END, + 'leisure_' || CASE WHEN leisure IN ('nature_reserve') THEN leisure ELSE NULL END + ) AS feature, + name, + CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building -- always no with the where conditions + FROM planet_osm_polygon + WHERE (landuse IN ('forest', 'military') + OR "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock') + OR "place" IN ('island') + OR boundary IN ('national_park') + OR leisure IN ('nature_reserve')) + AND building IS NULL + AND name IS NOT NULL + ORDER BY way_area DESC + ) AS text_poly_low_zoom + properties: + minzoom: 7 + maxzoom: 9 + advanced: {} + - id: "text-poly" + name: "text-poly" + class: "text" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + # Include values that are rendered as icon without label to prevent mismatch between icons and labels, + # see https://github.com/gravitystorm/openstreetmap-carto/pull/1349#issuecomment-77805678 + table: |- + (SELECT + way, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, + COALESCE( + 'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END, + 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', + 'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END, + 'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', + 'theatre', 'courthouse', 'townhall', 'cinema', 'clinic', 'community_centre', 'parking', + 'bicycle_parking', 'motorcycle_parking', 'police', 'fire_station', 'fountain', 'place_of_worship', + 'grave_yard', 'shelter', 'bank', 'embassy', 'fuel', 'bus_station', 'prison', 'university', + 'school', 'college', 'kindergarten', 'hospital', 'ice_cream', 'pharmacy', 'doctors', 'dentist', + 'atm', 'bicycle_rental', 'car_rental', 'car_wash', 'post_box', 'post_office', + 'recycling', 'telephone', 'emergency_phone', 'toilets', 'taxi', 'drinking_water', 'hunting_stand', + 'nightclub', 'veterinary', 'social_facility', 'charging_station') THEN amenity ELSE NULL END, + 'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', + 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', + 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', + 'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', + 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', + 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', + 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop + WHEN shop IN ('accessories', 'antiques', 'appliance', 'baby_goods', 'bathroom_furnishing', 'bed', + 'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', 'carpet', 'charity', + 'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', + 'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 'fabric', 'fishing', + 'flooring', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'gallery', 'games', 'gas', + 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hobby', 'household', + 'houseware', 'hunting', 'interior_decoration', 'kitchen', 'leather', 'lighting', 'locksmith', + 'lottery', 'market', 'massage', 'medical', 'medical_supply', 'money_lender', 'motorcycle_repair', 'music', + 'office_supplies', 'organic', 'paint', 'pastry', 'pawnbroker', 'phone', 'pottery', + 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'second_hand', + 'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo', + 'ticket', 'tiles', 'trade', 'tyres', 'vacuum_cleaner', 'video', 'video_games', 'watches', 'wholesale', + 'yes') THEN 'other' ELSE NULL END, + 'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', + 'pitch', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', + 'picnic_table', 'dog_park') THEN leisure ELSE NULL END, + 'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END, + 'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', + 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', + 'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', + 'construction', 'military') THEN landuse ELSE NULL END, + 'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk') THEN man_made ELSE NULL END, + 'natural_' || CASE WHEN "natural" IN ('wood', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath', + 'grassland', 'scrub', 'beach', 'shoal', 'reef', 'glacier') THEN "natural" ELSE NULL END, + 'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END, + 'military_' || CASE WHEN military IN ('danger_area') THEN military ELSE NULL END, + 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END, + 'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford') THEN highway ELSE NULL END, + 'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END, + 'waterway_' || CASE WHEN waterway IN ('dam') THEN waterway ELSE NULL END, + 'tourism_' || CASE WHEN tourism IN ('viewpoint', 'attraction') THEN tourism ELSE NULL END + ) AS feature, + access, + name, + operator, + ref, + way_area, + CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building + FROM planet_osm_polygon + -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering + WHERE (aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') + OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', + 'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site') + OR amenity IS NOT NULL -- skip checking a huge list and use a null check + OR shop IS NOT NULL + OR leisure IS NOT NULL + OR landuse IS NOT NULL + OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk') + OR "natural" IS NOT NULL + OR place IN ('island', 'islet') + OR military IN ('danger_area') + OR historic IN ('memorial', 'monument', 'archaeological_site') + OR highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford') + OR power IN ('plant', 'station', 'generator', 'sub_station', 'substation') + OR boundary IN ('national_park') + OR waterway = 'dam') + AND (name IS NOT NULL + OR (ref IS NOT NULL AND aeroway IN ('gate')) + ) + ORDER BY way_area DESC + ) AS text_poly + properties: + minzoom: 10 + advanced: {} + - id: "text-line" + name: "text-line" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + NULL as way_pixels, + COALESCE('man_made_' || man_made, 'waterway_' || waterway, 'natural_' || "natural") AS feature, + access, + name, + operator, + ref, + NULL AS way_area, + CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building + FROM planet_osm_line + WHERE (man_made IN ('pier', 'breakwater', 'groyne', 'embankment') + OR waterway IN ('dam', 'weir') + OR "natural" IN ('cliff')) + AND name IS NOT NULL + ) AS text_line + advanced: {} + properties: + minzoom: 10 + - id: "text-point" + name: "text-point" + class: "text" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + # Include values that are rendered as icon without label to prevent mismatch between icons and labels, + # see https://github.com/gravitystorm/openstreetmap-carto/pull/1349#issuecomment-77805678 + table: |- + (SELECT + way, + way_pixels, + feature, + access, + CONCAT( + name, + CASE WHEN name IS NOT NULL AND elevation IS NOT NULL THEN E'\n' ELSE NULL END, + CASE WHEN elevation IS NOT NULL THEN CONCAT(REPLACE(ROUND(elevation)::TEXT, '-', U&'\2212'), U&'\00A0', 'm') ELSE NULL END + ) AS name, + CASE + WHEN "natural" IN ('peak', 'volcano', 'saddle') THEN elevation + ELSE NULL + END AS score, + operator, + ref, + way_area, + is_building + FROM + (SELECT + way, + NULL AS way_pixels, + COALESCE( + 'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END, + 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', + 'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END, + 'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 'theatre', + 'courthouse', 'townhall', 'cinema', 'clinic', 'community_centre', 'parking', 'bicycle_parking', + 'motorcycle_parking', 'police', 'fire_station', 'fountain', 'place_of_worship', 'grave_yard', 'shelter', 'bank', + 'embassy', 'fuel', 'bus_station', 'prison', 'university', 'school', 'college', 'kindergarten', 'hospital', + 'ice_cream', 'pharmacy', 'doctors', 'dentist', 'atm', 'bicycle_rental', 'car_rental', + 'car_wash', 'post_box', 'post_office', 'recycling', 'telephone', 'emergency_phone', 'toilets', 'taxi', + 'drinking_water', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility', + 'charging_station') THEN amenity ELSE NULL END, + 'shop_' || CASE WHEN shop IN ('supermarket', 'bag','bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 'fashion', + 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', 'hairdresser', + 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', 'photography', + 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', 'musical_instrument', + 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', + 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', + 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop + WHEN shop IN ('accessories', 'antiques', 'appliance', + 'baby_goods', 'bathroom_furnishing', 'bed', 'boat', 'bookmaker', 'boutique', 'builder', + 'building_materials', 'camera', 'car_service', 'carpet', 'charity', 'cheese', 'chocolate', 'coffee', + 'communication', 'craft', 'curtain', 'dairy', 'discount', + 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 'fabric', 'fishing', 'flooring', + 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'gallery', 'games', 'gas', + 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hobby', 'household', + 'houseware', 'hunting', 'interior_decoration', 'kitchen', 'leather', 'lighting', 'locksmith', + 'lottery', 'market', 'massage', 'medical', 'medical_supply', 'money_lender', 'motorcycle_repair', 'music', + 'office_supplies', 'organic', 'paint', 'pastry', 'pawnbroker', 'phone', 'pottery', + 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'second_hand', + 'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo', + 'ticket', 'tiles', 'trade', 'tyres', 'vacuum_cleaner', 'video', 'video_games', 'watches', + 'wholesale', 'yes') THEN 'other' ELSE NULL END, + 'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', + 'pitch','playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', + 'slipway', 'picnic_table', 'dog_park') THEN leisure ELSE NULL END, + 'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END, + 'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', + 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', + 'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', + 'construction', 'military') THEN landuse ELSE NULL END, + 'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'obelisk') THEN man_made ELSE NULL END, + 'natural_' || CASE WHEN "natural" IN ('wood', 'peak', 'volcano', 'saddle', 'cave_entrance', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', + 'scree', 'shingle', 'bare_rock', 'sand', 'heath', 'grassland', 'scrub', 'beach', 'glacier', 'tree') + THEN "natural" ELSE NULL END, + 'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END, + 'military_' || CASE WHEN military IN ('danger_area') THEN military ELSE NULL END, + 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END, + 'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford') THEN highway ELSE NULL END, + 'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END, + 'waterway_' || CASE WHEN waterway IN ('dam', 'weir') THEN waterway ELSE NULL END, + 'tourism_' || CASE WHEN tourism IN ('viewpoint', 'attraction') THEN tourism ELSE NULL END, + 'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END, + 'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END + ) AS feature, + access, + name, + CASE + WHEN "natural" IN ('peak', 'volcano', 'saddle') OR tourism = 'alpine_hut' OR amenity = 'shelter' THEN + CASE + WHEN ele ~ '^-?\d{1,4}(\.\d+)?$' THEN ele::NUMERIC + ELSE NULL + END + ELSE NULL + END AS elevation, + "natural", + operator, + ref, + NULL AS way_area, + CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building + FROM planet_osm_point + -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering + WHERE (aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') + OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', + 'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site') + OR amenity IS NOT NULL -- skip checking a huge list and use a null check + OR shop IS NOT NULL + OR leisure IS NOT NULL + OR landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', + 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'greenhouse_horticulture', + 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military') + OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'cross', 'obelisk') + OR "natural" IS NOT NULL + OR place IN ('island', 'islet') + OR military IN ('danger_area') + OR historic IN ('memorial', 'monument', 'archaeological_site', 'wayside_cross') + OR highway IN ('bus_stop', 'services', 'rest_area', 'elevator', 'ford') + OR power IN ('plant', 'station', 'generator', 'sub_station', 'substation') + OR boundary IN ('national_park') + OR waterway IN ('dam', 'weir')) + AND (name IS NOT NULL + OR (ele IS NOT NULL AND ("natural" IN ('peak', 'volcano', 'saddle') OR tourism = 'alpine_hut' OR amenity = 'shelter')) + OR (ref IS NOT NULL AND aeroway IN ('gate')) + ) + ) AS p + ORDER BY score DESC NULLS LAST + ) AS text + properties: + minzoom: 10 + advanced: {} + - id: "building-text" + name: "building-text" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + name, + way, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels + FROM planet_osm_polygon + WHERE building IS NOT NULL + AND building NOT IN ('no') + AND name IS NOT NULL + ORDER BY way_area DESC + ) AS building_text + properties: + minzoom: 14 + advanced: {} + - id: "interpolation" + name: "interpolation" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way + FROM planet_osm_line + WHERE "addr:interpolation" IS NOT NULL + ) AS interpolation + properties: + minzoom: 17 + advanced: {} + - id: "addresses" + name: "addresses" + class: "" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + "addr:housenumber" AS addr_housenumber, + "addr:housename" AS addr_housename, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels + FROM planet_osm_polygon + WHERE (("addr:housenumber" IS NOT NULL) OR ("addr:housename" IS NOT NULL)) + AND building IS NOT NULL + UNION ALL + SELECT + way, + "addr:housenumber" AS addr_housenumber, + "addr:housename" AS addr_housename, + NULL AS way_pixels + FROM planet_osm_point + WHERE ("addr:housenumber" IS NOT NULL) OR ("addr:housename" IS NOT NULL) + ORDER BY way_pixels DESC NULLS LAST + ) AS addresses + properties: + minzoom: 17 + advanced: {} + - id: "water-lines-text" + name: "water-lines-text" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + waterway, + lock, + name, + intermittent, + CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel + FROM planet_osm_line + WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi') + AND (tunnel IS NULL or tunnel != 'culvert') + AND name IS NOT NULL + ORDER BY z_order + ) AS water_lines_text + properties: + minzoom: 13 + advanced: {} + - id: "ferry-routes-text" + name: "ferry-routes-text" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + name + FROM planet_osm_line + WHERE route = 'ferry' + AND name IS NOT NULL + ) AS ferry_routes_text + properties: + minzoom: 13 + advanced: {} + - id: "admin-text" + name: "admin-text" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + name, + admin_level + FROM planet_osm_polygon + WHERE boundary = 'administrative' + AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10') + AND name IS NOT NULL + ORDER BY admin_level::integer ASC, way_area DESC + ) AS admin_text + properties: + minzoom: 16 + advanced: {} + - id: "nature-reserve-text" + name: "nature-reserve-text" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + name, + way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels + FROM planet_osm_polygon + WHERE (boundary = 'national_park' OR leisure = 'nature_reserve') + AND name IS NOT NULL + ) AS nature_reserve_text + properties: + minzoom: 13 + advanced: {} + - id: "amenity-low-priority" + name: "amenity-low-priority" + class: "amenity-low-priority" + geometry: "point" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + COALESCE( + 'highway_' || CASE WHEN highway IN ('mini_roundabout') THEN highway ELSE NULL END, + 'railway_' || CASE WHEN railway IN ('level_crossing', 'crossing') THEN railway ELSE NULL END, + 'amenity_' || CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'bench', 'waste_basket') THEN amenity ELSE NULL END, + 'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END, + 'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END, + 'barrier_' || CASE WHEN barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') THEN barrier ELSE NULL END + ) AS feature, + access, + CASE WHEN amenity='waste_basket' THEN 2 ELSE 1 END AS prio + FROM planet_osm_point p + WHERE highway IN ('mini_roundabout') + OR railway IN ('level_crossing', 'crossing') + OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'bench', 'waste_basket') + OR historic IN ('wayside_cross') + OR man_made IN ('cross') + OR barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') + ORDER BY prio + ) AS amenity_low_priority + properties: + minzoom: 14 + advanced: {} + - id: "amenity-low-priority-poly" + name: "amenity-low-priority-poly" + class: "amenity-low-priority" + geometry: "polygon" + <<: *extents + Datasource: + <<: *osm2pgsql + table: |- + (SELECT + way, + COALESCE( + 'amenity_' || CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking') THEN amenity ELSE NULL END, + 'barrier_' || CASE WHEN barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') THEN barrier ELSE NULL END + ) AS feature, + access + FROM planet_osm_polygon p + WHERE amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking') + OR barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') + ) AS amenity_low_priority_poly + properties: + minzoom: 14 + advanced: {} diff --git a/project.yaml b/project.yaml deleted file mode 100644 index 29aa170535..0000000000 --- a/project.yaml +++ /dev/null @@ -1,2565 +0,0 @@ -scale: 1 -metatile: 2 -name: "OpenStreetMap Carto" -description: "A general-purpose OpenStreetMap mapnik style, in CartoCSS" -bounds: &world - - -180 - - -85.05112877980659 - - 180 - - 85.05112877980659 -center: - - 0 - - 0 - - 4 -format: "png" -interactivity: false -minzoom: 0 -maxzoom: 22 -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" - -# Various parts to be included later on -_parts: - # Extents are used for tilemill, and don't actually make it to the generated XML - extents: &extents - extent: *world - srs-name: "900913" - 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" - extents84: &extents84 - extent: *world - srs-name: "WGS84" - srs: "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs" - osm2pgsql: &osm2pgsql - type: "postgis" - dbname: "gis" - key_field: "" - geometry_field: "way" - extent: "-20037508,-20037508,20037508,20037508" - -Stylesheet: - - "style.mss" - - "shapefiles.mss" - - "landcover.mss" - - "water.mss" - - "water-features.mss" - - "road-colors-generated.mss" - - "roads.mss" - - "power.mss" - - "placenames.mss" - - "buildings.mss" - - "stations.mss" - - "amenity-points.mss" - - "ferry-routes.mss" - - "aerialways.mss" - - "admin.mss" - - "addressing.mss" -Layer: - - id: "world" - name: "world" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - file: "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp" - type: "shape" - advanced: {} - properties: - maxzoom: 9 - - id: "coast-poly" - name: "coast-poly" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - file: "data/land-polygons-split-3857/land_polygons.shp" - type: "shape" - properties: - minzoom: 10 - advanced: {} - - id: "builtup" - name: "builtup" - geometry: "polygon" - class: "" - extent: *world - srs-name: "mercator" - srs: "+proj=merc +datum=WGS84 +over" - Datasource: - file: "data/world_boundaries/builtup_area.shp" - type: "shape" - properties: - minzoom: 8 - maxzoom: 9 - advanced: {} - - id: "necountries" - name: "necountries" - class: "" - geometry: "linestring" - <<: *extents84 - Datasource: - file: "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp" - type: "shape" - properties: - minzoom: 1 - maxzoom: 3 - advanced: {} - - id: "landcover-low-zoom" - name: "landcover-low-zoom" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, name, way_pixels, - COALESCE(wetland, landuse, "natural") AS feature - FROM (SELECT - way, COALESCE(name, '') AS name, - ('landuse_' || (CASE WHEN landuse IN ('forest', 'military') THEN landuse ELSE NULL END)) AS landuse, - ('natural_' || (CASE WHEN "natural" IN ('wood', 'sand', 'scree', 'shingle', 'bare_rock') THEN "natural" ELSE NULL END)) AS "natural", - ('wetland_' || (CASE WHEN "natural" IN ('wetland', 'mud') THEN (CASE WHEN "natural" IN ('mud') THEN "natural" ELSE wetland END) ELSE NULL END)) AS wetland, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels - FROM planet_osm_polygon - WHERE (landuse IN ('forest', 'military') - OR "natural" IN ('wood', 'wetland', 'mud', 'sand', 'scree', 'shingle', 'bare_rock')) - AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real - AND building IS NULL - ORDER BY CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END, way_area DESC - ) AS features - ) AS landcover_low_zoom - properties: - minzoom: 7 - maxzoom: 9 - advanced: {} - - id: "landcover" - name: "landcover" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, name, religion, way_pixels, - COALESCE(aeroway, amenity, wetland, power, landuse, leisure, military, "natural", tourism, highway, railway) AS feature - FROM (SELECT - way, COALESCE(name, '') AS name, - ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway ELSE NULL END)) AS aeroway, - ('amenity_' || (CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', - 'hospital', 'kindergarten', 'grave_yard', 'prison', 'place_of_worship', 'clinic') - THEN amenity ELSE NULL END)) AS amenity, - ('landuse_' || (CASE WHEN landuse IN ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', - 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'greenhouse_horticulture', - 'recreation_ground', 'village_green', 'retail', 'industrial', 'railway', 'commercial', - 'brownfield', 'landfill', 'construction') THEN landuse ELSE NULL END)) AS landuse, - ('leisure_' || (CASE WHEN leisure IN ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', - 'golf_course', 'miniature_golf', 'picnic_table', 'sports_centre', 'stadium', 'pitch', - 'track', 'dog_park') THEN leisure ELSE NULL END)) AS leisure, - ('military_' || (CASE WHEN military IN ('danger_area') THEN military ELSE NULL END)) AS military, - ('natural_' || (CASE WHEN "natural" IN ('beach', 'shoal', 'heath', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub') THEN "natural" ELSE NULL END)) AS "natural", - ('wetland_' || (CASE WHEN "natural" IN ('wetland', 'marsh', 'mud') THEN (CASE WHEN "natural" IN ('marsh', 'mud') THEN "natural" ELSE wetland END) ELSE NULL END)) AS wetland, - ('power_' || (CASE WHEN power IN ('station', 'sub_station', 'substation', 'generator') THEN power ELSE NULL END)) AS power, - ('tourism_' || (CASE WHEN tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site') THEN tourism ELSE NULL END)) AS tourism, - ('highway_' || (CASE WHEN highway IN ('services', 'rest_area') THEN highway ELSE NULL END)) AS highway, - ('railway_' || (CASE WHEN railway = 'station' THEN railway ELSE NULL END)) AS railway, - CASE WHEN religion IN ('christian', 'jewish') THEN religion ELSE 'INT-generic'::text END AS religion, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels - FROM planet_osm_polygon - WHERE (landuse IS NOT NULL - OR leisure IS NOT NULL - OR aeroway IN ('apron', 'aerodrome') - OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', 'hospital', 'kindergarten', - 'grave_yard', 'place_of_worship', 'prison', 'clinic') - OR military IN ('danger_area') - OR "natural" IN ('beach', 'shoal', 'heath', 'mud', 'marsh', 'wetland', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub') - OR power IN ('station', 'sub_station', 'substation', 'generator') - OR tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site') - OR highway IN ('services', 'rest_area') - OR railway = 'station') - AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real - ORDER BY CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END, way_area DESC - ) AS landcover - ) AS features - properties: - minzoom: 10 - advanced: {} - - id: "landcover-line" - name: "landcover-line" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way - FROM planet_osm_line - WHERE man_made = 'cutline' - ) AS landcover_line - advanced: {} - properties: - minzoom: 14 - - id: "water-lines-casing" - name: "water-lines-casing" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, waterway, intermittent, - CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel - FROM planet_osm_line - WHERE waterway IN ('stream', 'drain', 'ditch') - ) AS water_lines_casing - properties: - minzoom: 13 - advanced: {} - - id: "water-lines-low-zoom" - name: "water-lines-low-zoom" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - waterway, - intermittent - FROM planet_osm_line - WHERE waterway = 'river' - ) AS water_lines_low_zoom - properties: - minzoom: 8 - maxzoom: 11 - advanced: {} - - id: "icesheet-poly" - name: "icesheet-poly" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - file: "data/antarctica-icesheet-polygons-3857/icesheet_polygons.shp" - type: "shape" - properties: - minzoom: 4 - advanced: {} - - id: "water-areas" - name: "water-areas" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - "natural", - waterway, - landuse, - name, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels - FROM planet_osm_polygon - WHERE - (waterway IN ('dock', 'riverbank', 'canal') - OR landuse IN ('reservoir', 'basin') - OR "natural" IN ('water', 'glacier')) - AND building IS NULL - AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real - ORDER BY z_order, way_area DESC - ) AS water_areas - properties: - minzoom: 4 - advanced: {} - - id: "landcover-area-symbols" - name: "landcover-area-symbols" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, surface, - COALESCE(CASE WHEN landuse = 'forest' THEN 'wood' ELSE NULL END, "natural") AS "natural", - CASE WHEN "natural" IN ('marsh', 'mud') - THEN "natural" - ELSE CASE WHEN ("natural" = 'wetland' AND wetland IS NULL) - THEN 'wetland' - ELSE CASE WHEN ("natural" = 'wetland') - THEN wetland - ELSE NULL - END - END - END AS int_wetland - FROM planet_osm_polygon - WHERE ("natural" IN ('marsh', 'mud', 'wetland', 'wood', 'beach', 'shoal', 'reef') OR landuse = 'forest') - AND building IS NULL - AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real - ORDER BY z_order, way_area DESC - ) AS landcover_area_symbols - properties: - minzoom: 10 - advanced: {} - - id: "icesheet-outlines" - name: "icesheet-outlines" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - file: "data/antarctica-icesheet-outlines-3857/icesheet_outlines.shp" - type: "shape" - properties: - minzoom: 4 - advanced: {} - - id: "water-lines" - name: "water-lines" - class: "water-lines" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, waterway, name, intermittent, - CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel, - 'no' AS bridge - FROM planet_osm_line - WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi') - AND (bridge IS NULL OR bridge NOT IN ('yes', 'aqueduct')) - ORDER BY z_order - ) AS water_lines - properties: - minzoom: 12 - advanced: {} - - id: "water-barriers-line" - name: "water-barriers-line" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - waterway, - name - FROM planet_osm_line - WHERE waterway IN ('dam', 'weir', 'lock_gate') - ) AS water_barriers_line - advanced: {} - properties: - minzoom: 13 - - id: "water-barriers-poly" - name: "water-barriers-poly" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - waterway, - name - FROM planet_osm_polygon - WHERE waterway IN ('dam', 'weir', 'lock_gate') - ) AS water_barriers_poly - advanced: {} - properties: - minzoom: 13 - - id: "marinas-area" - name: "marinas-area" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way - FROM planet_osm_polygon - WHERE leisure = 'marina' - ) AS marinas_area - properties: - minzoom: 14 - advanced: {} - - id: "piers-poly" - name: "piers-poly" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, man_made - FROM planet_osm_polygon - WHERE man_made IN ('pier', 'breakwater', 'groyne') - ) AS piers_poly - properties: - minzoom: 12 - advanced: {} - - id: "piers-line" - name: "piers-line" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, man_made - FROM planet_osm_line - WHERE man_made IN ('pier', 'breakwater', 'groyne') - ) AS piers_line - properties: - minzoom: 12 - advanced: {} - - id: "water-barriers-point" - name: "water-barriers-point" - class: "" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, waterway - FROM planet_osm_point - WHERE waterway IN ('dam', 'weir', 'lock_gate') - ) AS water_barriers_points - properties: - minzoom: 17 - advanced: {} - - id: "bridge" - name: "bridge" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, - man_made, - name - FROM planet_osm_polygon - WHERE man_made = 'bridge' - ) AS bridge - properties: - minzoom: 12 - advanced: {} - - id: "buildings" - name: "buildings" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - building - FROM planet_osm_polygon - WHERE building IS NOT NULL - AND building != 'no' - AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real - ORDER BY z_order, way_area DESC - ) AS buildings - properties: - minzoom: 13 - advanced: {} - - id: "buildings-major" - name: "buildings-major" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - building, - amenity, - aeroway - FROM planet_osm_polygon - WHERE building IS NOT NULL - AND building != 'no' - AND (aeroway = 'terminal' OR amenity = 'place_of_worship') - AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real - ORDER BY z_order, way_area DESC) - AS buildings_major - properties: - minzoom: 13 - advanced: {} - - id: "tunnels" - name: "tunnels" - class: "tunnels-fill tunnels-casing access" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - # This query is quite large, having to deal with both roads, railways and - # runways. To allow for ways that are both railways and roads, a UNION - # ALL is present, and to use an ordering different than current osm2pgsql - # an order is generated in SQL. - table: |- - (SELECT - way, - (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature, - horse, - foot, - bicycle, - tracktype, - int_surface, - access, - construction, - service, - link, - layernotnull - FROM ( -- subselect that contains both roads and rail/aero - SELECT - way, - ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on - horse, - foot, - bicycle, - tracktype, - CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground', - 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved' - WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', - 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved' - ELSE NULL - END AS int_surface, - CASE WHEN access IN ('destination') THEN 'destination'::text - WHEN access IN ('no', 'private') THEN 'no'::text - ELSE NULL - END AS access, - construction, - CASE - WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text - ELSE 'INT-normal'::text - END AS service, - CASE - WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' - ELSE 'no' - END AS link, - CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull - FROM planet_osm_line - WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') - AND highway IS NOT NULL -- end of road select - UNION ALL - SELECT - way, - COALESCE( - ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text - WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' - WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)), - ('aeroway_' || aeroway) - ) AS feature, - horse, - foot, - bicycle, - tracktype, - 'null', - CASE - WHEN access IN ('destination') THEN 'destination'::text - WHEN access IN ('no', 'private') THEN 'no'::text - ELSE NULL - END AS access, - construction, - CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service, - 'no' AS link, - CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull - FROM planet_osm_line - WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') - AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select - ) AS features - JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results. - ('railway_rail', 440), - ('railway_INT-preserved-ssy', 430), - ('railway_INT-spur-siding-yard', 430), - ('railway_subway', 420), - ('railway_narrow_gauge', 420), - ('railway_light_rail', 420), - ('railway_preserved', 420), - ('railway_funicular', 420), - ('railway_monorail', 420), - ('railway_miniature', 420), - ('railway_turntable', 420), - ('railway_tram', 410), - ('railway_tram-service', 405), - ('railway_disused', 400), - ('railway_construction', 400), - ('highway_motorway', 380), - ('highway_trunk', 370), - ('highway_primary', 360), - ('highway_secondary', 350), - ('highway_tertiary', 340), - ('highway_residential', 330), - ('highway_unclassified', 330), - ('highway_road', 330), - ('highway_living_street', 320), - ('highway_pedestrian', 310), - ('highway_raceway', 300), - ('highway_motorway_link', 240), - ('highway_trunk_link', 230), - ('highway_primary_link', 220), - ('highway_secondary_link', 210), - ('highway_tertiary_link', 200), - ('highway_service', 150), - ('highway_track', 110), - ('highway_path', 100), - ('highway_footway', 100), - ('highway_bridleway', 100), - ('highway_cycleway', 100), - ('highway_steps', 100), - ('highway_platform', 90), - ('railway_platform', 90), - ('aeroway_runway', 60), - ('aeroway_taxiway', 50), - ('highway_construction', 10) - ) AS ordertable (feature, prio) - USING (feature) - ORDER BY - layernotnull, - prio, - CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END, - CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END - ) AS tunnels - properties: - group-by: "layernotnull" - minzoom: 9 - advanced: {} - - id: "landuse-overlay" - name: "landuse-overlay" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - landuse, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels - FROM planet_osm_polygon - WHERE landuse = 'military' - AND building IS NULL - ) AS landuse_overlay - properties: - minzoom: 7 - advanced: {} - - id: "line-barriers" - name: "line-barriers" - class: "barriers" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, COALESCE(historic, barrier) AS feature - FROM (SELECT way, - ('barrier_' || (CASE WHEN barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail', - 'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall') THEN barrier ELSE NULL END)) AS barrier, - ('historic_' || (CASE WHEN historic = 'citywalls' THEN historic ELSE NULL END)) AS historic - FROM planet_osm_line - WHERE barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail', - 'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall') - OR historic = 'city_wall' - AND (waterway IS NULL OR waterway NOT IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')) - ) AS features - ) AS line_barriers - properties: - minzoom: 14 - advanced: {} - - id: "cliffs" - name: "cliffs" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, "natural", man_made - FROM planet_osm_line - WHERE "natural" = 'cliff' OR man_made = 'embankment' - ) AS cliffs - properties: - minzoom: 13 - advanced: {} - - id: "area-barriers" - name: "area-barriers" - class: "barriers" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, barrier AS feature - FROM (SELECT way, - ('barrier_' || barrier) AS barrier - FROM planet_osm_polygon - WHERE barrier IS NOT NULL - ) AS features - ) AS area_barriers - properties: - minzoom: 16 - advanced: {} - - id: "ferry-routes" - name: "ferry-routes" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way - FROM planet_osm_line - WHERE route = 'ferry' - ) AS ferry_routes - properties: - minzoom: 7 - advanced: {} - - id: "turning-circle-casing" - name: "turning-circle-casing" - class: "" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT DISTINCT ON (p.way) - p.way AS way, l.highway AS int_tc_type, - CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway') - THEN 'INT-minor'::text - ELSE 'INT-normal'::text - END AS int_tc_service - FROM planet_osm_point p - JOIN planet_osm_line l ON ST_DWithin(p.way, l.way, 0.1) -- Assumes Mercator - JOIN (VALUES - ('tertiary', 1), - ('unclassified', 2), - ('residential', 3), - ('living_street', 4), - ('service', 5) - ) AS v (highway, prio) - ON v.highway=l.highway - WHERE p.highway = 'turning_circle' - OR p.highway = 'turning_loop' - ORDER BY p.way, v.prio - ) AS turning_circle_casing - properties: - minzoom: 15 - advanced: {} - - id: "highway-area-casing" - name: "highway-area-casing" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - COALESCE(( - 'highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'track', 'path', 'platform') THEN highway ELSE NULL END)), - ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END)) - ) AS feature - FROM planet_osm_polygon - WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform') - OR railway IN ('platform') - ORDER BY z_order, way_area DESC - ) AS highway_area_casing - properties: - minzoom: 14 - advanced: {} - - name: "roads-casing" - id: "roads-casing" - class: "roads-casing" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature, - horse, - foot, - bicycle, - tracktype, - int_surface, - access, - construction, - service, - link, - layernotnull - FROM ( -- subselect that contains both roads and rail/aero - SELECT - way, - ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on - horse, - foot, - bicycle, - tracktype, - CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground', - 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved' - WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', - 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved' - ELSE NULL - END AS int_surface, - CASE WHEN access IN ('destination') THEN 'destination'::text - WHEN access IN ('no', 'private') THEN 'no'::text - ELSE NULL - END AS access, - construction, - CASE - WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text - ELSE 'INT-normal'::text - END AS service, - CASE - WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' - ELSE 'no' - END AS link, - CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull - FROM planet_osm_line - WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) - AND (covered IS NULL OR NOT covered = 'yes') - AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')) - AND highway IS NOT NULL -- end of road select - UNION ALL - SELECT - way, - COALESCE( - ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text - WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' - WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)), - ('aeroway_' || aeroway) - ) AS feature, - horse, - foot, - bicycle, - tracktype, - 'null', - CASE - WHEN access IN ('destination') THEN 'destination'::text - WHEN access IN ('no', 'private') THEN 'no'::text - ELSE NULL - END AS access, - construction, - CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service, - 'no' AS link, - CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull - FROM planet_osm_line - WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) - AND (covered IS NULL OR NOT covered = 'yes') - AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')) - AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select - ) AS features - JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results. - ('railway_rail', 440), - ('railway_INT-preserved-ssy', 430), - ('railway_INT-spur-siding-yard', 430), - ('railway_subway', 420), - ('railway_narrow_gauge', 420), - ('railway_light_rail', 420), - ('railway_preserved', 420), - ('railway_funicular', 420), - ('railway_monorail', 420), - ('railway_miniature', 420), - ('railway_turntable', 420), - ('railway_tram', 410), - ('railway_tram-service', 405), - ('railway_disused', 400), - ('railway_construction', 400), - ('highway_motorway', 380), - ('highway_trunk', 370), - ('highway_primary', 360), - ('highway_secondary', 350), - ('highway_tertiary', 340), - ('highway_residential', 330), - ('highway_unclassified', 330), - ('highway_road', 330), - ('highway_living_street', 320), - ('highway_pedestrian', 310), - ('highway_raceway', 300), - ('highway_motorway_link', 240), - ('highway_trunk_link', 230), - ('highway_primary_link', 220), - ('highway_secondary_link', 210), - ('highway_tertiary_link', 200), - ('highway_service', 150), - ('highway_track', 110), - ('highway_path', 100), - ('highway_footway', 100), - ('highway_bridleway', 100), - ('highway_cycleway', 100), - ('highway_steps', 100), - ('highway_platform', 90), - ('railway_platform', 90), - ('aeroway_runway', 60), - ('aeroway_taxiway', 50), - ('highway_construction', 10) - ) AS ordertable (feature, prio) - USING (feature) - ORDER BY - layernotnull, - prio, - CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END, - CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END - ) AS roads_casing - properties: - minzoom: 9 - advanced: {} - - id: "highway-area-fill" - name: "highway-area-fill" - class: "" - # FIXME: No geometry? - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - COALESCE( - ('highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', - 'track', 'path', 'platform', 'services') THEN highway ELSE NULL END)), - ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END)), - (('aeroway_' || CASE WHEN aeroway IN ('runway', 'taxiway', 'helipad') THEN aeroway ELSE NULL END)) - ) AS feature - FROM planet_osm_polygon - WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'living_street', 'track', 'path', 'platform', 'services') - OR railway IN ('platform') - OR aeroway IN ('runway', 'taxiway', 'helipad') - ORDER BY z_order, way_area desc - ) AS highway_area_fill - properties: - minzoom: 14 - advanced: {} - - id: "roads-fill" - name: "roads-fill" - class: "roads-fill access" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - # This is one of the most complex layers, so it bears explaining in some detail - # It is necessary to - # - Have roads and railways in the same layer to get ordering right - # - Return two linestrings for ways which are both a road and railway - # - Compute z_order here, rather than rely on osm2pgsql z_order - table: |- - (SELECT - way, - (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature, - horse, - foot, - bicycle, - tracktype, - int_surface, - access, - construction, - service, - link, - layernotnull - FROM ( -- begin "features" subselect that contains both roads and rail/aero - SELECT - way, - ('highway_' || highway) AS feature, -- only motorway to tertiary links are accepted later on - horse, - foot, - bicycle, - tracktype, - CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground', - 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved' - WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', - 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved' - ELSE NULL - END AS int_surface, - CASE WHEN access IN ('destination') THEN 'destination'::text - WHEN access IN ('no', 'private') THEN 'no'::text - ELSE NULL - END AS access, - construction, - CASE - WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text - ELSE 'INT-normal'::text - END AS service, - CASE - WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' - ELSE 'no' - END AS link, - CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull - FROM planet_osm_line - WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) - AND (covered IS NULL OR NOT covered = 'yes') - AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')) - AND highway IS NOT NULL -- end of road select - UNION ALL - SELECT - way, - COALESCE( - ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text - WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' - WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)), - ('aeroway_' || aeroway) - ) AS feature, - horse, - foot, - bicycle, - tracktype, - 'null' AS surface, -- Should be a SQL NULL? - CASE - WHEN access IN ('destination') THEN 'destination'::text - WHEN access IN ('no', 'private') THEN 'no'::text - ELSE NULL - END AS access, - construction, - CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service, - 'no' AS link, - CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull - FROM planet_osm_line - WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) - AND (covered IS NULL OR NOT covered = 'yes') - AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')) - AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select - ) AS features - JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results. - ('railway_rail', 440), - ('railway_INT-preserved-ssy', 430), - ('railway_INT-spur-siding-yard', 430), - ('railway_subway', 420), - ('railway_narrow_gauge', 420), - ('railway_light_rail', 420), - ('railway_preserved', 420), - ('railway_funicular', 420), - ('railway_monorail', 420), - ('railway_miniature', 420), - ('railway_turntable', 420), - ('railway_tram', 410), - ('railway_tram-service', 405), - ('railway_disused', 400), - ('railway_construction', 400), - ('highway_motorway', 380), - ('highway_trunk', 370), - ('highway_primary', 360), - ('highway_secondary', 350), - ('highway_tertiary', 340), - ('highway_residential', 330), - ('highway_unclassified', 330), - ('highway_road', 330), - ('highway_living_street', 320), - ('highway_pedestrian', 310), - ('highway_raceway', 300), - ('highway_motorway_link', 240), - ('highway_trunk_link', 230), - ('highway_primary_link', 220), - ('highway_secondary_link', 210), - ('highway_tertiary_link', 200), - ('highway_service', 150), - ('highway_track', 110), - ('highway_path', 100), - ('highway_footway', 100), - ('highway_bridleway', 100), - ('highway_cycleway', 100), - ('highway_steps', 100), - ('highway_platform', 90), - ('railway_platform', 90), - ('aeroway_runway', 60), - ('aeroway_taxiway', 50), - ('highway_construction', 10) - ) AS ordertable (feature, prio) - USING (feature) - ORDER BY - layernotnull, - prio, - CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END, - CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END - ) AS roads_fill - properties: - minzoom: 10 - advanced: {} - - id: "turning-circle-fill" - name: "turning-circle-fill" - class: "" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - DISTINCT on (p.way) - p.way AS way, l.highway AS int_tc_type, - CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text - ELSE 'INT-normal'::text END AS int_tc_service - FROM planet_osm_point p - JOIN planet_osm_line l - ON ST_DWithin(p.way, l.way, 0.1) - JOIN (VALUES - ('tertiary', 1), - ('unclassified', 2), - ('residential', 3), - ('living_street', 4), - ('service', 5), - ('track', 6) - ) AS v (highway, prio) - ON v.highway=l.highway - WHERE p.highway = 'turning_circle' OR p.highway = 'turning_loop' - ORDER BY p.way, v.prio - ) AS turning_circle_fill - properties: - minzoom: 15 - advanced: {} - - id: "aerialways" - name: "aerialways" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - aerialway - FROM planet_osm_line - WHERE aerialway IS NOT NULL - ) AS aerialways - properties: - minzoom: 12 - advanced: {} - - id: "roads-low-zoom" - name: "roads-low-zoom" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - COALESCE( - ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway end)), - ('railway_' || (CASE WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' - WHEN railway IN ('rail', 'tram', 'light_rail', 'funicular', 'narrow_gauge') THEN railway ELSE NULL END)) - ) AS feature, - CASE WHEN tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes' THEN 'yes' ELSE 'no' END AS int_tunnel, - CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' ELSE 'no' END AS link, - CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground', - 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved' - WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', - 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved' - ELSE NULL - END AS int_surface - FROM planet_osm_roads - WHERE highway IS NOT NULL - OR (railway IS NOT NULL AND railway != 'preserved' - AND (service IS NULL OR service NOT IN ('spur', 'siding', 'yard'))) - ORDER BY z_order - ) AS roads_low_zoom - properties: - minzoom: 5 - maxzoom: 9 - advanced: {} - - id: "waterway-bridges" - name: "waterway-bridges" - class: "water-lines" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - waterway, - name, - intermittent, - CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel, - 'yes' AS bridge - FROM planet_osm_line - WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi') - AND bridge IN ('yes', 'aqueduct') - ORDER BY z_order - ) AS waterway_bridges - properties: - minzoom: 15 - advanced: {} - - id: "bridges" - name: "bridges" - class: "bridges-fill bridges-casing access" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature, - horse, - foot, - bicycle, - tracktype, - int_surface, - access, - construction, - service, - link, - layernotnull - FROM ( -- subselect that contains both roads and rail/aero - SELECT - way, - ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on - horse, - foot, - bicycle, - tracktype, - CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground', - 'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved' - WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', - 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved' - ELSE NULL - END AS int_surface, - CASE WHEN access IN ('destination') THEN 'destination'::text - WHEN access IN ('no', 'private') THEN 'no'::text - ELSE NULL - END AS access, - construction, - CASE - WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text - ELSE 'INT-normal'::text - END AS service, - CASE - WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' - ELSE 'no' - END AS link, - CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull - FROM planet_osm_line - WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct') - AND highway IS NOT NULL -- end of road select - UNION ALL - SELECT - way, - COALESCE( - ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text - WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' - WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)), - ('aeroway_' || aeroway) - ) AS feature, - horse, - foot, - bicycle, - tracktype, - 'null', - CASE - WHEN access IN ('destination') THEN 'destination'::text - WHEN access IN ('no', 'private') THEN 'no'::text - ELSE NULL - END AS access, - construction, - CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service, - 'no' AS link, - CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull - FROM planet_osm_line - WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct') - AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select - ) AS features - JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results. - ('railway_rail', 440), - ('railway_INT-preserved-ssy', 430), - ('railway_INT-spur-siding-yard', 430), - ('railway_subway', 420), - ('railway_narrow_gauge', 420), - ('railway_light_rail', 420), - ('railway_preserved', 420), - ('railway_funicular', 420), - ('railway_monorail', 420), - ('railway_miniature', 420), - ('railway_turntable', 420), - ('railway_tram', 410), - ('railway_tram-service', 405), - ('railway_disused', 400), - ('railway_construction', 400), - ('highway_motorway', 380), - ('highway_trunk', 370), - ('highway_primary', 360), - ('highway_secondary', 350), - ('highway_tertiary', 340), - ('highway_residential', 330), - ('highway_unclassified', 330), - ('highway_road', 330), - ('highway_living_street', 320), - ('highway_pedestrian', 310), - ('highway_raceway', 300), - ('highway_motorway_link', 240), - ('highway_trunk_link', 230), - ('highway_primary_link', 220), - ('highway_secondary_link', 210), - ('highway_tertiary_link', 200), - ('highway_service', 150), - ('highway_track', 110), - ('highway_path', 100), - ('highway_footway', 100), - ('highway_bridleway', 100), - ('highway_cycleway', 100), - ('highway_steps', 100), - ('highway_platform', 90), - ('railway_platform', 90), - ('aeroway_runway', 60), - ('aeroway_taxiway', 50), - ('highway_construction', 10) - ) AS ordertable (feature, prio) - USING (feature) - ORDER BY - layernotnull, - prio, - CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END, - CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END - ) AS bridges - properties: - group-by: "layernotnull" - minzoom: 9 - advanced: {} - - id: "guideways" - name: "guideways" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way - FROM planet_osm_line - WHERE highway = 'bus_guideway' - ) AS guideways - properties: - minzoom: 13 - advanced: {} - - name: "admin-low-zoom" - id: "admin-low-zoom" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - admin_level - FROM planet_osm_roads - WHERE boundary = 'administrative' - AND admin_level IN ('0', '1', '2', '3', '4') - AND osm_id < 0 - ORDER BY admin_level DESC - ) AS admin_low_zoom - properties: - minzoom: 4 - maxzoom: 10 - advanced: {} - - id: "admin-mid-zoom" - name: "admin-mid-zoom" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - admin_level - FROM planet_osm_roads - WHERE boundary = 'administrative' - AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8') - AND osm_id < 0 - ORDER BY admin_level DESC - ) AS admin_mid_zoom - properties: - minzoom: 11 - maxzoom: 12 - advanced: {} - - id: "admin-high-zoom" - name: "admin-high-zoom" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - admin_level - FROM planet_osm_roads - WHERE boundary = 'administrative' - AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10') - AND osm_id < 0 - ORDER BY admin_level::integer DESC -- With 10 as a valid value, we need to do a numeric ordering, not a text ordering - ) AS admin_high_zoom - properties: - minzoom: 13 - advanced: {} - - id: "power-minorline" - name: "power-minorline" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way - FROM planet_osm_line - WHERE power = 'minor_line' - ) AS power_minorline - properties: - minzoom: 16 - advanced: {} - - id: "power-line" - name: "power-line" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way - FROM planet_osm_line - WHERE power = 'line' - ) AS power_line - properties: - minzoom: 14 - advanced: {} - - id: "nature-reserve-boundaries" - name: "nature-reserve-boundaries" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - name, - boundary, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels - FROM planet_osm_polygon - WHERE (boundary = 'national_park' OR leisure = 'nature_reserve') - AND building IS NULL - AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real - ) AS national_park_boundaries - properties: - minzoom: 7 - advanced: {} - - id: "tourism-boundary" - name: "tourism-boundary" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, - name, - tourism - FROM planet_osm_polygon - WHERE tourism = 'theme_park' - OR tourism = 'zoo' - ) AS tourism_boundary - properties: - minzoom: 10 - advanced: {} - - id: "trees" - name: "trees" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, "natural" - FROM planet_osm_point - WHERE "natural" = 'tree' - UNION ALL - SELECT - way, "natural" - FROM planet_osm_line - WHERE "natural" = 'tree_row' - ) AS trees - properties: - minzoom: 16 - advanced: {} - - id: "country-names" - name: "country-names" - class: "country" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, - name - FROM planet_osm_polygon - WHERE boundary = 'administrative' - AND admin_level = '2' - AND name IS NOT NULL - AND way_area > 100*!pixel_width!::real*!pixel_height!::real - ORDER BY way_area DESC - ) AS country_names - properties: - minzoom: 2 - - id: "capital-names" - name: "capital-names" - class: "" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - name, - CASE - WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER ELSE 0 - END as population, - round(random()) AS dir - FROM planet_osm_point - WHERE capital = 'yes' - AND admin_level = '2' - ORDER BY population DESC - ) AS capital_names - properties: - minzoom: 3 - maxzoom: 15 - advanced: {} - - id: "state-names" - name: "state-names" - class: "state" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, - name, - ref - FROM planet_osm_polygon - WHERE boundary = 'administrative' - AND admin_level = '4' - AND name IS NOT NULL - AND way_area > 100*!pixel_width!::real*!pixel_height!::real - ORDER BY way_area DESC - ) AS state_names - properties: - minzoom: 4 - advanced: {} - - id: "placenames-medium" - name: "placenames-medium" - class: "" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - name, - score, - CASE - WHEN (place = 'city') THEN 1 - ELSE 2 - END as category, - round(random()) AS dir - FROM - (SELECT - way, - place, - name, - ( - (CASE - WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER - WHEN (place = 'city') THEN 100000 - WHEN (place = 'town') THEN 1000 - ELSE 1 - END) - * - (CASE - WHEN (capital = '4' OR (capital = 'yes' AND admin_level = '4')) THEN 2 - ELSE 1 - END) - ) AS score - FROM planet_osm_point - WHERE place IN ('city', 'town') - AND name IS NOT NULL - AND capital IS NULL OR capital != 'yes' OR (capital = 'yes' AND admin_level != '2') - ) as p - ORDER BY score DESC, length(name) DESC, name - ) AS placenames_medium - properties: - minzoom: 4 - maxzoom: 15 - advanced: {} - - id: "placenames-small" - name: "placenames-small" - class: "" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - place, - name - FROM planet_osm_point - WHERE place IN ('suburb', 'village', 'hamlet', 'neighbourhood', 'locality', 'isolated_dwelling', 'farm') - AND name IS NOT NULL - ORDER BY CASE - WHEN place = 'suburb' THEN 3 - WHEN place = 'village' THEN 4 - WHEN place = 'hamlet' THEN 5 - WHEN place = 'neighbourhood' THEN 6 - WHEN place = 'locality' THEN 7 - WHEN place = 'isolated_dwelling' THEN 8 - WHEN place = 'farm' THEN 9 - END ASC, length(name) DESC, name - ) AS placenames_small - properties: - minzoom: 12 - advanced: {} - - id: "stations" - class: "stations" - name: "stations" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - name, - railway, - aerialway, - CASE railway - WHEN 'station' THEN 1 - WHEN 'subway_entrance' THEN 3 - ELSE 2 - END - AS prio - FROM planet_osm_point - WHERE railway IN ('station', 'halt', 'tram_stop', 'subway_entrance') - OR aerialway = 'station' - ORDER BY prio - ) AS stations - properties: - minzoom: 12 - advanced: {} - - id: "stations-poly" - name: "stations-poly" - class: "stations" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - name, - railway, - aerialway - FROM planet_osm_polygon - WHERE railway IN ('station', 'halt', 'tram_stop') - OR aerialway = 'station' - ) AS stations_poly - properties: - minzoom: 12 - advanced: {} - - id: "amenity-points-poly" - name: "amenity-points-poly" - class: "points" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - COALESCE( - 'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END, - 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', - 'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END, - 'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', - 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', 'fire_station', 'fountain', - 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 'townhall', 'parking', - 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', - 'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', - 'fast_food', 'telephone', 'emergency_phone', 'taxi', 'theatre', 'toilets', 'drinking_water', - 'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility', - 'charging_station') THEN amenity ELSE NULL END, - 'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', - 'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', - 'garden_centre', 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', - 'photo', 'photo_studio', 'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', - 'mobile_phone', 'motorcycle', 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', - 'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', - 'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', - 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop - WHEN shop IN ('accessories', 'antiques', 'appliance', 'baby_goods', 'bathroom_furnishing', - 'bed', 'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', - 'carpet', 'charity', 'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', - 'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', - 'fabric', 'fishing', 'flooring', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', - 'gallery', 'games', 'gas', 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', - 'herbalist', 'hobby', 'household', 'houseware', 'hunting', 'interior_decoration', 'kitchen', - 'leather', 'lighting', 'locksmith', 'lottery', 'market', 'massage', 'medical', 'medical_supply', 'money_lender', - 'motorcycle_repair', 'music', 'office_supplies', 'organic', 'paint', 'pastry', 'pawnbroker', - 'phone', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', - 'scuba_diving', 'second_hand', 'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir', - 'tailor', 'tanning', 'tattoo', 'ticket', 'tiles', 'trade', 'tyres', 'vacuum_cleaner', 'video', - 'video_games', 'watches', 'wholesale', 'yes') THEN 'other' ELSE NULL END, - 'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table') THEN leisure ELSE NULL END, - 'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') THEN man_made ELSE NULL END, - 'natural_' || CASE WHEN "natural" IN ('spring') THEN "natural" ELSE NULL END, - 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END, - 'highway_'|| CASE WHEN highway IN ('bus_stop', 'elevator', 'traffic_signals') THEN highway ELSE NULL END, - 'power_' || CASE WHEN power IN ('generator') THEN power ELSE NULL END, - 'tourism_' || CASE WHEN tourism IN ('viewpoint') THEN tourism ELSE NULL END - ) AS feature, - access, - religion, - denomination, - "generator:source", - power_source, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels - FROM planet_osm_polygon - -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering - WHERE aeroway IN ('helipad', 'aerodrome') - OR tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', - 'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site') - OR amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', - 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', - 'fire_station', 'fountain', 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', - 'townhall', 'parking', 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', - 'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', - 'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', 'taxi', - 'theatre', 'toilets', 'drinking_water', 'prison', 'hunting_stand', 'nightclub', 'veterinary', - 'social_facility', 'charging_station') - OR shop IS NOT NULL -- skip checking a huge list and use a null check - OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table') - OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') - OR "natural" IN ('spring') - OR historic IN ('memorial', 'monument', 'archaeological_site') - OR highway IN ('bus_stop', 'elevator', 'traffic_signals') - OR (power = 'generator' AND ("generator:source" = 'wind' OR power_source = 'wind')) - ORDER BY way_area desc - ) AS amenity_points_poly - properties: - minzoom: 10 - advanced: {} - - id: "amenity-points" - name: "amenity-points" - class: "points" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - COALESCE( - 'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END, - 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', - 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END, - 'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', - 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', 'fire_station', 'fountain', - 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 'townhall', 'parking', - 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', - 'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', - 'fast_food', 'telephone', 'emergency_phone', 'taxi', 'theatre', 'toilets', 'drinking_water', - 'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility', - 'charging_station') THEN amenity ELSE NULL END, - 'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', - 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', - 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', - 'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', - 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', - 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', - 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop - WHEN shop IN ('accessories', 'antiques', 'appliance', 'baby_goods', 'bathroom_furnishing', 'bed', - 'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', 'carpet', 'charity', - 'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', - 'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 'fabric', 'fishing', - 'flooring', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'gallery', 'games', 'gas', - 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hobby', 'household', - 'houseware', 'hunting', 'interior_decoration', 'kitchen', 'leather', 'lighting', 'locksmith', 'lottery', - 'market', 'massage', 'medical', 'medical_supply', 'money_lender', 'motorcycle_repair', 'music', 'office_supplies', - 'organic', 'paint', 'pastry', 'pawnbroker', 'phone', 'pottery', 'printing', 'radiotechnics', - 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'second_hand', 'sewing', 'shoe_repair', 'shopping_centre', - 'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo', 'ticket', 'tiles', 'trade', 'tyres', - 'vacuum_cleaner', 'video', 'video_games', 'watches', 'wholesale', 'yes') THEN 'other' ELSE NULL END, - 'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway', - 'dog_park') THEN leisure ELSE NULL END, - 'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') THEN man_made ELSE NULL END, - 'natural_' || CASE WHEN "natural" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance') THEN "natural" ELSE NULL END, - 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END, - 'highway_'|| CASE WHEN highway IN ('bus_stop', 'elevator', 'traffic_signals', 'ford') THEN highway ELSE NULL END, - 'power_' || CASE WHEN power IN ('generator') THEN power ELSE NULL END, - 'tourism_' || CASE WHEN tourism IN ('viewpoint') THEN tourism ELSE NULL END, - 'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END, - 'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END - ) AS feature, - access, - CASE - WHEN "natural" IN ('peak', 'volcano', 'saddle') THEN - CASE - WHEN ele ~ '^-?\d{1,4}(\.\d+)?$' THEN ele::NUMERIC - ELSE NULL - END - ELSE NULL - END AS score, - religion, - denomination, - "generator:source", - power_source, - NULL AS way_pixels - FROM planet_osm_point - -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering - WHERE aeroway IN ('helipad', 'aerodrome') - OR tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', - 'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site') - OR amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', - 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', - 'fire_station', 'fountain', 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', - 'townhall', 'parking', 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', - 'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', - 'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', - 'taxi', 'theatre', 'toilets', 'drinking_water', 'prison', 'hunting_stand', 'nightclub', - 'veterinary', 'social_facility', 'charging_station') - OR shop IS NOT NULL -- skip checking a huge list and use a null check - OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway', - 'dog_park') - OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'cross', 'obelisk') - OR "natural" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance') - OR historic IN ('memorial', 'monument', 'archaeological_site', 'wayside_cross') - OR highway IN ('bus_stop', 'elevator', 'traffic_signals', 'ford') - OR (power = 'generator' AND ("generator:source" = 'wind' OR power_source = 'wind')) - ORDER BY score DESC NULLS LAST - ) AS amenity_points - properties: - minzoom: 10 - advanced: {} - - id: "power-towers" - name: "power-towers" - class: "" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way - FROM planet_osm_point - WHERE power = 'tower' - ) AS power_towers - properties: - minzoom: 14 - advanced: {} - - id: "power-poles" - name: "power-poles" - class: "" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way - FROM planet_osm_point - WHERE power = 'pole' - ) AS power_poles - properties: - minzoom: 16 - advanced: {} - - id: "roads-text-ref-low-zoom" - name: "roads-text-ref-low-zoom" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - highway, - height, - width, - refs - FROM ( - SELECT - way, highway, - array_length(refs,1) AS height, - (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, - array_to_string(refs, E'\n') AS refs - FROM ( - SELECT - way, - highway, - string_to_array(ref, ';') AS refs - FROM planet_osm_roads - WHERE highway IN ('motorway', 'trunk', 'primary', 'secondary') - AND ref IS NOT NULL - ) AS p) AS q - WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom - properties: - minzoom: 10 - maxzoom: 12 - advanced: {} - - id: "junctions" - name: "junctions" - class: "" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - highway, - junction, - ref, - name - FROM planet_osm_point - WHERE highway = 'motorway_junction' OR highway = 'traffic_signals' OR junction = 'yes' - ) AS junctions - properties: - minzoom: 11 - advanced: {} - - id: "bridge-text" - name: "bridge-text" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, - man_made, - name - FROM planet_osm_polygon - WHERE man_made = 'bridge' - ) AS bridge_text - properties: - minzoom: 11 - advanced: {} - - id: "roads-text-ref" - name: "roads-text-ref" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - highway, - height, - width, - refs - FROM ( - SELECT - way, highway, - array_length(refs,1) AS height, - (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, - array_to_string(refs, E'\n') AS refs - FROM ( - SELECT - way, - COALESCE( - CASE WHEN highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') THEN highway ELSE NULL END, - CASE WHEN aeroway IN ('runway', 'taxiway') THEN aeroway ELSE NULL END - ) AS highway, - string_to_array(ref, ';') AS refs - FROM planet_osm_line - WHERE (highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') OR aeroway IN ('runway', 'taxiway')) - AND ref IS NOT NULL - ) AS p) AS q - WHERE height <= 4 AND width <= 11) AS roads_text_ref - properties: - minzoom: 13 - advanced: {} - - id: "roads-area-text-name" - name: "roads-area-text-name" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, - highway, - name - FROM planet_osm_polygon - WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 'track', 'path', 'platform') - OR railway IN ('platform') - AND name IS NOT NULL - ) AS roads_area_text_name - properties: - minzoom: 15 - advanced: {} - - id: "roads-text-name" - name: "roads-text-name" - class: "directions" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END, - CASE WHEN (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') THEN 'yes' ELSE 'no' END AS tunnel, - CASE WHEN construction IN ('service', 'footway', 'cycleway', 'bridleway', 'path', 'track') THEN 'yes' ELSE 'no' END AS int_construction_minor, - name, - CASE - WHEN oneway IN ('yes', '-1') THEN oneway - WHEN junction IN ('roundabout') AND (oneway IS NULL OR NOT oneway IN ('no', 'reversible')) THEN 'yes' - ELSE NULL - END AS oneway, - horse, bicycle - FROM planet_osm_line - WHERE highway IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', - 'tertiary_link', 'residential', 'unclassified', 'road', 'service', 'pedestrian', 'raceway', 'living_street', 'construction') - AND (name IS NOT NULL - OR oneway IN ('yes', '-1') - OR junction IN ('roundabout')) - ) AS roads_text_name - properties: - minzoom: 13 - advanced: {} - - id: "paths-text-name" - name: "paths-text-name" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - highway, - name - FROM planet_osm_line - WHERE highway IN ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') - AND name IS NOT NULL - ) AS paths_text_name - properties: - minzoom: 15 - advanced: {} - - id: "text-poly-low-zoom" - name: "text-poly-low-zoom" - class: "text-low-zoom" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, - COALESCE( - 'landuse_' || CASE WHEN landuse IN ('forest', 'military') THEN landuse ELSE NULL END, - 'natural_' || CASE WHEN "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock') THEN "natural" ELSE NULL END, - 'place_' || CASE WHEN place IN ('island') THEN place ELSE NULL END, - 'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END, - 'leisure_' || CASE WHEN leisure IN ('nature_reserve') THEN leisure ELSE NULL END - ) AS feature, - name, - CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building -- always no with the where conditions - FROM planet_osm_polygon - WHERE (landuse IN ('forest', 'military') - OR "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock') - OR "place" IN ('island') - OR boundary IN ('national_park') - OR leisure IN ('nature_reserve')) - AND building IS NULL - AND name IS NOT NULL - ORDER BY way_area DESC - ) AS text_poly_low_zoom - properties: - minzoom: 7 - maxzoom: 9 - advanced: {} - - id: "text-poly" - name: "text-poly" - class: "text" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - # Include values that are rendered as icon without label to prevent mismatch between icons and labels, - # see https://github.com/gravitystorm/openstreetmap-carto/pull/1349#issuecomment-77805678 - table: |- - (SELECT - way, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, - COALESCE( - 'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END, - 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', - 'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END, - 'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', - 'theatre', 'courthouse', 'townhall', 'cinema', 'clinic', 'community_centre', 'parking', - 'bicycle_parking', 'motorcycle_parking', 'police', 'fire_station', 'fountain', 'place_of_worship', - 'grave_yard', 'shelter', 'bank', 'embassy', 'fuel', 'bus_station', 'prison', 'university', - 'school', 'college', 'kindergarten', 'hospital', 'ice_cream', 'pharmacy', 'doctors', 'dentist', - 'atm', 'bicycle_rental', 'car_rental', 'car_wash', 'post_box', 'post_office', - 'recycling', 'telephone', 'emergency_phone', 'toilets', 'taxi', 'drinking_water', 'hunting_stand', - 'nightclub', 'veterinary', 'social_facility', 'charging_station') THEN amenity ELSE NULL END, - 'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', - 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', - 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', - 'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', - 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', - 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', - 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop - WHEN shop IN ('accessories', 'antiques', 'appliance', 'baby_goods', 'bathroom_furnishing', 'bed', - 'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', 'carpet', 'charity', - 'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', - 'discount', 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 'fabric', 'fishing', - 'flooring', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'gallery', 'games', 'gas', - 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hobby', 'household', - 'houseware', 'hunting', 'interior_decoration', 'kitchen', 'leather', 'lighting', 'locksmith', - 'lottery', 'market', 'massage', 'medical', 'medical_supply', 'money_lender', 'motorcycle_repair', 'music', - 'office_supplies', 'organic', 'paint', 'pastry', 'pawnbroker', 'phone', 'pottery', - 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'second_hand', - 'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo', - 'ticket', 'tiles', 'trade', 'tyres', 'vacuum_cleaner', 'video', 'video_games', 'watches', 'wholesale', - 'yes') THEN 'other' ELSE NULL END, - 'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', - 'pitch', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', - 'picnic_table', 'dog_park') THEN leisure ELSE NULL END, - 'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END, - 'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', - 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', - 'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', - 'construction', 'military') THEN landuse ELSE NULL END, - 'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk') THEN man_made ELSE NULL END, - 'natural_' || CASE WHEN "natural" IN ('wood', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath', - 'grassland', 'scrub', 'beach', 'shoal', 'reef', 'glacier') THEN "natural" ELSE NULL END, - 'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END, - 'military_' || CASE WHEN military IN ('danger_area') THEN military ELSE NULL END, - 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END, - 'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford') THEN highway ELSE NULL END, - 'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END, - 'waterway_' || CASE WHEN waterway IN ('dam') THEN waterway ELSE NULL END, - 'tourism_' || CASE WHEN tourism IN ('viewpoint', 'attraction') THEN tourism ELSE NULL END - ) AS feature, - access, - name, - operator, - ref, - way_area, - CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building - FROM planet_osm_polygon - -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering - WHERE (aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') - OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', - 'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site') - OR amenity IS NOT NULL -- skip checking a huge list and use a null check - OR shop IS NOT NULL - OR leisure IS NOT NULL - OR landuse IS NOT NULL - OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk') - OR "natural" IS NOT NULL - OR place IN ('island', 'islet') - OR military IN ('danger_area') - OR historic IN ('memorial', 'monument', 'archaeological_site') - OR highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford') - OR power IN ('plant', 'station', 'generator', 'sub_station', 'substation') - OR boundary IN ('national_park') - OR waterway = 'dam') - AND (name IS NOT NULL - OR (ref IS NOT NULL AND aeroway IN ('gate')) - ) - ORDER BY way_area DESC - ) AS text_poly - properties: - minzoom: 10 - advanced: {} - - id: "text-line" - name: "text-line" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - NULL as way_pixels, - COALESCE('man_made_' || man_made, 'waterway_' || waterway, 'natural_' || "natural") AS feature, - access, - name, - operator, - ref, - NULL AS way_area, - CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building - FROM planet_osm_line - WHERE (man_made IN ('pier', 'breakwater', 'groyne', 'embankment') - OR waterway IN ('dam', 'weir') - OR "natural" IN ('cliff')) - AND name IS NOT NULL - ) AS text_line - advanced: {} - properties: - minzoom: 10 - - id: "text-point" - name: "text-point" - class: "text" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - # Include values that are rendered as icon without label to prevent mismatch between icons and labels, - # see https://github.com/gravitystorm/openstreetmap-carto/pull/1349#issuecomment-77805678 - table: |- - (SELECT - way, - way_pixels, - feature, - access, - CONCAT( - name, - CASE WHEN name IS NOT NULL AND elevation IS NOT NULL THEN E'\n' ELSE NULL END, - CASE WHEN elevation IS NOT NULL THEN CONCAT(REPLACE(ROUND(elevation)::TEXT, '-', U&'\2212'), U&'\00A0', 'm') ELSE NULL END - ) AS name, - CASE - WHEN "natural" IN ('peak', 'volcano', 'saddle') THEN elevation - ELSE NULL - END AS score, - operator, - ref, - way_area, - is_building - FROM - (SELECT - way, - NULL AS way_pixels, - COALESCE( - 'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END, - 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', - 'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END, - 'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 'theatre', - 'courthouse', 'townhall', 'cinema', 'clinic', 'community_centre', 'parking', 'bicycle_parking', - 'motorcycle_parking', 'police', 'fire_station', 'fountain', 'place_of_worship', 'grave_yard', 'shelter', 'bank', - 'embassy', 'fuel', 'bus_station', 'prison', 'university', 'school', 'college', 'kindergarten', 'hospital', - 'ice_cream', 'pharmacy', 'doctors', 'dentist', 'atm', 'bicycle_rental', 'car_rental', - 'car_wash', 'post_box', 'post_office', 'recycling', 'telephone', 'emergency_phone', 'toilets', 'taxi', - 'drinking_water', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility', - 'charging_station') THEN amenity ELSE NULL END, - 'shop_' || CASE WHEN shop IN ('supermarket', 'bag','bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 'fashion', - 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', 'hairdresser', - 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', 'photography', - 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', 'musical_instrument', - 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', - 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', - 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop - WHEN shop IN ('accessories', 'antiques', 'appliance', - 'baby_goods', 'bathroom_furnishing', 'bed', 'boat', 'bookmaker', 'boutique', 'builder', - 'building_materials', 'camera', 'car_service', 'carpet', 'charity', 'cheese', 'chocolate', 'coffee', - 'communication', 'craft', 'curtain', 'dairy', 'discount', - 'e-cigarette', 'electrical', 'energy', 'erotic', 'estate_agent', 'fabric', 'fishing', 'flooring', - 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'gallery', 'games', 'gas', - 'general', 'glaziery', 'grocery', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hobby', 'household', - 'houseware', 'hunting', 'interior_decoration', 'kitchen', 'leather', 'lighting', 'locksmith', - 'lottery', 'market', 'massage', 'medical', 'medical_supply', 'money_lender', 'motorcycle_repair', 'music', - 'office_supplies', 'organic', 'paint', 'pastry', 'pawnbroker', 'phone', 'pottery', - 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'second_hand', - 'sewing', 'shoe_repair', 'shopping_centre', 'solarium', 'souvenir', 'tailor', 'tanning', 'tattoo', - 'ticket', 'tiles', 'trade', 'tyres', 'vacuum_cleaner', 'video', 'video_games', 'watches', - 'wholesale', 'yes') THEN 'other' ELSE NULL END, - 'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', - 'pitch','playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', - 'slipway', 'picnic_table', 'dog_park') THEN leisure ELSE NULL END, - 'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END, - 'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', - 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', - 'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', - 'construction', 'military') THEN landuse ELSE NULL END, - 'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'obelisk') THEN man_made ELSE NULL END, - 'natural_' || CASE WHEN "natural" IN ('wood', 'peak', 'volcano', 'saddle', 'cave_entrance', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', - 'scree', 'shingle', 'bare_rock', 'sand', 'heath', 'grassland', 'scrub', 'beach', 'glacier', 'tree') - THEN "natural" ELSE NULL END, - 'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END, - 'military_' || CASE WHEN military IN ('danger_area') THEN military ELSE NULL END, - 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END, - 'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford') THEN highway ELSE NULL END, - 'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END, - 'waterway_' || CASE WHEN waterway IN ('dam', 'weir') THEN waterway ELSE NULL END, - 'tourism_' || CASE WHEN tourism IN ('viewpoint', 'attraction') THEN tourism ELSE NULL END, - 'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END, - 'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END - ) AS feature, - access, - name, - CASE - WHEN "natural" IN ('peak', 'volcano', 'saddle') OR tourism = 'alpine_hut' OR amenity = 'shelter' THEN - CASE - WHEN ele ~ '^-?\d{1,4}(\.\d+)?$' THEN ele::NUMERIC - ELSE NULL - END - ELSE NULL - END AS elevation, - "natural", - operator, - ref, - NULL AS way_area, - CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building - FROM planet_osm_point - -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering - WHERE (aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') - OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', - 'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site') - OR amenity IS NOT NULL -- skip checking a huge list and use a null check - OR shop IS NOT NULL - OR leisure IS NOT NULL - OR landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', - 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'greenhouse_horticulture', - 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military') - OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'cross', 'obelisk') - OR "natural" IS NOT NULL - OR place IN ('island', 'islet') - OR military IN ('danger_area') - OR historic IN ('memorial', 'monument', 'archaeological_site', 'wayside_cross') - OR highway IN ('bus_stop', 'services', 'rest_area', 'elevator', 'ford') - OR power IN ('plant', 'station', 'generator', 'sub_station', 'substation') - OR boundary IN ('national_park') - OR waterway IN ('dam', 'weir')) - AND (name IS NOT NULL - OR (ele IS NOT NULL AND ("natural" IN ('peak', 'volcano', 'saddle') OR tourism = 'alpine_hut' OR amenity = 'shelter')) - OR (ref IS NOT NULL AND aeroway IN ('gate')) - ) - ) AS p - ORDER BY score DESC NULLS LAST - ) AS text - properties: - minzoom: 10 - advanced: {} - - id: "building-text" - name: "building-text" - class: "" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - name, - way, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels - FROM planet_osm_polygon - WHERE building IS NOT NULL - AND building NOT IN ('no') - AND name IS NOT NULL - ORDER BY way_area DESC - ) AS building_text - properties: - minzoom: 14 - advanced: {} - - id: "interpolation" - name: "interpolation" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way - FROM planet_osm_line - WHERE "addr:interpolation" IS NOT NULL - ) AS interpolation - properties: - minzoom: 17 - advanced: {} - - id: "addresses" - name: "addresses" - class: "" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - "addr:housenumber" AS addr_housenumber, - "addr:housename" AS addr_housename, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels - FROM planet_osm_polygon - WHERE (("addr:housenumber" IS NOT NULL) OR ("addr:housename" IS NOT NULL)) - AND building IS NOT NULL - UNION ALL - SELECT - way, - "addr:housenumber" AS addr_housenumber, - "addr:housename" AS addr_housename, - NULL AS way_pixels - FROM planet_osm_point - WHERE ("addr:housenumber" IS NOT NULL) OR ("addr:housename" IS NOT NULL) - ORDER BY way_pixels DESC NULLS LAST - ) AS addresses - properties: - minzoom: 17 - advanced: {} - - id: "water-lines-text" - name: "water-lines-text" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - waterway, - lock, - name, - intermittent, - CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel - FROM planet_osm_line - WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi') - AND (tunnel IS NULL or tunnel != 'culvert') - AND name IS NOT NULL - ORDER BY z_order - ) AS water_lines_text - properties: - minzoom: 13 - advanced: {} - - id: "ferry-routes-text" - name: "ferry-routes-text" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - name - FROM planet_osm_line - WHERE route = 'ferry' - AND name IS NOT NULL - ) AS ferry_routes_text - properties: - minzoom: 13 - advanced: {} - - id: "admin-text" - name: "admin-text" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - name, - admin_level - FROM planet_osm_polygon - WHERE boundary = 'administrative' - AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10') - AND name IS NOT NULL - ORDER BY admin_level::integer ASC, way_area DESC - ) AS admin_text - properties: - minzoom: 16 - advanced: {} - - id: "nature-reserve-text" - name: "nature-reserve-text" - class: "" - geometry: "linestring" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - name, - way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels - FROM planet_osm_polygon - WHERE (boundary = 'national_park' OR leisure = 'nature_reserve') - AND name IS NOT NULL - ) AS nature_reserve_text - properties: - minzoom: 13 - advanced: {} - - id: "amenity-low-priority" - name: "amenity-low-priority" - class: "amenity-low-priority" - geometry: "point" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - COALESCE( - 'highway_' || CASE WHEN highway IN ('mini_roundabout') THEN highway ELSE NULL END, - 'railway_' || CASE WHEN railway IN ('level_crossing', 'crossing') THEN railway ELSE NULL END, - 'amenity_' || CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'bench', 'waste_basket') THEN amenity ELSE NULL END, - 'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END, - 'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END, - 'barrier_' || CASE WHEN barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') THEN barrier ELSE NULL END - ) AS feature, - access, - CASE WHEN amenity='waste_basket' THEN 2 ELSE 1 END AS prio - FROM planet_osm_point p - WHERE highway IN ('mini_roundabout') - OR railway IN ('level_crossing', 'crossing') - OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'bench', 'waste_basket') - OR historic IN ('wayside_cross') - OR man_made IN ('cross') - OR barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') - ORDER BY prio - ) AS amenity_low_priority - properties: - minzoom: 14 - advanced: {} - - id: "amenity-low-priority-poly" - name: "amenity-low-priority-poly" - class: "amenity-low-priority" - geometry: "polygon" - <<: *extents - Datasource: - <<: *osm2pgsql - table: |- - (SELECT - way, - COALESCE( - 'amenity_' || CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking') THEN amenity ELSE NULL END, - 'barrier_' || CASE WHEN barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') THEN barrier ELSE NULL END - ) AS feature, - access - FROM planet_osm_polygon p - WHERE amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking') - OR barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') - ) AS amenity_low_priority_poly - properties: - minzoom: 14 - advanced: {} diff --git a/stations.mss b/stations.mss index a1cf20f2e8..6b9b22634c 100644 --- a/stations.mss +++ b/stations.mss @@ -7,6 +7,17 @@ marker-placement: interior; marker-fill: @transportation-icon; marker-clip: false; + [zoom >= 19] { + text-name: [ref]; + text-face-name: @book-fonts; + text-size: 10; + text-fill: @transportation-icon; + text-dy: 10; + text-halo-radius: @standard-halo-radius * 1.5; + text-halo-fill: @standard-halo-fill; + text-wrap-width: 0; + text-placement: interior; + } } [railway = 'station'][zoom >= 12] {