Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
openstreetmap-carto/project.mml
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
2269 lines (2267 sloc)
89.7 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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" | |
| osm2pgsql: &osm2pgsql | |
| type: "postgis" | |
| dbname: "gis" | |
| key_field: "" | |
| geometry_field: "way" | |
| extent: "-20037508,-20037508,20037508,20037508" | |
| Stylesheet: | |
| - style/style.mss | |
| - style/fonts.mss | |
| - style/shapefiles.mss | |
| - style/landcover.mss | |
| - style/water.mss | |
| - style/water-features.mss | |
| - style/road-colors-generated.mss | |
| - style/roads.mss | |
| - style/power.mss | |
| - style/placenames.mss | |
| - style/buildings.mss | |
| - style/stations.mss | |
| - style/amenity-points.mss | |
| - style/ferry-routes.mss | |
| - style/aerialways.mss | |
| - style/admin.mss | |
| - style/addressing.mss | |
| Layer: | |
| - id: landcover-low-zoom | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, way_pixels, | |
| COALESCE(wetland, landuse, "natural") AS feature | |
| FROM (SELECT | |
| way, | |
| ('landuse_' || (CASE WHEN landuse IN ('forest', 'farmland', 'residential', 'commercial', 'retail', 'industrial', | |
| 'meadow', 'grass', 'village_green', 'vineyard', 'orchard') THEN landuse END)) AS landuse, | |
| ('natural_' || (CASE WHEN "natural" IN ('wood', 'sand', 'scree', 'shingle', 'bare_rock', 'heath', 'grassland', 'scrub') THEN "natural" END)) AS "natural", | |
| ('wetland_' || (CASE WHEN "natural" IN ('wetland', 'mud') THEN (CASE WHEN "natural" IN ('mud') THEN "natural" ELSE tags->'wetland' END) END)) AS wetland, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels, | |
| way_area | |
| FROM planet_osm_polygon | |
| WHERE (landuse IN ('forest', 'farmland', 'residential', 'commercial', 'retail', 'industrial', 'meadow', 'grass', 'village_green', 'vineyard', 'orchard') | |
| OR "natural" IN ('wood', 'wetland', 'mud', 'sand', 'scree', 'shingle', 'bare_rock', 'heath', 'grassland', 'scrub')) | |
| AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real | |
| AND building IS NULL | |
| ) AS features | |
| ORDER BY way_area DESC, feature | |
| ) AS landcover_low_zoom | |
| properties: | |
| cache-features: true | |
| minzoom: 5 | |
| maxzoom: 9 | |
| - id: landcover | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, name, religion, way_pixels, is_building, | |
| COALESCE(aeroway, amenity, wetland, power, landuse, leisure, man_made, "natural", shop, tourism, highway, railway) AS feature | |
| FROM (SELECT | |
| way, COALESCE(name, '') AS name, | |
| ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway END)) AS aeroway, | |
| ('amenity_' || (CASE WHEN amenity IN ('bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', 'taxi', | |
| 'hospital', 'kindergarten', 'grave_yard', 'prison', 'place_of_worship', 'clinic', 'ferry_terminal', | |
| 'marketplace', 'community_centre', 'social_facility', 'arts_centre', 'parking_space', 'bus_station', | |
| 'fire_station', 'police') | |
| OR amenity IN ('parking') AND (tags->'parking' NOT IN ('underground') OR (tags->'parking') IS NULL) THEN amenity END)) AS amenity, | |
| ('landuse_' || (CASE WHEN landuse IN ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', | |
| 'allotments', 'forest', 'farmyard', 'farmland', 'greenhouse_horticulture', | |
| 'recreation_ground', 'village_green', 'retail', 'industrial', 'railway', 'commercial', | |
| 'brownfield', 'landfill', 'salt_pond', 'construction', 'plant_nursery', 'religious') THEN landuse END)) AS landuse, | |
| ('shop_' || (CASE WHEN shop IN ('mall') AND (tags->'location' NOT IN ('underground') OR (tags->'location') IS NULL) THEN shop END)) AS shop, | |
| ('leisure_' || (CASE WHEN leisure IN ('swimming_pool', 'playground', 'park', 'recreation_ground', 'garden', | |
| 'golf_course', 'miniature_golf', 'sports_centre', 'stadium', 'pitch', 'ice_rink', | |
| 'track', 'dog_park', 'fitness_station', 'water_park') THEN leisure END)) AS leisure, | |
| ('man_made_' || (CASE WHEN man_made IN ('works', 'wastewater_plant', 'water_works') THEN man_made END)) AS man_made, | |
| ('natural_' || (CASE WHEN "natural" IN ('beach', 'shoal', 'heath', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub') THEN "natural" END)) AS "natural", | |
| ('wetland_' || (CASE WHEN "natural" IN ('wetland', 'mud') THEN (CASE WHEN "natural" = 'mud' THEN "natural" ELSE tags->'wetland' END) END)) AS wetland, | |
| ('power_' || (CASE WHEN power IN ('plant', 'substation', 'generator') THEN power END)) AS power, | |
| ('tourism_' || (CASE WHEN tourism IN ('camp_site', 'caravan_site', 'picnic_site') THEN tourism END)) AS tourism, | |
| ('highway_' || (CASE WHEN highway IN ('services', 'rest_area') THEN highway END)) AS highway, | |
| ('railway_' || (CASE WHEN railway = 'station' THEN railway END)) AS railway, | |
| CASE WHEN religion IN ('christian', 'jewish', 'muslim') THEN religion ELSE 'INT-generic'::text END AS religion, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels, | |
| CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building, | |
| way_area | |
| 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', 'taxi', 'university', 'college', 'school', 'hospital', 'kindergarten', | |
| 'grave_yard', 'place_of_worship', 'prison', 'clinic', 'ferry_terminal', 'marketplace', 'community_centre', 'social_facility', | |
| 'arts_centre', 'parking_space', 'bus_station', 'fire_station', 'police') | |
| OR man_made IN ('works', 'wastewater_plant','water_works') | |
| OR "natural" IN ('beach', 'shoal', 'heath', 'mud', 'wetland', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub') | |
| OR power IN ('plant', 'substation', 'generator') | |
| OR shop IN ('mall') | |
| OR tourism IN ('camp_site', 'caravan_site', 'picnic_site') | |
| OR highway IN ('services', 'rest_area') | |
| OR railway = 'station') | |
| AND way_area > 1*!pixel_width!::real*!pixel_height!::real | |
| ) AS landcover | |
| ORDER BY way_area DESC, feature | |
| ) AS features | |
| properties: | |
| cache-features: true | |
| minzoom: 10 | |
| - id: landcover-line | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way | |
| FROM planet_osm_line | |
| WHERE man_made = 'cutline' | |
| ) AS landcover_line | |
| properties: | |
| minzoom: 14 | |
| - id: icesheet-poly | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way | |
| FROM icesheet_polygons | |
| ) AS icesheet_polygons | |
| properties: | |
| minzoom: 5 | |
| - id: water-lines-casing | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| waterway, | |
| CASE WHEN tags->'intermittent' IN ('yes') | |
| OR tags->'seasonal' IN ('yes', 'spring', 'summer', 'autumn', 'winter', 'wet_season', 'dry_season') | |
| THEN 'yes' ELSE 'no' END AS int_intermittent, | |
| CASE WHEN tunnel IN ('yes', 'culvert') | |
| OR waterway='canal' AND tunnel = 'flooded' | |
| 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 | |
| - id: water-lines-low-zoom | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| waterway, | |
| CASE WHEN tags->'intermittent' IN ('yes') | |
| OR tags->'seasonal' IN ('yes', 'spring', 'summer', 'autumn', 'winter', 'wet_season', 'dry_season') | |
| THEN 'yes' ELSE 'no' END AS int_intermittent | |
| FROM planet_osm_line | |
| WHERE waterway = 'river' | |
| ) AS water_lines_low_zoom | |
| properties: | |
| minzoom: 8 | |
| maxzoom: 11 | |
| - id: water-lines | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| waterway, | |
| name, | |
| CASE WHEN tags->'intermittent' IN ('yes') | |
| OR tags->'seasonal' IN ('yes', 'spring', 'summer', 'autumn', 'winter', 'wet_season', 'dry_season') | |
| THEN 'yes' ELSE 'no' END AS int_intermittent, | |
| CASE WHEN tunnel IN ('yes', 'culvert') | |
| OR waterway = 'canal' AND tunnel = 'flooded' | |
| THEN 'yes' ELSE 'no' END AS int_tunnel, | |
| 'no' AS bridge | |
| FROM planet_osm_line | |
| WHERE waterway IN ('river', 'canal', 'stream', 'drain', 'ditch') | |
| AND (bridge IS NULL OR bridge NOT IN ('yes', 'aqueduct')) | |
| ORDER BY COALESCE(layer,0) | |
| ) AS water_lines | |
| properties: | |
| minzoom: 12 | |
| - id: water-areas | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| "natural", | |
| waterway, | |
| landuse, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels, | |
| CASE WHEN tags->'intermittent' IN ('yes') | |
| OR tags->'seasonal' IN ('yes', 'spring', 'summer', 'autumn', 'winter', 'wet_season', 'dry_season') | |
| OR tags->'basin' IN ('detention', 'infiltration') | |
| THEN 'yes' ELSE 'no' END AS int_intermittent | |
| FROM planet_osm_polygon | |
| WHERE | |
| (waterway IN ('dock', 'riverbank') | |
| OR landuse IN ('reservoir', 'basin') | |
| OR "natural" IN ('water', 'glacier')) | |
| AND building IS NULL | |
| AND way_area > 1*!pixel_width!::real*!pixel_height!::real | |
| ORDER BY COALESCE(layer,0), way_area DESC | |
| ) AS water_areas | |
| properties: | |
| cache-features: true | |
| minzoom: 0 | |
| - id: ocean-lz | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way | |
| FROM simplified_water_polygons | |
| ) AS ocean_lz | |
| properties: | |
| maxzoom: 9 | |
| - id: ocean | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way | |
| FROM water_polygons | |
| ) AS ocean | |
| properties: | |
| minzoom: 10 | |
| - id: landcover-area-symbols | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, surface, | |
| COALESCE(CASE WHEN landuse = 'forest' THEN 'wood' END, "natural") AS "natural", | |
| CASE WHEN "natural" = 'mud' | |
| THEN "natural" | |
| ELSE CASE WHEN ("natural" = 'wetland' AND NOT tags ? 'wetland') | |
| THEN 'wetland' | |
| ELSE CASE WHEN ("natural" = 'wetland') | |
| THEN tags->'wetland' | |
| END | |
| END | |
| END AS int_wetland, | |
| landuse, | |
| tags->'leaf_type' AS leaf_type, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels | |
| FROM planet_osm_polygon | |
| WHERE ("natural" IN ('mud', 'wetland', 'wood', 'beach', 'shoal', 'reef', 'scrub') OR landuse IN ('forest', 'salt_pond')) | |
| AND building IS NULL | |
| AND way_area > 1*!pixel_width!::real*!pixel_height!::real | |
| ORDER BY COALESCE(layer,0), way_area DESC | |
| ) AS landcover_area_symbols | |
| properties: | |
| cache-features: true | |
| minzoom: 9 | |
| - id: icesheet-outlines | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| ice_edge | |
| FROM icesheet_outlines | |
| ) AS icesheet_outlines | |
| properties: | |
| minzoom: 5 | |
| - id: marinas-area | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way | |
| FROM planet_osm_polygon | |
| WHERE leisure = 'marina' | |
| ) AS marinas_area | |
| properties: | |
| minzoom: 14 | |
| - id: water-barriers-line | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| waterway | |
| FROM planet_osm_line | |
| WHERE waterway IN ('dam', 'weir', 'lock_gate') | |
| ) AS water_barriers_line | |
| properties: | |
| minzoom: 13 | |
| - id: water-barriers-poly | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| waterway | |
| FROM planet_osm_polygon | |
| WHERE waterway IN ('dam', 'weir', 'lock_gate') | |
| ) AS water_barriers_poly | |
| properties: | |
| minzoom: 13 | |
| - id: piers-poly | |
| 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 | |
| - id: piers-line | |
| 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 | |
| - id: water-barriers-point | |
| 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 | |
| - id: bridge | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| man_made | |
| FROM planet_osm_polygon | |
| WHERE man_made = 'bridge' | |
| ) AS bridge | |
| properties: | |
| minzoom: 12 | |
| - id: buildings | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| building, | |
| amenity, | |
| aeroway, | |
| aerialway, | |
| tags->'public_transport' as public_transport | |
| FROM planet_osm_polygon | |
| WHERE building IS NOT NULL | |
| AND building != 'no' | |
| AND way_area > 1*!pixel_width!::real*!pixel_height!::real | |
| ORDER BY COALESCE(layer,0), way_area DESC | |
| ) AS buildings | |
| properties: | |
| minzoom: 14 | |
| - id: tunnels | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| # This query is quite large, having to deal with both roads, railways. To | |
| # allow for ways that are both railways and roads, a UNION ALL is present. | |
| table: |- | |
| (SELECT | |
| way, | |
| (CASE WHEN feature IN ('highway_motorway_link', 'highway_trunk_link', 'highway_primary_link', 'highway_secondary_link', 'highway_tertiary_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 | |
| 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', 'ice', 'snow') THEN 'unpaved' | |
| WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', | |
| 'concrete:plates', 'paving_stones', 'metal', 'wood', 'unhewn_cobblestone') THEN 'paved' | |
| END AS int_surface, | |
| CASE WHEN access IN ('destination') THEN 'destination'::text | |
| WHEN access IN ('no', 'private') THEN 'no'::text | |
| 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 highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') THEN 'yes' | |
| ELSE 'no' | |
| END AS link, | |
| COALESCE(layer,0) AS layernotnull, | |
| z_order | |
| 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, | |
| '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) AS feature, | |
| horse, | |
| foot, | |
| bicycle, | |
| tracktype, | |
| 'null', | |
| CASE | |
| WHEN access IN ('destination') THEN 'destination'::text | |
| WHEN access IN ('no', 'private') THEN 'no'::text | |
| 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, | |
| COALESCE(layer,0) AS layernotnull, | |
| z_order | |
| FROM planet_osm_line | |
| WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') | |
| AND (railway NOT IN ('platform') AND railway IS NOT NULL) -- end of rail select | |
| ) AS features | |
| ORDER BY | |
| layernotnull, | |
| z_order, | |
| CASE WHEN substring(feature for 8) = 'railway_' THEN 2 ELSE 1 END, | |
| CASE WHEN feature IN ('railway_INT-preserved-ssy', 'railway_INT-spur-siding-yard', 'railway_tram-service') THEN 0 ELSE 1 END, | |
| 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: | |
| cache-features: true | |
| group-by: layernotnull | |
| minzoom: 10 | |
| - id: landuse-overlay | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| landuse, | |
| military, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels | |
| FROM planet_osm_polygon | |
| WHERE (landuse = 'military' | |
| OR military = 'danger_area') | |
| AND building IS NULL | |
| ) AS landuse_overlay | |
| properties: | |
| minzoom: 8 | |
| - id: tourism-boundary | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels, | |
| tourism | |
| FROM planet_osm_polygon | |
| WHERE tourism = 'theme_park' | |
| OR tourism = 'zoo' | |
| ) AS tourism_boundary | |
| properties: | |
| minzoom: 10 | |
| - id: 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', 'ditch', 'fence', 'guard_rail', | |
| 'handrail', 'hedge', 'retaining_wall', 'wall') THEN barrier END)) AS barrier, | |
| ('historic_' || (CASE WHEN historic = 'citywalls' THEN historic END)) AS historic | |
| FROM | |
| (SELECT | |
| way, | |
| historic, | |
| barrier, | |
| waterway | |
| FROM planet_osm_polygon | |
| WHERE way && !bbox! | |
| UNION ALL | |
| SELECT | |
| way, | |
| historic, | |
| barrier, | |
| waterway | |
| FROM planet_osm_line | |
| WHERE way && !bbox! | |
| ) _ | |
| WHERE barrier IN ('chain', 'city_wall', 'ditch', 'fence', 'guard_rail', | |
| 'handrail', 'hedge', 'retaining_wall', 'wall') | |
| OR historic = 'citywalls' | |
| AND (waterway IS NULL OR waterway NOT IN ('river', 'canal', 'stream', 'drain', 'ditch')) | |
| ) AS features | |
| ) AS line_barriers | |
| properties: | |
| minzoom: 15 | |
| - id: cliffs | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, "natural", man_made | |
| FROM planet_osm_line | |
| WHERE "natural" IN ('arete', 'cliff', 'ridge') OR man_made = 'embankment' | |
| ) AS cliffs | |
| properties: | |
| cache-features: true | |
| minzoom: 13 | |
| - id: ferry-routes | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way | |
| FROM planet_osm_line | |
| WHERE route = 'ferry' | |
| AND osm_id > 0 | |
| ) AS ferry_routes | |
| properties: | |
| minzoom: 8 | |
| - id: turning-circle-casing | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: &turning-circle_sql |- | |
| (SELECT DISTINCT ON (p.way) | |
| p.way AS way, | |
| p.highway AS type, | |
| 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 | |
| ('primary', 1), | |
| ('secondary', 2), | |
| ('tertiary', 3), | |
| ('unclassified', 4), | |
| ('residential', 5), | |
| ('living_street', 6), | |
| ('service', 7), | |
| ('track', 8) | |
| ) AS v (highway, prio) | |
| ON v.highway = l.highway | |
| WHERE p.highway IN ( | |
| 'turning_circle', | |
| 'turning_loop', | |
| 'mini_roundabout' | |
| ) | |
| ORDER BY p.way, v.prio | |
| ) AS turning_circle_sql | |
| properties: | |
| minzoom: 15 | |
| - id: highway-area-casing | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| COALESCE(( | |
| 'highway_' || (CASE WHEN highway IN ('pedestrian', 'footway', 'service', 'platform') THEN highway END)), | |
| ('railway_' || (CASE WHEN (railway IN ('platform') | |
| AND (tags->'location' NOT IN ('underground') OR (tags->'location') IS NULL) | |
| AND (tunnel NOT IN ('yes', 'building_passage') OR tunnel IS NULL) | |
| AND (covered NOT IN ('yes') OR covered IS NULL)) | |
| THEN railway END)) | |
| ) AS feature | |
| FROM planet_osm_polygon | |
| WHERE highway IN ('pedestrian', 'footway', 'service', 'platform') | |
| OR (railway IN ('platform') | |
| AND (tags->'location' NOT IN ('underground') OR (tags->'location') IS NULL) | |
| AND (tunnel NOT IN ('yes', 'building_passage') OR tunnel IS NULL) | |
| AND (covered NOT IN ('yes') OR covered IS NULL)) | |
| ORDER BY COALESCE(layer,0), way_area DESC | |
| ) AS highway_area_casing | |
| properties: | |
| minzoom: 14 | |
| - id: roads-casing | |
| 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 | |
| table: &roads_sql |- | |
| (SELECT | |
| way, | |
| (CASE WHEN feature IN ('highway_motorway_link', 'highway_trunk_link', 'highway_primary_link', 'highway_secondary_link', 'highway_tertiary_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', 'ice', 'snow') THEN 'unpaved' | |
| WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', | |
| 'concrete:plates', 'paving_stones', 'metal', 'wood', 'unhewn_cobblestone') THEN 'paved' | |
| END AS int_surface, | |
| CASE WHEN access IN ('destination') THEN 'destination'::text | |
| WHEN access IN ('no', 'private') THEN 'no'::text | |
| END AS access, | |
| construction, | |
| CASE | |
| WHEN service IN ('parking_aisle', 'drive-through', 'driveway') OR leisure IN ('slipway') THEN 'INT-minor'::text | |
| ELSE 'INT-normal'::text | |
| END AS service, | |
| CASE | |
| WHEN highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') THEN 'yes' | |
| ELSE 'no' | |
| END AS link, | |
| COALESCE(layer,0) AS layernotnull, | |
| osm_id, | |
| z_order | |
| 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, | |
| ('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)) AS feature, | |
| horse, | |
| foot, | |
| bicycle, | |
| tracktype, | |
| 'null', | |
| CASE | |
| WHEN access IN ('destination') THEN 'destination'::text | |
| WHEN access IN ('no', 'private') THEN 'no'::text | |
| END AS access, | |
| construction, | |
| CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') OR leisure IN ('slipway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service, | |
| 'no' AS link, | |
| COALESCE(layer,0) AS layernotnull, | |
| osm_id, | |
| z_order | |
| 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 -- end of rail select | |
| ) AS features | |
| ORDER BY | |
| layernotnull, | |
| z_order, | |
| CASE WHEN substring(feature for 8) = 'railway_' THEN 2 ELSE 1 END, | |
| CASE WHEN feature IN ('railway_INT-preserved-ssy', 'railway_INT-spur-siding-yard', 'railway_tram-service') THEN 0 ELSE 1 END, | |
| 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, | |
| osm_id | |
| ) AS roads_sql | |
| properties: | |
| cache-features: true | |
| minzoom: 10 | |
| - id: highway-area-fill | |
| # FIXME: No geometry? | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| COALESCE( | |
| ('highway_' || (CASE WHEN highway IN ('pedestrian', 'footway', 'service', 'living_street', | |
| 'platform', 'services') THEN highway END)), | |
| ('railway_' || (CASE WHEN (railway IN ('platform') | |
| AND (tags->'location' NOT IN ('underground') OR (tags->'location') IS NULL) | |
| AND (tunnel NOT IN ('yes', 'building_passage') OR tunnel IS NULL) | |
| AND (covered NOT IN ('yes') OR covered IS NULL)) | |
| THEN railway END)), | |
| (('aeroway_' || CASE WHEN aeroway IN ('runway', 'taxiway', 'helipad') THEN aeroway END)) | |
| ) AS feature | |
| FROM planet_osm_polygon | |
| WHERE highway IN ('pedestrian', 'footway', 'service', 'living_street', 'platform', 'services') | |
| OR (railway IN ('platform') | |
| AND (tags->'location' NOT IN ('underground') OR (tags->'location') IS NULL) | |
| AND (tunnel NOT IN ('yes', 'building_passage') OR tunnel IS NULL) | |
| AND (covered NOT IN ('yes') OR covered IS NULL)) | |
| OR aeroway IN ('runway', 'taxiway', 'helipad') | |
| ORDER BY COALESCE(layer,0), way_area desc | |
| ) AS highway_area_fill | |
| properties: | |
| minzoom: 14 | |
| - id: roads-fill | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: *roads_sql | |
| properties: | |
| cache-features: true | |
| minzoom: 10 | |
| - id: turning-circle-fill | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: *turning-circle_sql | |
| properties: | |
| minzoom: 15 | |
| - id: aerialways | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| aerialway, | |
| man_made, | |
| tags->'substance' AS substance | |
| FROM planet_osm_line | |
| WHERE aerialway IS NOT NULL | |
| OR (man_made = 'pipeline' | |
| AND tags-> 'location' IN ('overground', 'overhead', 'surface', 'outdoor') | |
| OR bridge IN ('yes', 'aqueduct', 'cantilever', 'covered', 'trestle', 'viaduct')) | |
| OR (man_made = 'goods_conveyor' | |
| AND (tags->'location' NOT IN ('underground') OR (tags->'location') IS NULL) | |
| AND (tunnel NOT IN ('yes') OR tunnel IS NULL)) | |
| ORDER BY | |
| CASE | |
| WHEN man_made IN ('goods_conveyor', 'pipeline') THEN 1 | |
| WHEN tags-> 'location' = 'overhead' THEN 2 | |
| WHEN bridge IS NOT NULL THEN 3 | |
| WHEN aerialway IS NOT NULL THEN 4 | |
| END | |
| ) AS aerialways | |
| properties: | |
| minzoom: 12 | |
| - id: roads-low-zoom | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| COALESCE( | |
| ('highway_' || (CASE WHEN highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_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 END)) | |
| ) AS feature, | |
| CASE WHEN tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes' THEN 'yes' ELSE 'no' END AS int_tunnel, | |
| CASE WHEN highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_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', 'ice', 'snow') THEN 'unpaved' | |
| WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', | |
| 'concrete:plates', 'paving_stones', 'metal', 'wood', 'unhewn_cobblestone') THEN 'paved' | |
| 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: | |
| cache-features: true | |
| minzoom: 6 | |
| maxzoom: 9 | |
| - id: waterway-bridges | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| waterway, | |
| CASE WHEN tags->'intermittent' IN ('yes') | |
| OR tags->'seasonal' IN ('yes', 'spring', 'summer', 'autumn', 'winter', 'wet_season', 'dry_season') | |
| THEN 'yes' ELSE 'no' END AS int_intermittent, | |
| CASE WHEN tunnel IN ('yes', 'culvert') | |
| OR waterway = 'canal' AND tunnel = 'flooded' | |
| THEN 'yes' ELSE 'no' END AS int_tunnel, | |
| 'yes' AS bridge | |
| FROM planet_osm_line | |
| WHERE waterway IN ('river', 'canal', 'stream', 'drain', 'ditch') | |
| AND bridge IN ('yes', 'aqueduct') | |
| ORDER BY COALESCE(layer,0) | |
| ) AS waterway_bridges | |
| properties: | |
| minzoom: 12 | |
| - id: bridges | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| (CASE WHEN feature IN ('highway_motorway_link', 'highway_trunk_link', 'highway_primary_link', 'highway_secondary_link', 'highway_tertiary_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', 'ice', 'snow') THEN 'unpaved' | |
| WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', | |
| 'concrete:plates', 'paving_stones', 'metal', 'wood', 'unhewn_cobblestone') THEN 'paved' | |
| END AS int_surface, | |
| CASE WHEN access IN ('destination') THEN 'destination'::text | |
| WHEN access IN ('no', 'private') THEN 'no'::text | |
| 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 highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') THEN 'yes' | |
| ELSE 'no' | |
| END AS link, | |
| COALESCE(layer,0) AS layernotnull, | |
| z_order | |
| 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, | |
| '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) AS feature, | |
| horse, | |
| foot, | |
| bicycle, | |
| tracktype, | |
| 'null', | |
| CASE | |
| WHEN access IN ('destination') THEN 'destination'::text | |
| WHEN access IN ('no', 'private') THEN 'no'::text | |
| 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, | |
| COALESCE(layer,0) AS layernotnull, | |
| z_order | |
| FROM planet_osm_line | |
| WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct') | |
| AND railway IS NOT NULL -- end of rail select | |
| ) AS features | |
| ORDER BY | |
| layernotnull, | |
| z_order, | |
| CASE WHEN substring(feature for 8) = 'railway_' THEN 2 ELSE 1 END, | |
| CASE WHEN feature IN ('railway_INT-preserved-ssy', 'railway_INT-spur-siding-yard', 'railway_tram-service') THEN 0 ELSE 1 END, | |
| 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: | |
| cache-features: true | |
| group-by: layernotnull | |
| minzoom: 10 | |
| - id: guideways | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way | |
| FROM planet_osm_line | |
| WHERE highway = 'bus_guideway' | |
| ) AS guideways | |
| properties: | |
| minzoom: 11 | |
| - id: entrances | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| tags->'entrance' AS entrance, | |
| access | |
| FROM planet_osm_point | |
| WHERE (tags->'entrance') IS NOT NULL AND | |
| (tags->'indoor' = 'no' | |
| OR (tags->'indoor') IS NULL)) | |
| AS entrances | |
| properties: | |
| minzoom: 18 | |
| - id: aeroways | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| aeroway, | |
| bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct') AS bridge | |
| FROM planet_osm_line | |
| WHERE aeroway IN ('runway', 'taxiway') | |
| ORDER BY bridge NULLS FIRST, | |
| CASE WHEN aeroway = 'runway' THEN 1 ELSE 0 END | |
| ) AS aeroways | |
| properties: | |
| cache-features: true | |
| minzoom: 11 | |
| - id: necountries | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way | |
| FROM ne_110m_admin_0_boundary_lines_land | |
| ) AS necountries | |
| properties: | |
| minzoom: 1 | |
| maxzoom: 3 | |
| - id: admin-low-zoom | |
| 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: 7 | |
| - id: admin-mid-zoom | |
| 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: 8 | |
| maxzoom: 12 | |
| - id: admin-high-zoom | |
| 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 | |
| - id: power-minorline | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way | |
| FROM planet_osm_line | |
| WHERE power = 'minor_line' | |
| ) AS power_minorline | |
| properties: | |
| minzoom: 16 | |
| - id: power-line | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way | |
| FROM planet_osm_line | |
| WHERE power = 'line' | |
| ) AS power_line | |
| properties: | |
| minzoom: 14 | |
| - id: protected-areas | |
| geometry: polygon | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| boundary, | |
| tags->'protect_class' AS protect_class, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels | |
| FROM planet_osm_polygon | |
| WHERE (boundary IN ('aboriginal_lands', 'national_park') | |
| OR leisure = 'nature_reserve' | |
| OR (boundary = 'protected_area' AND tags->'protect_class' IN ('1','1a','1b','2','3','4','5','6'))) | |
| AND building IS NULL | |
| AND way_area > 1*!pixel_width!::real*!pixel_height!::real | |
| ) AS protected_areas | |
| properties: | |
| cache-features: true | |
| minzoom: 8 | |
| - id: trees | |
| 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: | |
| cache-features: true | |
| minzoom: 16 | |
| - id: country-names | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| ST_PointOnSurface(way) AS way, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels, | |
| name | |
| FROM planet_osm_polygon | |
| WHERE ST_PointOnSurface(way) && !bbox! | |
| AND name IS NOT NULL | |
| AND boundary = 'administrative' | |
| AND admin_level = '2' | |
| AND way_area > 100*POW(!scale_denominator!*0.001*0.28,2) | |
| AND way_area < 4000000*POW(!scale_denominator!*0.001*0.28,2) | |
| AND osm_id < 0 | |
| ORDER BY way_area DESC | |
| ) AS country_names | |
| properties: | |
| minzoom: 2 | |
| - id: capital-names | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| name, | |
| CASE | |
| WHEN (tags->'population' ~ '^[0-9]{1,8}$') THEN (tags->'population')::INTEGER ELSE 0 | |
| END as population, | |
| round(ascii(md5(osm_id::text)) / 55) AS dir -- base direction factor on geometry to be consistent across metatiles | |
| FROM planet_osm_point | |
| WHERE place IN ('city', 'town', 'village', 'hamlet') | |
| AND name IS NOT NULL | |
| AND tags @> 'capital=>yes' | |
| ORDER BY population DESC | |
| ) AS capital_names | |
| properties: | |
| minzoom: 3 | |
| maxzoom: 15 | |
| - id: state-names | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| ST_PointOnSurface(way) AS way, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels, | |
| name, | |
| admin_level, | |
| ref | |
| FROM planet_osm_polygon | |
| WHERE ST_PointOnSurface(way) && !bbox! | |
| AND name IS NOT NULL | |
| AND boundary = 'administrative' | |
| AND admin_level = '4' | |
| AND way_area > 3000*POW(!scale_denominator!*0.001*0.28,2) | |
| AND way_area < 4000000*POW(!scale_denominator!*0.001*0.28,2) | |
| AND osm_id < 0 | |
| ORDER BY way_area DESC | |
| ) AS state_names | |
| properties: | |
| minzoom: 4 | |
| - id: placenames-medium | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| name, | |
| score, | |
| CASE | |
| WHEN (place = 'city') THEN 1 | |
| ELSE 2 | |
| END as category, | |
| round(ascii(md5(osm_id::text)) / 55) AS dir -- base direction factor on geometry to be consistent across metatiles | |
| FROM | |
| (SELECT | |
| osm_id, | |
| way, | |
| place, | |
| name, | |
| ( | |
| (CASE | |
| WHEN (tags->'population' ~ '^[0-9]{1,8}$') THEN (tags->'population')::INTEGER | |
| WHEN (place = 'city') THEN 100000 | |
| WHEN (place = 'town') THEN 1000 | |
| ELSE 1 | |
| END) | |
| * | |
| (CASE | |
| WHEN (tags @> 'capital=>4') THEN 2 | |
| ELSE 1 | |
| END) | |
| ) AS score | |
| FROM planet_osm_point | |
| WHERE place IN ('city', 'town') | |
| AND name IS NOT NULL | |
| AND NOT (tags @> 'capital=>yes') | |
| ) as p | |
| ORDER BY score DESC, length(name) DESC, name | |
| ) AS placenames_medium | |
| properties: | |
| cache-features: true | |
| minzoom: 4 | |
| maxzoom: 15 | |
| - id: placenames-small | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| place, | |
| name | |
| FROM planet_osm_point | |
| WHERE place IN ('village', 'hamlet') | |
| AND name IS NOT NULL | |
| AND NOT tags @> 'capital=>yes' | |
| OR (place IN ('suburb', 'quarter', 'neighbourhood', 'isolated_dwelling', 'farm') | |
| ) AND name IS NOT NULL | |
| ORDER BY CASE | |
| WHEN place = 'suburb' THEN 7 | |
| WHEN place = 'village' THEN 6 | |
| WHEN place = 'hamlet' THEN 5 | |
| WHEN place = 'quarter' THEN 4 | |
| WHEN place = 'neighbourhood' THEN 3 | |
| WHEN place = 'isolated_dwelling' THEN 2 | |
| WHEN place = 'farm' THEN 1 | |
| END DESC, | |
| length(name) DESC, | |
| name | |
| ) AS placenames_small | |
| properties: | |
| cache-features: true | |
| minzoom: 12 | |
| - id: stations | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| name, | |
| ref, | |
| railway, | |
| aerialway, | |
| station | |
| FROM | |
| (SELECT | |
| ST_PointOnSurface(way) AS way, | |
| name, | |
| ref, | |
| railway, | |
| aerialway, | |
| tags->'station' AS station, | |
| way_area | |
| FROM planet_osm_polygon | |
| WHERE way && !bbox! -- Not ST_PointOnSurface(way) because name might be NULL | |
| AND way_area < 768000*POW(!scale_denominator!*0.001*0.28,2) | |
| UNION ALL | |
| SELECT | |
| way, | |
| name, | |
| ref, | |
| railway, | |
| aerialway, | |
| tags->'station' AS station, | |
| NULL as way_area | |
| FROM planet_osm_point | |
| WHERE way && !bbox! | |
| ) _ | |
| WHERE railway IN ('station', 'halt', 'tram_stop') | |
| OR railway = 'subway_entrance' AND way_area IS NULL | |
| OR aerialway = 'station' | |
| ORDER BY | |
| CASE railway | |
| WHEN 'station' THEN 1 | |
| WHEN 'subway_entrance' THEN 3 | |
| ELSE 2 | |
| END, | |
| way_area DESC NULLS LAST | |
| ) AS stations | |
| properties: | |
| cache-features: true | |
| minzoom: 12 | |
| - id: junctions | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| highway, | |
| junction, | |
| ref, | |
| name, | |
| NULL AS way_pixels | |
| FROM planet_osm_point | |
| WHERE way && !bbox! | |
| AND (highway = 'motorway_junction' OR highway = 'traffic_signals' OR junction = 'yes') | |
| UNION ALL | |
| SELECT | |
| ST_PointOnSurface(way) AS way, | |
| highway, | |
| junction, | |
| ref, | |
| name, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels | |
| FROM planet_osm_polygon | |
| WHERE way && !bbox! -- Not ST_PointOnSurface(way) because name might be NULL | |
| AND junction = 'yes' | |
| AND way_area < 768000*POW(!scale_denominator!*0.001*0.28,2) | |
| ORDER BY way_pixels DESC NULLS LAST | |
| ) AS junctions | |
| properties: | |
| minzoom: 11 | |
| - id: bridge-text | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| ST_PointOnSurface(way) AS way, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels, | |
| man_made, | |
| name | |
| FROM planet_osm_polygon | |
| WHERE ST_PointOnSurface(way) && !bbox! | |
| AND name IS NOT NULL | |
| AND man_made = 'bridge' | |
| AND way_area > 125*POW(!scale_denominator!*0.001*0.28,2) | |
| AND way_area < 768000*POW(!scale_denominator!*0.001*0.28,2) | |
| ORDER BY way_area DESC | |
| ) AS bridge_text | |
| properties: | |
| minzoom: 11 | |
| - id: county-names | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| ST_PointOnSurface(way) AS way, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels, | |
| name, | |
| admin_level | |
| FROM planet_osm_polygon | |
| WHERE ST_PointOnSurface(way) && !bbox! | |
| AND name IS NOT NULL | |
| AND boundary = 'administrative' | |
| AND admin_level IN ('5', '6') | |
| AND way_area > 12000*POW(!scale_denominator!*0.001*0.28,2) | |
| AND way_area < 196000*POW(!scale_denominator!*0.001*0.28,2) | |
| AND osm_id < 0 | |
| ORDER BY | |
| admin_level, | |
| way_area DESC | |
| ) AS county_names | |
| properties: | |
| minzoom: 8 | |
| - id: amenity-points | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: &amenity_points_sql |- | |
| (SELECT | |
| * | |
| FROM | |
| (SELECT -- This subselect allows filtering on the feature column | |
| way, | |
| CONCAT( | |
| name, | |
| E'\n' || CONCAT( -- by doing this with a || if both the ele and height branches are null, this entire expression is null and only name is used | |
| CASE | |
| WHEN (tags ? 'ele') AND tags->'ele' ~ '^-?\d{1,4}(\.\d+)?$' | |
| AND ("natural" IN ('peak', 'volcano', 'saddle') | |
| OR tourism = 'alpine_hut' OR (tourism = 'information' AND tags->'information' = 'guidepost') | |
| OR amenity = 'shelter') | |
| THEN CONCAT(REPLACE(ROUND((tags->'ele')::NUMERIC)::TEXT, '-', U&'\2212'), U&'\00A0', 'm') END, | |
| CASE | |
| WHEN (tags ? 'height') AND tags->'height' ~ '^\d{1,3}(\.\d+)?$' | |
| AND waterway = 'waterfall' | |
| THEN CONCAT(ROUND((tags->'height')::NUMERIC)::TEXT, U&'\00A0', 'm') END | |
| ) | |
| ) AS name, | |
| tags->'parking' as "parking", | |
| COALESCE( | |
| 'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway END, | |
| 'tourism_' || CASE WHEN tourism IN ('alpine_hut', 'apartment', 'artwork', 'camp_site', 'caravan_site', 'chalet', 'gallery', 'guest_house', | |
| 'hostel', 'hotel', 'motel', 'museum', 'picnic_site', 'theme_park', 'wilderness_hut', | |
| 'zoo') THEN tourism END, | |
| 'amenity_' || CASE WHEN amenity IN ('arts_centre', 'atm', 'bank', 'bar', 'bbq', 'bicycle_rental', | |
| 'bicycle_repair_station','biergarten', 'boat_rental', 'bureau_de_change', 'bus_station', 'cafe', | |
| 'car_rental', 'car_wash', 'casino', 'charging_station', 'childcare', 'cinema', 'clinic', 'college', | |
| 'community_centre', 'courthouse', 'dentist', 'doctors', 'drinking_water', 'driving_school', | |
| 'fast_food', 'ferry_terminal', 'fire_station', 'food_court', 'fountain', 'fuel', 'grave_yard', | |
| 'hospital', 'hunting_stand', 'ice_cream', 'internet_cafe', 'kindergarten', 'library', 'marketplace', | |
| 'nightclub', 'nursing_home', 'pharmacy', 'place_of_worship', 'police', 'post_box', | |
| 'post_office', 'prison', 'pub', 'public_bath', 'public_bookcase', 'recycling', 'restaurant', 'school', | |
| 'shelter', 'shower', 'social_facility', 'taxi', 'telephone', 'theatre', 'toilets', 'townhall', | |
| 'university', 'vehicle_inspection', 'veterinary') THEN amenity END, | |
| 'amenity_' || CASE WHEN amenity IN ('waste_disposal') AND way_area IS NOT NULL THEN amenity END, -- Waste disposal points are rendered in the low priority layer | |
| 'amenity_' || CASE WHEN amenity IN ('vending_machine') AND tags->'vending' IN ('excrement_bags', 'parking_tickets', 'public_transport_tickets') THEN amenity END, | |
| 'diplomatic_'|| CASE WHEN tags->'office' IN ('diplomatic') AND tags->'diplomatic' IN ('embassy', 'consulate') THEN tags->'diplomatic' ELSE NULL END, | |
| 'advertising_' || CASE WHEN tags->'advertising' in ('column') THEN tags->'advertising' END, | |
| 'emergency_' || CASE WHEN tags->'emergency' IN ('phone') AND way_area IS NULL THEN tags->'emergency' END, | |
| 'shop' || CASE WHEN shop IN ('yes', 'no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE '' END, | |
| 'leisure_' || CASE WHEN leisure IN ('amusement_arcade', 'beach_resort', 'bird_hide', 'bowling_alley', 'dog_park', 'firepit', 'fishing', | |
| 'fitness_centre', 'fitness_station', 'garden', 'golf_course', 'ice_rink', 'marina', 'miniature_golf', | |
| 'outdoor_seating', 'park', 'picnic_table', 'pitch', 'playground', 'recreation_ground', | |
| 'sauna', 'slipway', 'sports_centre', 'stadium', 'swimming_area', 'swimming_pool', 'track', 'water_park') THEN leisure END, | |
| 'power_' || CASE WHEN power IN ('plant', 'generator', 'substation') THEN power END, | |
| 'man_made_' || CASE WHEN (man_made IN ('chimney', 'communications_tower', 'crane', 'lighthouse', 'mast', 'obelisk', 'silo', 'storage_tank', | |
| 'telescope', 'tower', 'wastewater_plant', 'water_tower', 'water_works', 'windmill', 'works') | |
| AND (tags->'location' NOT IN ('roof', 'rooftop') OR NOT (tags ? 'location'))) THEN man_made END, | |
| 'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', | |
| 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farmland', | |
| 'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', | |
| 'construction', 'salt_pond', 'military', 'plant_nursery') THEN landuse END, | |
| 'natural_' || CASE WHEN "natural" IN ('peak', 'volcano', 'saddle', 'cave_entrance') AND way_area IS NULL THEN "natural" END, | |
| 'natural_' || CASE WHEN "natural" IN ('wood', 'water', 'mud', 'wetland', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath', | |
| 'grassland', 'scrub', 'beach', 'glacier', 'tree', 'strait', 'cape') | |
| THEN "natural" END, | |
| 'waterway_' || CASE WHEN "waterway" IN ('waterfall') AND way_area IS NULL THEN waterway END, | |
| 'place_' || CASE WHEN place IN ('island', 'islet', 'square') THEN place END, | |
| 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site', 'fort', 'castle', 'manor', 'city_gate') | |
| THEN historic END, | |
| 'military_'|| CASE WHEN military IN ('danger_area', 'bunker') THEN military END, | |
| 'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'traffic_signals') THEN highway END, | |
| 'highway_'|| CASE WHEN tags @> 'ford=>yes' OR tags @> 'ford=>stepping_stones' AND way_area IS NULL THEN 'ford' END, | |
| 'boundary_' || CASE WHEN boundary IN ('aboriginal_lands', 'national_park') | |
| OR (boundary = 'protected_area' AND tags->'protect_class' IN ('1','1a','1b','2','3','4','5','6')) | |
| THEN boundary END, | |
| 'leisure_' || CASE WHEN leisure IN ('nature_reserve') THEN leisure END, | |
| 'tourism_' || CASE WHEN tourism IN ('information') AND tags->'information' IN ('audioguide', 'board', 'guidepost', 'office', 'map', 'tactile_map', 'terminal') THEN tourism END, | |
| 'office' || CASE WHEN tags->'office' IN ('no', 'vacant', 'closed', 'disused', 'empty') OR (tags->'office') IS NULL THEN NULL ELSE '' END, | |
| 'barrier_' || CASE WHEN barrier IN ('toll_booth') AND way_area IS NULL THEN barrier END, | |
| 'waterway_' || CASE WHEN waterway IN ('dam', 'weir', 'dock') THEN waterway END, | |
| 'amenity_' || CASE WHEN amenity IN ('bicycle_parking', 'motorcycle_parking') THEN amenity END, | |
| 'amenity_' || CASE WHEN amenity IN ('parking') AND (tags->'parking' NOT IN ('underground') OR (tags->'parking') IS NULL) THEN amenity END, | |
| 'amenity_' || CASE WHEN amenity IN ('parking_entrance') | |
| AND tags->'parking' IN ('multi-storey', 'underground') | |
| AND (access IS NULL OR access NOT IN ('private', 'no')) | |
| AND way_area IS NULL | |
| THEN amenity END, | |
| 'tourism_' || CASE WHEN tourism IN ('viewpoint', 'attraction') THEN tourism END, | |
| 'place_' || CASE WHEN place IN ('locality') AND way_area IS NULL THEN place END | |
| ) AS feature, | |
| access, | |
| CASE | |
| WHEN "natural" IN ('peak', 'volcano', 'saddle') THEN | |
| CASE | |
| WHEN tags->'ele' ~ '^-?\d{1,4}(\.\d+)?$' THEN (tags->'ele')::NUMERIC | |
| END | |
| WHEN "waterway" IN ('waterfall') THEN | |
| CASE | |
| WHEN tags->'height' ~ '^\d{1,3}(\.\d+)?( m)?$' THEN (SUBSTRING(tags->'height', '^(\d{1,3}(\.\d+)?)( m)?$'))::NUMERIC | |
| END | |
| END AS score, | |
| religion, | |
| tags->'denomination' as denomination, | |
| tags->'generator:source' as "generator:source", | |
| CASE | |
| WHEN (man_made IN ('mast', 'tower', 'chimney', 'crane') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) | |
| OR waterway IN ('waterfall') THEN | |
| CASE | |
| WHEN tags->'height' ~ '^\d{1,3}(\.\d+)?( m)?$' THEN (SUBSTRING(tags->'height', '^(\d{1,3}(\.\d+)?)( m)?$'))::NUMERIC | |
| END | |
| END AS height, | |
| tags->'location' as location, | |
| tags->'icao' as icao, | |
| tags->'iata' as iata, | |
| tags->'office' as office, | |
| tags->'recycling_type' as recycling_type, | |
| tags->'tower:construction' as "tower:construction", | |
| tags->'tower:type' as "tower:type", | |
| tags->'telescope:type' as "telescope:type", | |
| CASE | |
| WHEN man_made IN ('telescope') THEN | |
| CASE | |
| WHEN tags->'telescope:diameter' ~ '^-?\d{1,4}(\.\d+)?$' THEN (tags->'telescope:diameter')::NUMERIC | |
| END | |
| END AS "telescope:diameter", | |
| tags->'castle_type' as castle_type, | |
| tags->'sport' as sport, | |
| tags->'information' as information, | |
| tags->'memorial' as memorial, | |
| tags->'artwork_type' as artwork_type, | |
| tags->'vending' as vending, | |
| CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'bed', 'bookmaker', 'books', 'butcher', 'carpet', 'clothes', 'computer', | |
| 'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fabric', 'fishmonger', 'florist', | |
| 'garden_centre', 'hairdresser', 'hifi', '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', 'coffee', 'tyres', 'pastry', 'chocolate', | |
| 'music', 'medical_supply', 'dairy', 'video_games', 'houseware', 'ticket', 'charity', 'second_hand', | |
| 'interior_decoration', 'video', 'paint', 'massage', 'trade', 'wholesale') THEN shop | |
| ELSE 'other' END AS shop, | |
| CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building, | |
| tags->'operator' AS operator, | |
| ref, | |
| way_area, | |
| COALESCE(way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0), 0) AS way_pixels | |
| FROM | |
| (SELECT | |
| ST_PointOnSurface(way) AS way, | |
| name, | |
| access, | |
| aeroway, | |
| amenity, | |
| barrier, | |
| boundary, | |
| building, | |
| highway, | |
| historic, | |
| landuse, | |
| leisure, | |
| man_made, | |
| military, | |
| "natural", | |
| place, | |
| power, | |
| ref, | |
| religion, | |
| shop, | |
| tourism, | |
| waterway, | |
| tags, | |
| way_area | |
| FROM planet_osm_polygon | |
| WHERE way && !bbox! -- Not ST_PointOnSurface(way) because name might be NULL | |
| AND way_area < 768000*POW(!scale_denominator!*0.001*0.28,2) | |
| UNION ALL | |
| SELECT | |
| way, | |
| name, | |
| access, | |
| aeroway, | |
| amenity, | |
| barrier, | |
| boundary, | |
| building, | |
| highway, | |
| historic, | |
| landuse, | |
| leisure, | |
| man_made, | |
| military, | |
| "natural", | |
| place, | |
| power, | |
| ref, | |
| religion, | |
| shop, | |
| tourism, | |
| waterway, | |
| tags, | |
| NULL AS way_area | |
| FROM planet_osm_point | |
| WHERE way && !bbox! | |
| ) _ | |
| ) AS features | |
| WHERE feature IS NOT NULL | |
| ORDER BY score DESC NULLS LAST, | |
| way_pixels DESC NULLS LAST | |
| ) AS amenity_points | |
| properties: | |
| cache-features: true | |
| minzoom: 10 | |
| - id: amenity-line | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| COALESCE( | |
| 'highway_' || CASE WHEN tags @> 'ford=>yes' OR tags @> 'ford=>stepping_stones' THEN 'ford' END, | |
| 'leisure_' || CASE WHEN leisure IN ('slipway', 'track') THEN leisure END, | |
| 'attraction_' || CASE WHEN tags @> 'attraction=>water_slide' THEN 'water_slide' END | |
| ) AS feature | |
| FROM planet_osm_line | |
| -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering | |
| WHERE tags @> 'ford=>yes' OR tags @> 'ford=>stepping_stones' | |
| OR leisure IN ('slipway', 'track') | |
| OR tags @> 'attraction=>water_slide' | |
| ORDER BY COALESCE(layer,0) | |
| ) AS amenity_line | |
| properties: | |
| minzoom: 16 | |
| - id: power-towers | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| power | |
| FROM planet_osm_point | |
| WHERE power IN ('tower', 'pole') | |
| ORDER BY | |
| CASE power | |
| WHEN 'tower' THEN 2 | |
| WHEN 'pole' THEN 1 | |
| END DESC | |
| ) AS power_towers | |
| properties: | |
| minzoom: 14 | |
| - id: roads-text-ref-low-zoom | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| highway, | |
| height, | |
| width, | |
| refs | |
| FROM ( | |
| SELECT | |
| way, | |
| osm_id, | |
| 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, | |
| osm_id, | |
| 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 | |
| ORDER BY | |
| CASE | |
| WHEN highway = 'motorway' THEN 38 | |
| WHEN highway = 'trunk' THEN 37 | |
| WHEN highway = 'primary' THEN 36 | |
| WHEN highway = 'secondary' THEN 35 | |
| END DESC NULLS LAST, | |
| height DESC, | |
| width DESC, | |
| refs, | |
| osm_id | |
| ) AS roads_text_ref_low_zoom | |
| properties: | |
| minzoom: 10 | |
| maxzoom: 12 | |
| - id: roads-text-ref | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| highway, | |
| height, | |
| width, | |
| refs | |
| FROM ( | |
| SELECT | |
| osm_id, | |
| 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 | |
| osm_id, | |
| way, | |
| COALESCE( | |
| CASE WHEN highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary') THEN highway END, | |
| CASE WHEN aeroway IN ('runway', 'taxiway') THEN aeroway END | |
| ) AS highway, | |
| string_to_array(ref, ';') AS refs | |
| FROM planet_osm_line | |
| WHERE (highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary') OR aeroway IN ('runway', 'taxiway')) | |
| AND ref IS NOT NULL | |
| ) AS p) AS q | |
| WHERE height <= 4 AND width <= 11 | |
| ORDER BY | |
| CASE | |
| WHEN highway = 'motorway' THEN 38 | |
| WHEN highway = 'trunk' THEN 37 | |
| WHEN highway = 'primary' THEN 36 | |
| WHEN highway = 'secondary' THEN 35 | |
| WHEN highway = 'tertiary' THEN 34 | |
| WHEN highway = 'runway' THEN 6 | |
| WHEN highway = 'taxiway' THEN 5 | |
| END DESC NULLS LAST, | |
| height DESC, | |
| width DESC, | |
| refs, | |
| osm_id | |
| ) AS roads_text_ref | |
| properties: | |
| minzoom: 13 | |
| - id: roads-area-text-name | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| ST_PointOnSurface(way) AS way, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels, | |
| highway, | |
| name | |
| FROM planet_osm_polygon | |
| WHERE ST_PointOnSurface(way) && !bbox! | |
| AND name IS NOT NULL | |
| AND (highway IN ('pedestrian', 'footway', 'service', 'living_street', 'platform') | |
| OR (railway IN ('platform') | |
| AND (tags->'location' NOT IN ('underground') OR (tags->'location') IS NULL) | |
| AND (tunnel NOT IN ('yes', 'building_passage') OR tunnel IS NULL) | |
| AND (covered NOT IN ('yes') OR covered IS NULL))) | |
| AND way_area > 3000*POW(!scale_denominator!*0.001*0.28,2) | |
| AND way_area < 768000*POW(!scale_denominator!*0.001*0.28,2) | |
| ORDER BY way_area DESC | |
| ) AS roads_area_text_name | |
| properties: | |
| minzoom: 15 | |
| - id: roads-text-name | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| CASE WHEN substr(highway, length(highway)-4, 5) = '_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, | |
| construction, | |
| 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' | |
| END AS oneway, | |
| horse, bicycle | |
| FROM planet_osm_line l | |
| 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')) | |
| ORDER BY | |
| z_order DESC, -- put important roads first | |
| COALESCE(layer, 0), -- put top layered roads first | |
| length(name) DESC, -- Try to fit big labels in first | |
| name DESC, -- Force a consistent ordering between differently named streets | |
| l.osm_id DESC -- Force an ordering for streets of the same name, e.g. dualized roads | |
| ) AS roads_text_name | |
| properties: | |
| cache-features: true | |
| minzoom: 13 | |
| - id: paths-text-name | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| highway, | |
| construction, | |
| 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' | |
| END AS oneway, | |
| horse, | |
| bicycle | |
| FROM planet_osm_line | |
| WHERE highway IN ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'construction') | |
| AND (name IS NOT NULL | |
| OR oneway IN ('yes', '-1') | |
| OR junction IN ('roundabout')) | |
| ) AS paths_text_name | |
| properties: | |
| cache-features: true | |
| minzoom: 15 | |
| - id: railways-text-name | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| 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 AS railway, | |
| CASE WHEN (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') THEN 'yes' ELSE 'no' END AS tunnel, | |
| tags->'highspeed' as highspeed, | |
| tags->'usage' as usage, | |
| construction, | |
| name | |
| FROM planet_osm_line l | |
| WHERE railway IN ('rail', 'subway', 'narrow_gauge', 'light_rail', 'preserved', 'funicular', | |
| 'monorail', 'miniature', 'tram', 'disused', 'construction') | |
| AND (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) | |
| AND highway IS NULL -- Prevent duplicate rendering | |
| AND name IS NOT NULL | |
| ORDER BY | |
| z_order DESC, -- put important rails first | |
| COALESCE(layer, 0), -- put top layered rails first | |
| length(name) DESC, -- Try to fit big labels in first | |
| name DESC, -- Force a consistent ordering between differently named railways | |
| l.osm_id DESC -- Force an ordering for railways of the same name, e.g. dualized rails | |
| ) AS railways_text_name | |
| properties: | |
| minzoom: 11 | |
| - id: roads-text-ref-minor | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| highway, | |
| height, | |
| width, | |
| refs | |
| FROM ( | |
| SELECT | |
| osm_id, | |
| 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 | |
| osm_id, | |
| way, | |
| CASE WHEN highway IN ('unclassified', 'residential', 'track') THEN highway END AS highway, | |
| string_to_array(ref, ';') AS refs | |
| FROM planet_osm_line | |
| WHERE highway IN ('unclassified', 'residential', 'track') | |
| AND ref IS NOT NULL | |
| ) AS p) AS q | |
| WHERE height <= 4 AND width <= 11 | |
| ORDER BY | |
| CASE | |
| WHEN highway = 'unclassified' THEN 33 | |
| WHEN highway = 'residential' THEN 32 | |
| WHEN highway = 'track' THEN 30 | |
| END DESC NULLS LAST, | |
| height DESC, | |
| width DESC, | |
| refs, | |
| osm_id | |
| ) AS roads_text_ref_minor | |
| properties: | |
| minzoom: 15 | |
| - id: text-poly-low-zoom | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| ST_PointOnSurface(way) AS way, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels, | |
| COALESCE( | |
| 'landuse_' || CASE WHEN landuse IN ('forest', 'military', 'farmland') THEN landuse END, | |
| 'military_' || CASE WHEN military IN ('danger_area') THEN military END, | |
| 'natural_' || CASE WHEN "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock', | |
| 'water', 'bay', 'strait') THEN "natural" END, | |
| 'place_' || CASE WHEN place IN ('island') THEN place END, | |
| 'boundary_' || CASE WHEN boundary IN ('aboriginal_lands', 'national_park') | |
| OR (boundary = 'protected_area' AND tags->'protect_class' IN ('1','1a','1b','2','3','4','5','6')) | |
| THEN boundary END, | |
| 'leisure_' || CASE WHEN leisure IN ('nature_reserve') THEN leisure 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 ST_PointOnSurface(way) && !bbox! | |
| AND name IS NOT NULL | |
| AND (landuse IN ('forest', 'military', 'farmland') | |
| OR military IN ('danger_area') | |
| OR "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock', 'water', 'bay', 'strait') | |
| OR "place" IN ('island') | |
| OR boundary IN ('aboriginal_lands', 'national_park') | |
| OR (boundary = 'protected_area' AND tags->'protect_class' IN ('1','1a','1b','2','3','4','5','6')) | |
| OR leisure IN ('nature_reserve')) | |
| AND building IS NULL | |
| AND way_area > 100*POW(!scale_denominator!*0.001*0.28,2) | |
| AND way_area < 768000*POW(!scale_denominator!*0.001*0.28,2) | |
| ORDER BY way_area DESC | |
| ) AS text_poly_low_zoom | |
| properties: | |
| minzoom: 0 | |
| maxzoom: 9 | |
| - id: text-line | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| NULL as way_pixels, | |
| COALESCE('aerialway_' || aerialway, 'attraction_' || CASE WHEN tags @> 'attraction=>water_slide' THEN 'water_slide' END, 'leisure_' || leisure, 'man_made_' || man_made, 'waterway_' || waterway, 'natural_' || "natural") AS feature, | |
| access, | |
| name, | |
| tags->'operator' as 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 (man_made = 'pipeline' | |
| AND tags-> 'location' IN ('overground', 'overhead', 'surface', 'outdoor') | |
| OR bridge IN ('yes', 'aqueduct', 'cantilever', 'covered', 'trestle', 'viaduct')) | |
| OR tags @> 'attraction=>water_slide' | |
| OR aerialway IN ('cable_car', 'gondola', 'mixed_lift', 'goods', 'chair_lift', 'drag_lift', 't-bar', 'j-bar', 'platter', 'rope_tow', 'zip_line') | |
| OR leisure IN ('slipway', 'track') | |
| OR waterway IN ('dam', 'weir') | |
| OR "natural" IN ('arete', 'cliff', 'ridge')) | |
| AND name IS NOT NULL | |
| ) AS text_line | |
| properties: | |
| minzoom: 10 | |
| - id: text-point | |
| 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: *amenity_points_sql | |
| properties: | |
| minzoom: 10 | |
| - id: building-text | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| name, | |
| ST_PointOnSurface(way) AS way, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels | |
| FROM planet_osm_polygon | |
| WHERE ST_PointOnSurface(way) && !bbox! | |
| AND name IS NOT NULL | |
| AND building IS NOT NULL | |
| AND building NOT IN ('no') | |
| AND way_area < 4000000*POW(!scale_denominator!*0.001*0.28,2) | |
| ORDER BY way_area DESC | |
| ) AS building_text | |
| properties: | |
| minzoom: 14 | |
| - id: interpolation | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way | |
| FROM planet_osm_line | |
| WHERE "addr:interpolation" IS NOT NULL | |
| ) AS interpolation | |
| properties: | |
| minzoom: 17 | |
| - id: addresses | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| ST_PointOnSurface(way) AS way, | |
| "addr:housenumber" AS addr_housenumber, | |
| "addr:housename" AS addr_housename, | |
| tags->'addr:unit' AS addr_unit, | |
| tags->'addr:flats' AS addr_flats, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels | |
| FROM planet_osm_polygon | |
| WHERE way && !bbox! -- Not ST_PointOnSurface(way) because name might be NULL | |
| AND (("addr:housenumber" IS NOT NULL) OR ("addr:housename" IS NOT NULL) OR ((tags->'addr:unit') IS NOT NULL) OR ((tags->'addr:flats') IS NOT NULL)) | |
| AND building IS NOT NULL | |
| AND way_area < 4000000*POW(!scale_denominator!*0.001*0.28,2) | |
| UNION ALL | |
| SELECT | |
| way, | |
| "addr:housenumber" AS addr_housenumber, | |
| "addr:housename" AS addr_housename, | |
| tags->'addr:unit' AS addr_unit, | |
| tags->'addr:flats' AS addr_flats, | |
| NULL AS way_pixels | |
| FROM planet_osm_point | |
| WHERE way && !bbox! | |
| AND (("addr:housenumber" IS NOT NULL) OR ("addr:housename" IS NOT NULL) OR ((tags->'addr:unit') IS NOT NULL) OR ((tags->'addr:flats') IS NOT NULL)) | |
| ORDER BY way_pixels DESC NULLS LAST | |
| ) AS addresses | |
| properties: | |
| minzoom: 17 | |
| - id: water-lines-text | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| waterway, | |
| lock, | |
| name, | |
| "natural", | |
| tags->'lock_name' AS lock_name, | |
| CASE WHEN tags->'intermittent' IN ('yes') | |
| OR tags->'seasonal' IN ('yes', 'spring', 'summer', 'autumn', 'winter', 'wet_season', 'dry_season') | |
| THEN 'yes' ELSE 'no' END AS int_intermittent, | |
| CASE WHEN tunnel IN ('yes', 'culvert') | |
| OR waterway = 'canal' AND tunnel = 'flooded' | |
| THEN 'yes' ELSE 'no' END AS int_tunnel | |
| FROM planet_osm_line | |
| WHERE (waterway IN ('river', 'canal', 'stream', 'drain', 'ditch') | |
| OR "natural" IN ('bay', 'strait')) | |
| AND (tunnel IS NULL OR tunnel != 'culvert') | |
| AND name IS NOT NULL | |
| ORDER BY COALESCE(layer,0) | |
| ) AS water_lines_text | |
| properties: | |
| minzoom: 13 | |
| - id: ferry-routes-text | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| name | |
| FROM planet_osm_line | |
| WHERE route = 'ferry' | |
| AND osm_id > 0 | |
| AND name IS NOT NULL | |
| ) AS ferry_routes_text | |
| properties: | |
| minzoom: 13 | |
| - id: admin-text | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| name, | |
| admin_level, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels | |
| FROM planet_osm_polygon | |
| WHERE boundary = 'administrative' | |
| AND admin_level IN ('1', '2', '3', '4', '5', '6', '7', '8', '9', '10') | |
| AND name IS NOT NULL | |
| AND osm_id < 0 | |
| AND way_area > 196000*POW(!scale_denominator!*0.001*0.28,2) | |
| ORDER BY admin_level::integer ASC, way_area DESC | |
| ) AS admin_text | |
| properties: | |
| minzoom: 11 | |
| - id: protected-areas-text | |
| geometry: linestring | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: |- | |
| (SELECT | |
| way, | |
| name, | |
| boundary, | |
| tags->'protect_class' AS protect_class, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels | |
| FROM planet_osm_polygon | |
| WHERE (boundary IN ('aboriginal_lands', 'national_park') | |
| OR leisure = 'nature_reserve' | |
| OR (boundary = 'protected_area' AND tags->'protect_class' IN ('1','1a','1b','2','3','4','5','6'))) | |
| AND name IS NOT NULL | |
| ) AS protected_areas_text | |
| properties: | |
| minzoom: 13 | |
| - id: amenity-low-priority | |
| geometry: point | |
| <<: *extents | |
| Datasource: | |
| <<: *osm2pgsql | |
| table: &amenity_low_priority_sql |- | |
| (SELECT | |
| way, | |
| name, | |
| COALESCE( | |
| 'railway_' || CASE WHEN railway IN ('level_crossing', 'crossing') AND way_area IS NULL THEN railway END, | |
| 'amenity_' || CASE WHEN amenity IN ('bench', 'waste_basket', 'waste_disposal') AND way_area IS NULL THEN amenity END, | |
| 'historic_' || CASE WHEN historic IN ('wayside_cross', 'wayside_shrine') AND way_area IS NULL THEN historic END, | |
| 'man_made_' || CASE WHEN man_made IN ('cross') AND way_area IS NULL THEN man_made END, | |
| 'barrier_' || CASE WHEN barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block', 'log', 'cattle_grid', 'stile', 'motorcycle_barrier', 'cycle_barrier', 'full-height_turnstile', 'turnstile', 'kissing_gate') THEN barrier END | |
| ) AS feature, | |
| access, | |
| way_area, | |
| way_area/NULLIF(POW(!scale_denominator!*0.001*0.28,2),0) AS way_pixels | |
| FROM | |
| (SELECT | |
| ST_PointOnSurface(way) AS way, | |
| name, | |
| access, | |
| amenity, | |
| barrier, | |
| highway, | |
| historic, | |
| man_made, | |
| railway, | |
| tags, | |
| way_area | |
| FROM planet_osm_polygon | |
| WHERE way && !bbox! -- Not ST_PointOnSurface(way) because name might be NULL | |
| AND way_area < 768000*POW(!scale_denominator!*0.001*0.28,2) | |
| UNION ALL | |
| SELECT | |
| way, | |
| name, | |
| access, | |
| amenity, | |
| barrier, | |
| highway, | |
| historic, | |
| man_made, | |
| railway, | |
| tags, | |
| NULL AS way_area | |
| FROM planet_osm_point | |
| WHERE way && !bbox! | |
| ) _ | |
| WHERE railway IN ('level_crossing', 'crossing') | |
| OR amenity IN ('bench', 'waste_basket', 'waste_disposal') | |
| OR historic IN ('wayside_cross', 'wayside_shrine') | |
| OR man_made IN ('cross') | |
| OR barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block', 'log', 'cattle_grid', 'stile', 'motorcycle_barrier', 'cycle_barrier', 'full-height_turnstile', 'turnstile', 'kissing_gate') | |
| ORDER BY | |
| CASE amenity | |
| WHEN 'waste_basket' THEN 1 | |
| WHEN 'waste_disposal' THEN 1 | |
| WHEN 'bench' THEN 2 | |
| WHEN NULL THEN 3 | |
| END DESC, | |
| way_pixels DESC NULLS LAST | |
| ) AS amenity_low_priority | |
| properties: | |
| cache-features: true | |
| minzoom: 14 | |
| - id: text-low-priority | |
| 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: *amenity_low_priority_sql | |
| properties: | |
| minzoom: 17 |