Skip to content

Instantly share code, notes, and snippets.

@OnkelTem
Created December 27, 2015 17:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save OnkelTem/9b0a7153759677765426 to your computer and use it in GitHub Desktop.
Save OnkelTem/9b0a7153759677765426 to your computer and use it in GitHub Desktop.
scale: 1
metatile: 2
name: "OpenStreetMap Carto"
description: "A faithful reimplementation of the standard OpenStreetMap style"
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"
- "roads.mss"
- "power.mss"
- "citywalls.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:
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') 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', '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', '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,
COALESCE("natural", CASE WHEN landuse = 'forest' THEN 'wood' ELSE NULL END) 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') 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: 12
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: 12
advanced: {}
- id: "tunnels"
name: "tunnels"
class: "tunnels-fill tunnels-casing access directions"
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, oneway, 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' ELSE
CASE WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
ELSE null END 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 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,
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,
NULL AS oneway,
'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: "citywalls"
name: "citywalls"
class: ""
geometry: "linestring"
<<: *extents
Datasource:
<<: *osm2pgsql
table: |-
(SELECT
way
FROM planet_osm_line
WHERE historic = 'citywalls')
AS citywalls
advanced: {}
properties:
minzoom: 14
- 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, barrier
FROM planet_osm_line
WHERE barrier IS NOT NULL
) AS line_barriers
properties:
minzoom: 16
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
FROM planet_osm_polygon
WHERE barrier IS NOT NULL
) 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, oneway, 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' ELSE
CASE WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
ELSE null END 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 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,
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,
NULL AS oneway,
'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 directions"
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, oneway, 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' ELSE
CASE WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
ELSE null END 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 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,
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,
NULL AS oneway,
'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' ELSE
CASE WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
ELSE null END 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 directions"
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, oneway, 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' ELSE
CASE WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete',
'concrete:lanes', 'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
ELSE null END 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 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,
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,
NULL AS oneway,
'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' AND (tunnel IS NULL OR tunnel != 'yes')
) 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')
ORDER BY admin_level DESC
) AS admin_low_zoom
properties:
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')
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')
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: "placenames-large"
name: "placenames-large"
class: "country state"
geometry: "point"
<<: *extents
Datasource:
<<: *osm2pgsql
table: |-
(SELECT
way,
way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
name,
ref,
admin_level
FROM planet_osm_polygon
WHERE boundary = 'administrative'
AND admin_level IN ('2', '4')
AND name IS NOT NULL
ORDER BY admin_level ASC, way_area DESC
) AS placenames_large
properties:
minzoom: 2
advanced: {}
- id: "placenames-medium"
name: "placenames-medium"
class: ""
geometry: "point"
<<: *extents
Datasource:
<<: *osm2pgsql
table: |-
(SELECT
way,
name,
score,
CASE
WHEN (place = 'city' OR (capital = 'yes' AND score >= 100000)) THEN 1
ELSE 2
END as category
FROM
(SELECT
way,
place,
name,
capital,
(
(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 = 'yes') THEN 3
WHEN (capital = '4') THEN 2
ELSE 1
END)
) AS score
FROM planet_osm_point
WHERE place IN ('city', 'town')
) as p
ORDER BY score DESC
) AS placenames_medium
properties:
minzoom: 3
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
) AS placenames_small
properties:
minzoom: 12
advanced: {}
- id: "stations"
class: "stations"
name: "stations"
geometry: "point"
<<: *extents
Datasource:
<<: *osm2pgsql
table: |-
(SELECT
way,
name,
railway,
aerialway,
disused,
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,
disused
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 ('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') 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', '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') THEN shop
WHEN shop IN ('accessories', 'antiques', 'appliance', 'art', 'baby_goods', 'bathroom_furnishing',
'bed', 'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service',
'carpet', 'charity', 'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy',
'deli', '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', 'sports',
'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', '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') 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 ('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')
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')
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 ('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') 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', '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') THEN shop
WHEN shop IN ('accessories', 'antiques', 'appliance', 'art', 'baby_goods', 'bathroom_furnishing', 'bed',
'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', 'carpet', 'charity',
'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', 'deli',
'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', 'sports', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', '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') THEN leisure ELSE NULL END,
'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill') 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 ('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')
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')
OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'cross')
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: ""
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
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
) 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 ('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') 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', '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') THEN shop
WHEN shop IN ('accessories', 'antiques', 'appliance', 'art', 'baby_goods', 'bathroom_furnishing', 'bed',
'boat', 'bookmaker', 'boutique', 'builder', 'building_materials', 'camera', 'car_service', 'carpet', 'charity',
'cheese', 'chocolate', 'coffee', 'communication', 'craft', 'curtain', 'dairy', 'deli',
'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', 'sports', 'tailor', 'tanning', 'tattoo', 'tea',
'ticket', 'tiles', 'tobacco', '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') 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') 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', '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 ('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 ('alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park',
'museum', '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')
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
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 ('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') 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', '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') THEN shop
WHEN shop IN ('accessories', 'antiques', 'appliance', 'art',
'baby_goods', 'bathroom_furnishing', 'bed', 'boat', 'bookmaker', 'boutique', 'builder',
'building_materials', 'camera', 'car_service', 'carpet', 'charity', 'cheese', 'chocolate', 'coffee',
'communication', 'craft', 'curtain', 'dairy', 'deli', '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', 'sports', 'tailor', 'tanning', 'tattoo',
'tea', 'ticket', 'tiles', 'tobacco', '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') 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') 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 ('attraction', '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,
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 ('alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park',
'museum', 'attraction', 'zoo', 'information', 'viewpoint', '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')
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
) 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: "housenumbers"
name: "housenumbers"
class: ""
geometry: "point"
<<: *extents
Datasource:
<<: *osm2pgsql
table: |-
(SELECT
way,
"addr:housenumber",
way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
FROM planet_osm_polygon
WHERE "addr:housenumber" IS NOT NULL
AND building IS NOT NULL
UNION ALL
SELECT
way,
"addr:housenumber",
NULL AS way_pixels
FROM planet_osm_point
WHERE "addr:housenumber" IS NOT NULL
ORDER BY way_pixels DESC NULLS LAST
) AS housenumbers
properties:
minzoom: 17
advanced: {}
- id: "housenames"
name: "housenames"
class: ""
geometry: "point"
<<: *extents
Datasource:
<<: *osm2pgsql
table: |-
(SELECT
way,
"addr:housename",
way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
FROM planet_osm_polygon
WHERE "addr:housename" IS NOT NULL
AND building IS NOT NULL
UNION ALL
SELECT
way,
"addr:housename",
NULL AS way_pixels
FROM planet_osm_point WHERE "addr:housename" IS NOT NULL
ORDER BY way_pixels DESC NULLS LAST
) AS housenames
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,
amenity,
railway,
highway,
barrier,
man_made,
historic,
access,
name,
CASE WHEN amenity='waste_basket' THEN 2 ELSE 1 END AS prio
FROM planet_osm_point p
WHERE barrier IN ('bollard', 'gate', 'lift_gate', 'block')
OR highway IN ('mini_roundabout')
OR railway = 'level_crossing'
OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'bench', 'waste_basket')
OR historic = 'wayside_cross'
OR man_made = 'cross'
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,
amenity,
railway,
highway,
barrier,
man_made,
historic,
access,
name
FROM planet_osm_polygon
WHERE barrier IN ('bollard', 'gate', 'lift_gate', 'block')
OR highway IN ('mini_roundabout')
OR railway = 'level_crossing'
OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking')
) AS amenity_low_priority_poly
properties:
minzoom: 14
advanced: {}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment