From 6a4ef6ee54ce90426b3bd50a34bd960bc8147ada Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Wed, 2 Jul 2014 17:38:35 +0200 Subject: [PATCH 01/74] render beach from z9 --- landcover.mss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/landcover.mss b/landcover.mss index 7557397584..bd929897a6 100644 --- a/landcover.mss +++ b/landcover.mss @@ -365,7 +365,7 @@ line-color: saturate(darken(@aerodrome, 40%), 20%); } - [feature = 'natural_beach'][zoom >= 13] { + [feature = 'natural_beach'][zoom >= 9] { polygon-pattern-file: url('symbols/beach.png'); } From f04c2b607c6aa884e49403b9b42317f45384214f Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Mon, 7 Jul 2014 21:07:38 +0200 Subject: [PATCH 02/74] Change POIs displayed at z15 and z16 as discussed on #689 makes #70 less severe or maybe even fixed --- amenity-points.mss | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/amenity-points.mss b/amenity-points.mss index 49d64fbe69..67629a3b34 100644 --- a/amenity-points.mss +++ b/amenity-points.mss @@ -86,12 +86,12 @@ point-placement: interior; } - [amenity = 'cinema'][zoom >= 17]::amenity { + [amenity = 'cinema'][zoom >= 16]::amenity { point-file: url('symbols/cinema.p.24.png'); point-placement: interior; } - [amenity = 'fire_station'][zoom >= 17]::amenity { + [amenity = 'fire_station'][zoom >= 16]::amenity { point-file: url('symbols/firestation.p.16.png'); point-placement: interior; } @@ -126,7 +126,7 @@ point-placement: interior; } - [tourism = 'information'][zoom >= 16]::tourism { + [tourism = 'information'][zoom >= 17]::tourism { point-file: url('symbols/information.p.16.png'); point-placement: interior; } @@ -136,12 +136,12 @@ point-placement: interior; } - [amenity = 'library'][zoom >= 17]::amenity { + [amenity = 'library'][zoom >= 16]::amenity { point-file: url('symbols/library.p.20.png'); point-placement: interior; } - [amenity = 'courthouse'][zoom > 17]::amenity { + [amenity = 'courthouse'][zoom > 15]::amenity { point-file: url('symbols/amenity_court.p.20.png'); point-placement: interior; } @@ -159,12 +159,12 @@ point-placement: interior; } - [tourism = 'museum'][zoom >= 17]::tourism { + [tourism = 'museum'][zoom >= 16]::tourism { point-file: url('symbols/museum.p.16.png'); point-placement: interior; } - [amenity = 'parking'][zoom >= 15]::amenity { + [amenity = 'parking'][zoom >= 16]::amenity { marker-file: url('symbols/parking.svg'); marker-placement: interior; marker-clip: false; @@ -208,7 +208,7 @@ } } - [amenity = 'police'][zoom >= 17]::amenity { + [amenity = 'police'][zoom >= 16]::amenity { point-file: url('symbols/police.p.16.png'); point-placement: interior; } @@ -223,12 +223,12 @@ point-placement: interior; } - [amenity = 'pub'][zoom >= 16]::amenity { + [amenity = 'pub'][zoom >= 17]::amenity { point-file: url('symbols/pub.p.16.png'); point-placement: interior; } - [amenity = 'biergarten'][zoom >= 16]::amenity { + [amenity = 'biergarten'][zoom >= 17]::amenity { point-file: url('symbols/biergarten.p.16.png'); point-placement: interior; } @@ -258,7 +258,7 @@ point-placement: interior; } - [amenity = 'theatre'][zoom >= 17]::amenity { + [amenity = 'theatre'][zoom >= 16]::amenity { point-file: url('symbols/theatre.p.20.png'); point-placement: interior; } From c9ac7a0baea87cf0875b01672da41471a411eb6d Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Mon, 7 Jul 2014 21:14:03 +0200 Subject: [PATCH 03/74] follow CartoCSS Style Guidelines "Always specify zoom levels as either >= or < . Don't use = or =< or >" --- amenity-points.mss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/amenity-points.mss b/amenity-points.mss index 67629a3b34..bfb3c8bc53 100644 --- a/amenity-points.mss +++ b/amenity-points.mss @@ -141,7 +141,7 @@ point-placement: interior; } - [amenity = 'courthouse'][zoom > 15]::amenity { + [amenity = 'courthouse'][zoom >= 16]::amenity { point-file: url('symbols/amenity_court.p.20.png'); point-placement: interior; } From aa02ce4a1518acb0c655698e321e3ab1e7635adc Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Fri, 11 Jul 2014 17:27:40 +0200 Subject: [PATCH 04/74] render beach from z10 --- landcover.mss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/landcover.mss b/landcover.mss index bd929897a6..dcb9f5e820 100644 --- a/landcover.mss +++ b/landcover.mss @@ -365,7 +365,7 @@ line-color: saturate(darken(@aerodrome, 40%), 20%); } - [feature = 'natural_beach'][zoom >= 9] { + [feature = 'natural_beach'][zoom >= 10] { polygon-pattern-file: url('symbols/beach.png'); } From e98bb12088f767774800cdb0afa74dbc016e23ec Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Sun, 20 Jul 2014 19:24:06 -0700 Subject: [PATCH 05/74] Create new multi-line shields This expands the shield generation script to cover multi-line shields, and commits those shields. It doesn't yet use them. --- scripts/create_standard_shields | 30 +++++++++++++++++------------- symbols/shields/motorway_10x2.svg | 5 +++++ symbols/shields/motorway_10x3.svg | 5 +++++ symbols/shields/motorway_10x4.svg | 5 +++++ symbols/shields/motorway_11x2.svg | 5 +++++ symbols/shields/motorway_11x3.svg | 5 +++++ symbols/shields/motorway_11x4.svg | 5 +++++ symbols/shields/motorway_1x2.svg | 5 +++++ symbols/shields/motorway_1x3.svg | 5 +++++ symbols/shields/motorway_1x4.svg | 5 +++++ symbols/shields/motorway_2x2.svg | 5 +++++ symbols/shields/motorway_2x3.svg | 5 +++++ symbols/shields/motorway_2x4.svg | 5 +++++ symbols/shields/motorway_3x2.svg | 5 +++++ symbols/shields/motorway_3x3.svg | 5 +++++ symbols/shields/motorway_3x4.svg | 5 +++++ symbols/shields/motorway_4x2.svg | 5 +++++ symbols/shields/motorway_4x3.svg | 5 +++++ symbols/shields/motorway_4x4.svg | 5 +++++ symbols/shields/motorway_5x2.svg | 5 +++++ symbols/shields/motorway_5x3.svg | 5 +++++ symbols/shields/motorway_5x4.svg | 5 +++++ symbols/shields/motorway_6x2.svg | 5 +++++ symbols/shields/motorway_6x3.svg | 5 +++++ symbols/shields/motorway_6x4.svg | 5 +++++ symbols/shields/motorway_7x2.svg | 5 +++++ symbols/shields/motorway_7x3.svg | 5 +++++ symbols/shields/motorway_7x4.svg | 5 +++++ symbols/shields/motorway_8x2.svg | 5 +++++ symbols/shields/motorway_8x3.svg | 5 +++++ symbols/shields/motorway_8x4.svg | 5 +++++ symbols/shields/motorway_9x2.svg | 5 +++++ symbols/shields/motorway_9x3.svg | 5 +++++ symbols/shields/motorway_9x4.svg | 5 +++++ symbols/shields/primary_10x2.svg | 5 +++++ symbols/shields/primary_10x3.svg | 5 +++++ symbols/shields/primary_10x4.svg | 5 +++++ symbols/shields/primary_11x2.svg | 5 +++++ symbols/shields/primary_11x3.svg | 5 +++++ symbols/shields/primary_11x4.svg | 5 +++++ symbols/shields/primary_1x2.svg | 5 +++++ symbols/shields/primary_1x3.svg | 5 +++++ symbols/shields/primary_1x4.svg | 5 +++++ symbols/shields/primary_2x2.svg | 5 +++++ symbols/shields/primary_2x3.svg | 5 +++++ symbols/shields/primary_2x4.svg | 5 +++++ symbols/shields/primary_3x2.svg | 5 +++++ symbols/shields/primary_3x3.svg | 5 +++++ symbols/shields/primary_3x4.svg | 5 +++++ symbols/shields/primary_4x2.svg | 5 +++++ symbols/shields/primary_4x3.svg | 5 +++++ symbols/shields/primary_4x4.svg | 5 +++++ symbols/shields/primary_5x2.svg | 5 +++++ symbols/shields/primary_5x3.svg | 5 +++++ symbols/shields/primary_5x4.svg | 5 +++++ symbols/shields/primary_6x2.svg | 5 +++++ symbols/shields/primary_6x3.svg | 5 +++++ symbols/shields/primary_6x4.svg | 5 +++++ symbols/shields/primary_7x2.svg | 5 +++++ symbols/shields/primary_7x3.svg | 5 +++++ symbols/shields/primary_7x4.svg | 5 +++++ symbols/shields/primary_8x2.svg | 5 +++++ symbols/shields/primary_8x3.svg | 5 +++++ symbols/shields/primary_8x4.svg | 5 +++++ symbols/shields/primary_9x2.svg | 5 +++++ symbols/shields/primary_9x3.svg | 5 +++++ symbols/shields/primary_9x4.svg | 5 +++++ symbols/shields/secondary_10x2.svg | 5 +++++ symbols/shields/secondary_10x3.svg | 5 +++++ symbols/shields/secondary_10x4.svg | 5 +++++ symbols/shields/secondary_11x2.svg | 5 +++++ symbols/shields/secondary_11x3.svg | 5 +++++ symbols/shields/secondary_11x4.svg | 5 +++++ symbols/shields/secondary_1x2.svg | 5 +++++ symbols/shields/secondary_1x3.svg | 5 +++++ symbols/shields/secondary_1x4.svg | 5 +++++ symbols/shields/secondary_2x2.svg | 5 +++++ symbols/shields/secondary_2x3.svg | 5 +++++ symbols/shields/secondary_2x4.svg | 5 +++++ symbols/shields/secondary_3x2.svg | 5 +++++ symbols/shields/secondary_3x3.svg | 5 +++++ symbols/shields/secondary_3x4.svg | 5 +++++ symbols/shields/secondary_4x2.svg | 5 +++++ symbols/shields/secondary_4x3.svg | 5 +++++ symbols/shields/secondary_4x4.svg | 5 +++++ symbols/shields/secondary_5x2.svg | 5 +++++ symbols/shields/secondary_5x3.svg | 5 +++++ symbols/shields/secondary_5x4.svg | 5 +++++ symbols/shields/secondary_6x2.svg | 5 +++++ symbols/shields/secondary_6x3.svg | 5 +++++ symbols/shields/secondary_6x4.svg | 5 +++++ symbols/shields/secondary_7x2.svg | 5 +++++ symbols/shields/secondary_7x3.svg | 5 +++++ symbols/shields/secondary_7x4.svg | 5 +++++ symbols/shields/secondary_8x2.svg | 5 +++++ symbols/shields/secondary_8x3.svg | 5 +++++ symbols/shields/secondary_8x4.svg | 5 +++++ symbols/shields/secondary_9x2.svg | 5 +++++ symbols/shields/secondary_9x3.svg | 5 +++++ symbols/shields/secondary_9x4.svg | 5 +++++ symbols/shields/tertiary_10x2.svg | 5 +++++ symbols/shields/tertiary_10x3.svg | 5 +++++ symbols/shields/tertiary_10x4.svg | 5 +++++ symbols/shields/tertiary_11x2.svg | 5 +++++ symbols/shields/tertiary_11x3.svg | 5 +++++ symbols/shields/tertiary_11x4.svg | 5 +++++ symbols/shields/tertiary_1x2.svg | 5 +++++ symbols/shields/tertiary_1x3.svg | 5 +++++ symbols/shields/tertiary_1x4.svg | 5 +++++ symbols/shields/tertiary_2x2.svg | 5 +++++ symbols/shields/tertiary_2x3.svg | 5 +++++ symbols/shields/tertiary_2x4.svg | 5 +++++ symbols/shields/tertiary_3x2.svg | 5 +++++ symbols/shields/tertiary_3x3.svg | 5 +++++ symbols/shields/tertiary_3x4.svg | 5 +++++ symbols/shields/tertiary_4x2.svg | 5 +++++ symbols/shields/tertiary_4x3.svg | 5 +++++ symbols/shields/tertiary_4x4.svg | 5 +++++ symbols/shields/tertiary_5x2.svg | 5 +++++ symbols/shields/tertiary_5x3.svg | 5 +++++ symbols/shields/tertiary_5x4.svg | 5 +++++ symbols/shields/tertiary_6x2.svg | 5 +++++ symbols/shields/tertiary_6x3.svg | 5 +++++ symbols/shields/tertiary_6x4.svg | 5 +++++ symbols/shields/tertiary_7x2.svg | 5 +++++ symbols/shields/tertiary_7x3.svg | 5 +++++ symbols/shields/tertiary_7x4.svg | 5 +++++ symbols/shields/tertiary_8x2.svg | 5 +++++ symbols/shields/tertiary_8x3.svg | 5 +++++ symbols/shields/tertiary_8x4.svg | 5 +++++ symbols/shields/tertiary_9x2.svg | 5 +++++ symbols/shields/tertiary_9x3.svg | 5 +++++ symbols/shields/tertiary_9x4.svg | 5 +++++ symbols/shields/trunk_10x2.svg | 5 +++++ symbols/shields/trunk_10x3.svg | 5 +++++ symbols/shields/trunk_10x4.svg | 5 +++++ symbols/shields/trunk_11x2.svg | 5 +++++ symbols/shields/trunk_11x3.svg | 5 +++++ symbols/shields/trunk_11x4.svg | 5 +++++ symbols/shields/trunk_1x2.svg | 5 +++++ symbols/shields/trunk_1x3.svg | 5 +++++ symbols/shields/trunk_1x4.svg | 5 +++++ symbols/shields/trunk_2x2.svg | 5 +++++ symbols/shields/trunk_2x3.svg | 5 +++++ symbols/shields/trunk_2x4.svg | 5 +++++ symbols/shields/trunk_3x2.svg | 5 +++++ symbols/shields/trunk_3x3.svg | 5 +++++ symbols/shields/trunk_3x4.svg | 5 +++++ symbols/shields/trunk_4x2.svg | 5 +++++ symbols/shields/trunk_4x3.svg | 5 +++++ symbols/shields/trunk_4x4.svg | 5 +++++ symbols/shields/trunk_5x2.svg | 5 +++++ symbols/shields/trunk_5x3.svg | 5 +++++ symbols/shields/trunk_5x4.svg | 5 +++++ symbols/shields/trunk_6x2.svg | 5 +++++ symbols/shields/trunk_6x3.svg | 5 +++++ symbols/shields/trunk_6x4.svg | 5 +++++ symbols/shields/trunk_7x2.svg | 5 +++++ symbols/shields/trunk_7x3.svg | 5 +++++ symbols/shields/trunk_7x4.svg | 5 +++++ symbols/shields/trunk_8x2.svg | 5 +++++ symbols/shields/trunk_8x3.svg | 5 +++++ symbols/shields/trunk_8x4.svg | 5 +++++ symbols/shields/trunk_9x2.svg | 5 +++++ symbols/shields/trunk_9x3.svg | 5 +++++ symbols/shields/trunk_9x4.svg | 5 +++++ 166 files changed, 842 insertions(+), 13 deletions(-) create mode 100644 symbols/shields/motorway_10x2.svg create mode 100644 symbols/shields/motorway_10x3.svg create mode 100644 symbols/shields/motorway_10x4.svg create mode 100644 symbols/shields/motorway_11x2.svg create mode 100644 symbols/shields/motorway_11x3.svg create mode 100644 symbols/shields/motorway_11x4.svg create mode 100644 symbols/shields/motorway_1x2.svg create mode 100644 symbols/shields/motorway_1x3.svg create mode 100644 symbols/shields/motorway_1x4.svg create mode 100644 symbols/shields/motorway_2x2.svg create mode 100644 symbols/shields/motorway_2x3.svg create mode 100644 symbols/shields/motorway_2x4.svg create mode 100644 symbols/shields/motorway_3x2.svg create mode 100644 symbols/shields/motorway_3x3.svg create mode 100644 symbols/shields/motorway_3x4.svg create mode 100644 symbols/shields/motorway_4x2.svg create mode 100644 symbols/shields/motorway_4x3.svg create mode 100644 symbols/shields/motorway_4x4.svg create mode 100644 symbols/shields/motorway_5x2.svg create mode 100644 symbols/shields/motorway_5x3.svg create mode 100644 symbols/shields/motorway_5x4.svg create mode 100644 symbols/shields/motorway_6x2.svg create mode 100644 symbols/shields/motorway_6x3.svg create mode 100644 symbols/shields/motorway_6x4.svg create mode 100644 symbols/shields/motorway_7x2.svg create mode 100644 symbols/shields/motorway_7x3.svg create mode 100644 symbols/shields/motorway_7x4.svg create mode 100644 symbols/shields/motorway_8x2.svg create mode 100644 symbols/shields/motorway_8x3.svg create mode 100644 symbols/shields/motorway_8x4.svg create mode 100644 symbols/shields/motorway_9x2.svg create mode 100644 symbols/shields/motorway_9x3.svg create mode 100644 symbols/shields/motorway_9x4.svg create mode 100644 symbols/shields/primary_10x2.svg create mode 100644 symbols/shields/primary_10x3.svg create mode 100644 symbols/shields/primary_10x4.svg create mode 100644 symbols/shields/primary_11x2.svg create mode 100644 symbols/shields/primary_11x3.svg create mode 100644 symbols/shields/primary_11x4.svg create mode 100644 symbols/shields/primary_1x2.svg create mode 100644 symbols/shields/primary_1x3.svg create mode 100644 symbols/shields/primary_1x4.svg create mode 100644 symbols/shields/primary_2x2.svg create mode 100644 symbols/shields/primary_2x3.svg create mode 100644 symbols/shields/primary_2x4.svg create mode 100644 symbols/shields/primary_3x2.svg create mode 100644 symbols/shields/primary_3x3.svg create mode 100644 symbols/shields/primary_3x4.svg create mode 100644 symbols/shields/primary_4x2.svg create mode 100644 symbols/shields/primary_4x3.svg create mode 100644 symbols/shields/primary_4x4.svg create mode 100644 symbols/shields/primary_5x2.svg create mode 100644 symbols/shields/primary_5x3.svg create mode 100644 symbols/shields/primary_5x4.svg create mode 100644 symbols/shields/primary_6x2.svg create mode 100644 symbols/shields/primary_6x3.svg create mode 100644 symbols/shields/primary_6x4.svg create mode 100644 symbols/shields/primary_7x2.svg create mode 100644 symbols/shields/primary_7x3.svg create mode 100644 symbols/shields/primary_7x4.svg create mode 100644 symbols/shields/primary_8x2.svg create mode 100644 symbols/shields/primary_8x3.svg create mode 100644 symbols/shields/primary_8x4.svg create mode 100644 symbols/shields/primary_9x2.svg create mode 100644 symbols/shields/primary_9x3.svg create mode 100644 symbols/shields/primary_9x4.svg create mode 100644 symbols/shields/secondary_10x2.svg create mode 100644 symbols/shields/secondary_10x3.svg create mode 100644 symbols/shields/secondary_10x4.svg create mode 100644 symbols/shields/secondary_11x2.svg create mode 100644 symbols/shields/secondary_11x3.svg create mode 100644 symbols/shields/secondary_11x4.svg create mode 100644 symbols/shields/secondary_1x2.svg create mode 100644 symbols/shields/secondary_1x3.svg create mode 100644 symbols/shields/secondary_1x4.svg create mode 100644 symbols/shields/secondary_2x2.svg create mode 100644 symbols/shields/secondary_2x3.svg create mode 100644 symbols/shields/secondary_2x4.svg create mode 100644 symbols/shields/secondary_3x2.svg create mode 100644 symbols/shields/secondary_3x3.svg create mode 100644 symbols/shields/secondary_3x4.svg create mode 100644 symbols/shields/secondary_4x2.svg create mode 100644 symbols/shields/secondary_4x3.svg create mode 100644 symbols/shields/secondary_4x4.svg create mode 100644 symbols/shields/secondary_5x2.svg create mode 100644 symbols/shields/secondary_5x3.svg create mode 100644 symbols/shields/secondary_5x4.svg create mode 100644 symbols/shields/secondary_6x2.svg create mode 100644 symbols/shields/secondary_6x3.svg create mode 100644 symbols/shields/secondary_6x4.svg create mode 100644 symbols/shields/secondary_7x2.svg create mode 100644 symbols/shields/secondary_7x3.svg create mode 100644 symbols/shields/secondary_7x4.svg create mode 100644 symbols/shields/secondary_8x2.svg create mode 100644 symbols/shields/secondary_8x3.svg create mode 100644 symbols/shields/secondary_8x4.svg create mode 100644 symbols/shields/secondary_9x2.svg create mode 100644 symbols/shields/secondary_9x3.svg create mode 100644 symbols/shields/secondary_9x4.svg create mode 100644 symbols/shields/tertiary_10x2.svg create mode 100644 symbols/shields/tertiary_10x3.svg create mode 100644 symbols/shields/tertiary_10x4.svg create mode 100644 symbols/shields/tertiary_11x2.svg create mode 100644 symbols/shields/tertiary_11x3.svg create mode 100644 symbols/shields/tertiary_11x4.svg create mode 100644 symbols/shields/tertiary_1x2.svg create mode 100644 symbols/shields/tertiary_1x3.svg create mode 100644 symbols/shields/tertiary_1x4.svg create mode 100644 symbols/shields/tertiary_2x2.svg create mode 100644 symbols/shields/tertiary_2x3.svg create mode 100644 symbols/shields/tertiary_2x4.svg create mode 100644 symbols/shields/tertiary_3x2.svg create mode 100644 symbols/shields/tertiary_3x3.svg create mode 100644 symbols/shields/tertiary_3x4.svg create mode 100644 symbols/shields/tertiary_4x2.svg create mode 100644 symbols/shields/tertiary_4x3.svg create mode 100644 symbols/shields/tertiary_4x4.svg create mode 100644 symbols/shields/tertiary_5x2.svg create mode 100644 symbols/shields/tertiary_5x3.svg create mode 100644 symbols/shields/tertiary_5x4.svg create mode 100644 symbols/shields/tertiary_6x2.svg create mode 100644 symbols/shields/tertiary_6x3.svg create mode 100644 symbols/shields/tertiary_6x4.svg create mode 100644 symbols/shields/tertiary_7x2.svg create mode 100644 symbols/shields/tertiary_7x3.svg create mode 100644 symbols/shields/tertiary_7x4.svg create mode 100644 symbols/shields/tertiary_8x2.svg create mode 100644 symbols/shields/tertiary_8x3.svg create mode 100644 symbols/shields/tertiary_8x4.svg create mode 100644 symbols/shields/tertiary_9x2.svg create mode 100644 symbols/shields/tertiary_9x3.svg create mode 100644 symbols/shields/tertiary_9x4.svg create mode 100644 symbols/shields/trunk_10x2.svg create mode 100644 symbols/shields/trunk_10x3.svg create mode 100644 symbols/shields/trunk_10x4.svg create mode 100644 symbols/shields/trunk_11x2.svg create mode 100644 symbols/shields/trunk_11x3.svg create mode 100644 symbols/shields/trunk_11x4.svg create mode 100644 symbols/shields/trunk_1x2.svg create mode 100644 symbols/shields/trunk_1x3.svg create mode 100644 symbols/shields/trunk_1x4.svg create mode 100644 symbols/shields/trunk_2x2.svg create mode 100644 symbols/shields/trunk_2x3.svg create mode 100644 symbols/shields/trunk_2x4.svg create mode 100644 symbols/shields/trunk_3x2.svg create mode 100644 symbols/shields/trunk_3x3.svg create mode 100644 symbols/shields/trunk_3x4.svg create mode 100644 symbols/shields/trunk_4x2.svg create mode 100644 symbols/shields/trunk_4x3.svg create mode 100644 symbols/shields/trunk_4x4.svg create mode 100644 symbols/shields/trunk_5x2.svg create mode 100644 symbols/shields/trunk_5x3.svg create mode 100644 symbols/shields/trunk_5x4.svg create mode 100644 symbols/shields/trunk_6x2.svg create mode 100644 symbols/shields/trunk_6x3.svg create mode 100644 symbols/shields/trunk_6x4.svg create mode 100644 symbols/shields/trunk_7x2.svg create mode 100644 symbols/shields/trunk_7x3.svg create mode 100644 symbols/shields/trunk_7x4.svg create mode 100644 symbols/shields/trunk_8x2.svg create mode 100644 symbols/shields/trunk_8x3.svg create mode 100644 symbols/shields/trunk_8x4.svg create mode 100644 symbols/shields/trunk_9x2.svg create mode 100644 symbols/shields/trunk_9x3.svg create mode 100644 symbols/shields/trunk_9x4.svg diff --git a/scripts/create_standard_shields b/scripts/create_standard_shields index 7d890745cd..be84c50dac 100755 --- a/scripts/create_standard_shields +++ b/scripts/create_standard_shields @@ -28,18 +28,22 @@ tertiary:#c4c68f' xoffset=1.25 yoffset=1.75 -h='1:18' - -for w in $widths; do - xchars=$(echo $w | awk -F ":" '{print $1}') - xpixels=$(echo $w | awk -F ":" '{print $2}') - ychars=$(echo $h | awk -F ":" '{print $1}') - ypixels=$(echo $h | awk -F ":" '{print $2}') - - for shield in $colours; do - class=$(echo $shield | awk -F ":" '{print $1}') - colour=$(echo $shield | awk -F ":" '{print $2}') - - ./create_shield $colour $xpixels $ypixels $xoffset $yoffset > "${class}_${xchars}x${ychars}.svg" +heights=' +1:18 +2:30 +3:44 +4:54' + +for h in $heights; do + for w in $widths; do + xchars=$(echo $w | awk -F ":" '{print $1}') + xpixels=$(echo $w | awk -F ":" '{print $2}') + ychars=$(echo $h | awk -F ":" '{print $1}') + ypixels=$(echo $h | awk -F ":" '{print $2}') + for shield in $colours; do + class=$(echo $shield | awk -F ":" '{print $1}') + colour=$(echo $shield | awk -F ":" '{print $2}') + ./create_shield $colour $xpixels $ypixels $xoffset $yoffset > "${class}_${xchars}x${ychars}.svg" + done; done; done; diff --git a/symbols/shields/motorway_10x2.svg b/symbols/shields/motorway_10x2.svg new file mode 100644 index 0000000000..14861c425c --- /dev/null +++ b/symbols/shields/motorway_10x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_10x3.svg b/symbols/shields/motorway_10x3.svg new file mode 100644 index 0000000000..28fcf9edde --- /dev/null +++ b/symbols/shields/motorway_10x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_10x4.svg b/symbols/shields/motorway_10x4.svg new file mode 100644 index 0000000000..8432563c26 --- /dev/null +++ b/symbols/shields/motorway_10x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_11x2.svg b/symbols/shields/motorway_11x2.svg new file mode 100644 index 0000000000..d1445220fb --- /dev/null +++ b/symbols/shields/motorway_11x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_11x3.svg b/symbols/shields/motorway_11x3.svg new file mode 100644 index 0000000000..0ce904a49f --- /dev/null +++ b/symbols/shields/motorway_11x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_11x4.svg b/symbols/shields/motorway_11x4.svg new file mode 100644 index 0000000000..89e18493d4 --- /dev/null +++ b/symbols/shields/motorway_11x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_1x2.svg b/symbols/shields/motorway_1x2.svg new file mode 100644 index 0000000000..c5a54e474d --- /dev/null +++ b/symbols/shields/motorway_1x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_1x3.svg b/symbols/shields/motorway_1x3.svg new file mode 100644 index 0000000000..1f27cdd4ce --- /dev/null +++ b/symbols/shields/motorway_1x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_1x4.svg b/symbols/shields/motorway_1x4.svg new file mode 100644 index 0000000000..b25e0057ba --- /dev/null +++ b/symbols/shields/motorway_1x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_2x2.svg b/symbols/shields/motorway_2x2.svg new file mode 100644 index 0000000000..bc932a6175 --- /dev/null +++ b/symbols/shields/motorway_2x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_2x3.svg b/symbols/shields/motorway_2x3.svg new file mode 100644 index 0000000000..259359cf38 --- /dev/null +++ b/symbols/shields/motorway_2x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_2x4.svg b/symbols/shields/motorway_2x4.svg new file mode 100644 index 0000000000..13aa6c3896 --- /dev/null +++ b/symbols/shields/motorway_2x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_3x2.svg b/symbols/shields/motorway_3x2.svg new file mode 100644 index 0000000000..35e7fc603f --- /dev/null +++ b/symbols/shields/motorway_3x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_3x3.svg b/symbols/shields/motorway_3x3.svg new file mode 100644 index 0000000000..e3e706d2cf --- /dev/null +++ b/symbols/shields/motorway_3x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_3x4.svg b/symbols/shields/motorway_3x4.svg new file mode 100644 index 0000000000..cbe8e310d0 --- /dev/null +++ b/symbols/shields/motorway_3x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_4x2.svg b/symbols/shields/motorway_4x2.svg new file mode 100644 index 0000000000..637acf85fc --- /dev/null +++ b/symbols/shields/motorway_4x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_4x3.svg b/symbols/shields/motorway_4x3.svg new file mode 100644 index 0000000000..78abfc378d --- /dev/null +++ b/symbols/shields/motorway_4x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_4x4.svg b/symbols/shields/motorway_4x4.svg new file mode 100644 index 0000000000..fdce2ebe15 --- /dev/null +++ b/symbols/shields/motorway_4x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_5x2.svg b/symbols/shields/motorway_5x2.svg new file mode 100644 index 0000000000..ca963cbd1e --- /dev/null +++ b/symbols/shields/motorway_5x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_5x3.svg b/symbols/shields/motorway_5x3.svg new file mode 100644 index 0000000000..fcba797d67 --- /dev/null +++ b/symbols/shields/motorway_5x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_5x4.svg b/symbols/shields/motorway_5x4.svg new file mode 100644 index 0000000000..7a8c7734cc --- /dev/null +++ b/symbols/shields/motorway_5x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_6x2.svg b/symbols/shields/motorway_6x2.svg new file mode 100644 index 0000000000..950ba9b99b --- /dev/null +++ b/symbols/shields/motorway_6x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_6x3.svg b/symbols/shields/motorway_6x3.svg new file mode 100644 index 0000000000..1501526357 --- /dev/null +++ b/symbols/shields/motorway_6x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_6x4.svg b/symbols/shields/motorway_6x4.svg new file mode 100644 index 0000000000..55397cbf97 --- /dev/null +++ b/symbols/shields/motorway_6x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_7x2.svg b/symbols/shields/motorway_7x2.svg new file mode 100644 index 0000000000..b93b4fcb79 --- /dev/null +++ b/symbols/shields/motorway_7x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_7x3.svg b/symbols/shields/motorway_7x3.svg new file mode 100644 index 0000000000..219e8e5480 --- /dev/null +++ b/symbols/shields/motorway_7x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_7x4.svg b/symbols/shields/motorway_7x4.svg new file mode 100644 index 0000000000..0c74453fed --- /dev/null +++ b/symbols/shields/motorway_7x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_8x2.svg b/symbols/shields/motorway_8x2.svg new file mode 100644 index 0000000000..14cdafeb05 --- /dev/null +++ b/symbols/shields/motorway_8x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_8x3.svg b/symbols/shields/motorway_8x3.svg new file mode 100644 index 0000000000..9e683140d7 --- /dev/null +++ b/symbols/shields/motorway_8x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_8x4.svg b/symbols/shields/motorway_8x4.svg new file mode 100644 index 0000000000..869fbe93a8 --- /dev/null +++ b/symbols/shields/motorway_8x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_9x2.svg b/symbols/shields/motorway_9x2.svg new file mode 100644 index 0000000000..d03181ab7f --- /dev/null +++ b/symbols/shields/motorway_9x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_9x3.svg b/symbols/shields/motorway_9x3.svg new file mode 100644 index 0000000000..b338ec96d4 --- /dev/null +++ b/symbols/shields/motorway_9x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/motorway_9x4.svg b/symbols/shields/motorway_9x4.svg new file mode 100644 index 0000000000..26e2b195de --- /dev/null +++ b/symbols/shields/motorway_9x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_10x2.svg b/symbols/shields/primary_10x2.svg new file mode 100644 index 0000000000..31e7faf9d4 --- /dev/null +++ b/symbols/shields/primary_10x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_10x3.svg b/symbols/shields/primary_10x3.svg new file mode 100644 index 0000000000..5300559e2f --- /dev/null +++ b/symbols/shields/primary_10x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_10x4.svg b/symbols/shields/primary_10x4.svg new file mode 100644 index 0000000000..8f5cdb79df --- /dev/null +++ b/symbols/shields/primary_10x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_11x2.svg b/symbols/shields/primary_11x2.svg new file mode 100644 index 0000000000..4cee0e8a9f --- /dev/null +++ b/symbols/shields/primary_11x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_11x3.svg b/symbols/shields/primary_11x3.svg new file mode 100644 index 0000000000..06a1708fe6 --- /dev/null +++ b/symbols/shields/primary_11x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_11x4.svg b/symbols/shields/primary_11x4.svg new file mode 100644 index 0000000000..6922ac3d4b --- /dev/null +++ b/symbols/shields/primary_11x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_1x2.svg b/symbols/shields/primary_1x2.svg new file mode 100644 index 0000000000..430b01ca4d --- /dev/null +++ b/symbols/shields/primary_1x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_1x3.svg b/symbols/shields/primary_1x3.svg new file mode 100644 index 0000000000..bb986a07fa --- /dev/null +++ b/symbols/shields/primary_1x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_1x4.svg b/symbols/shields/primary_1x4.svg new file mode 100644 index 0000000000..ffb1da0ec8 --- /dev/null +++ b/symbols/shields/primary_1x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_2x2.svg b/symbols/shields/primary_2x2.svg new file mode 100644 index 0000000000..781e422dda --- /dev/null +++ b/symbols/shields/primary_2x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_2x3.svg b/symbols/shields/primary_2x3.svg new file mode 100644 index 0000000000..e94cfb357f --- /dev/null +++ b/symbols/shields/primary_2x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_2x4.svg b/symbols/shields/primary_2x4.svg new file mode 100644 index 0000000000..39207499e9 --- /dev/null +++ b/symbols/shields/primary_2x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_3x2.svg b/symbols/shields/primary_3x2.svg new file mode 100644 index 0000000000..61744981b0 --- /dev/null +++ b/symbols/shields/primary_3x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_3x3.svg b/symbols/shields/primary_3x3.svg new file mode 100644 index 0000000000..081902d58f --- /dev/null +++ b/symbols/shields/primary_3x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_3x4.svg b/symbols/shields/primary_3x4.svg new file mode 100644 index 0000000000..58f9cfd1fb --- /dev/null +++ b/symbols/shields/primary_3x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_4x2.svg b/symbols/shields/primary_4x2.svg new file mode 100644 index 0000000000..4faf4247f3 --- /dev/null +++ b/symbols/shields/primary_4x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_4x3.svg b/symbols/shields/primary_4x3.svg new file mode 100644 index 0000000000..ecc09fa878 --- /dev/null +++ b/symbols/shields/primary_4x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_4x4.svg b/symbols/shields/primary_4x4.svg new file mode 100644 index 0000000000..c5a12a529c --- /dev/null +++ b/symbols/shields/primary_4x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_5x2.svg b/symbols/shields/primary_5x2.svg new file mode 100644 index 0000000000..a59bc0d6c1 --- /dev/null +++ b/symbols/shields/primary_5x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_5x3.svg b/symbols/shields/primary_5x3.svg new file mode 100644 index 0000000000..0a2d4b6000 --- /dev/null +++ b/symbols/shields/primary_5x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_5x4.svg b/symbols/shields/primary_5x4.svg new file mode 100644 index 0000000000..34aaabfbeb --- /dev/null +++ b/symbols/shields/primary_5x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_6x2.svg b/symbols/shields/primary_6x2.svg new file mode 100644 index 0000000000..c4647357a7 --- /dev/null +++ b/symbols/shields/primary_6x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_6x3.svg b/symbols/shields/primary_6x3.svg new file mode 100644 index 0000000000..96aebabf5d --- /dev/null +++ b/symbols/shields/primary_6x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_6x4.svg b/symbols/shields/primary_6x4.svg new file mode 100644 index 0000000000..e1360fd990 --- /dev/null +++ b/symbols/shields/primary_6x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_7x2.svg b/symbols/shields/primary_7x2.svg new file mode 100644 index 0000000000..84ce6098da --- /dev/null +++ b/symbols/shields/primary_7x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_7x3.svg b/symbols/shields/primary_7x3.svg new file mode 100644 index 0000000000..08a9a48f9b --- /dev/null +++ b/symbols/shields/primary_7x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_7x4.svg b/symbols/shields/primary_7x4.svg new file mode 100644 index 0000000000..cf56cc611f --- /dev/null +++ b/symbols/shields/primary_7x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_8x2.svg b/symbols/shields/primary_8x2.svg new file mode 100644 index 0000000000..c12b3f5e11 --- /dev/null +++ b/symbols/shields/primary_8x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_8x3.svg b/symbols/shields/primary_8x3.svg new file mode 100644 index 0000000000..f0fba8a20f --- /dev/null +++ b/symbols/shields/primary_8x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_8x4.svg b/symbols/shields/primary_8x4.svg new file mode 100644 index 0000000000..06c8705d99 --- /dev/null +++ b/symbols/shields/primary_8x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_9x2.svg b/symbols/shields/primary_9x2.svg new file mode 100644 index 0000000000..1a89a3c6ab --- /dev/null +++ b/symbols/shields/primary_9x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_9x3.svg b/symbols/shields/primary_9x3.svg new file mode 100644 index 0000000000..57c57e5f46 --- /dev/null +++ b/symbols/shields/primary_9x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/primary_9x4.svg b/symbols/shields/primary_9x4.svg new file mode 100644 index 0000000000..5f7c586c84 --- /dev/null +++ b/symbols/shields/primary_9x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_10x2.svg b/symbols/shields/secondary_10x2.svg new file mode 100644 index 0000000000..be0935a57a --- /dev/null +++ b/symbols/shields/secondary_10x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_10x3.svg b/symbols/shields/secondary_10x3.svg new file mode 100644 index 0000000000..ac58ec9c11 --- /dev/null +++ b/symbols/shields/secondary_10x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_10x4.svg b/symbols/shields/secondary_10x4.svg new file mode 100644 index 0000000000..b9afbee022 --- /dev/null +++ b/symbols/shields/secondary_10x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_11x2.svg b/symbols/shields/secondary_11x2.svg new file mode 100644 index 0000000000..e79d00604c --- /dev/null +++ b/symbols/shields/secondary_11x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_11x3.svg b/symbols/shields/secondary_11x3.svg new file mode 100644 index 0000000000..16f52e22fe --- /dev/null +++ b/symbols/shields/secondary_11x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_11x4.svg b/symbols/shields/secondary_11x4.svg new file mode 100644 index 0000000000..620e924518 --- /dev/null +++ b/symbols/shields/secondary_11x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_1x2.svg b/symbols/shields/secondary_1x2.svg new file mode 100644 index 0000000000..92e601459f --- /dev/null +++ b/symbols/shields/secondary_1x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_1x3.svg b/symbols/shields/secondary_1x3.svg new file mode 100644 index 0000000000..d12fdb6cc0 --- /dev/null +++ b/symbols/shields/secondary_1x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_1x4.svg b/symbols/shields/secondary_1x4.svg new file mode 100644 index 0000000000..d46d7a0117 --- /dev/null +++ b/symbols/shields/secondary_1x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_2x2.svg b/symbols/shields/secondary_2x2.svg new file mode 100644 index 0000000000..02a6797763 --- /dev/null +++ b/symbols/shields/secondary_2x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_2x3.svg b/symbols/shields/secondary_2x3.svg new file mode 100644 index 0000000000..997347a3e3 --- /dev/null +++ b/symbols/shields/secondary_2x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_2x4.svg b/symbols/shields/secondary_2x4.svg new file mode 100644 index 0000000000..5070a311a6 --- /dev/null +++ b/symbols/shields/secondary_2x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_3x2.svg b/symbols/shields/secondary_3x2.svg new file mode 100644 index 0000000000..0d67319aca --- /dev/null +++ b/symbols/shields/secondary_3x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_3x3.svg b/symbols/shields/secondary_3x3.svg new file mode 100644 index 0000000000..60c373916d --- /dev/null +++ b/symbols/shields/secondary_3x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_3x4.svg b/symbols/shields/secondary_3x4.svg new file mode 100644 index 0000000000..1be64ee45e --- /dev/null +++ b/symbols/shields/secondary_3x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_4x2.svg b/symbols/shields/secondary_4x2.svg new file mode 100644 index 0000000000..aaa82459eb --- /dev/null +++ b/symbols/shields/secondary_4x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_4x3.svg b/symbols/shields/secondary_4x3.svg new file mode 100644 index 0000000000..1ce851dc99 --- /dev/null +++ b/symbols/shields/secondary_4x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_4x4.svg b/symbols/shields/secondary_4x4.svg new file mode 100644 index 0000000000..3b0d65a155 --- /dev/null +++ b/symbols/shields/secondary_4x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_5x2.svg b/symbols/shields/secondary_5x2.svg new file mode 100644 index 0000000000..2c1a6ea40b --- /dev/null +++ b/symbols/shields/secondary_5x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_5x3.svg b/symbols/shields/secondary_5x3.svg new file mode 100644 index 0000000000..354d394ba3 --- /dev/null +++ b/symbols/shields/secondary_5x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_5x4.svg b/symbols/shields/secondary_5x4.svg new file mode 100644 index 0000000000..42e86fa664 --- /dev/null +++ b/symbols/shields/secondary_5x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_6x2.svg b/symbols/shields/secondary_6x2.svg new file mode 100644 index 0000000000..4408687c0b --- /dev/null +++ b/symbols/shields/secondary_6x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_6x3.svg b/symbols/shields/secondary_6x3.svg new file mode 100644 index 0000000000..d6afdf15b3 --- /dev/null +++ b/symbols/shields/secondary_6x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_6x4.svg b/symbols/shields/secondary_6x4.svg new file mode 100644 index 0000000000..b0ed2525e2 --- /dev/null +++ b/symbols/shields/secondary_6x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_7x2.svg b/symbols/shields/secondary_7x2.svg new file mode 100644 index 0000000000..3e3e03772c --- /dev/null +++ b/symbols/shields/secondary_7x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_7x3.svg b/symbols/shields/secondary_7x3.svg new file mode 100644 index 0000000000..6b1eba9f02 --- /dev/null +++ b/symbols/shields/secondary_7x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_7x4.svg b/symbols/shields/secondary_7x4.svg new file mode 100644 index 0000000000..876cd78a35 --- /dev/null +++ b/symbols/shields/secondary_7x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_8x2.svg b/symbols/shields/secondary_8x2.svg new file mode 100644 index 0000000000..836251661f --- /dev/null +++ b/symbols/shields/secondary_8x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_8x3.svg b/symbols/shields/secondary_8x3.svg new file mode 100644 index 0000000000..2922686c68 --- /dev/null +++ b/symbols/shields/secondary_8x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_8x4.svg b/symbols/shields/secondary_8x4.svg new file mode 100644 index 0000000000..237ae3de20 --- /dev/null +++ b/symbols/shields/secondary_8x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_9x2.svg b/symbols/shields/secondary_9x2.svg new file mode 100644 index 0000000000..64ae0bbebe --- /dev/null +++ b/symbols/shields/secondary_9x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_9x3.svg b/symbols/shields/secondary_9x3.svg new file mode 100644 index 0000000000..3bc7c80596 --- /dev/null +++ b/symbols/shields/secondary_9x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/secondary_9x4.svg b/symbols/shields/secondary_9x4.svg new file mode 100644 index 0000000000..8713f8d4f6 --- /dev/null +++ b/symbols/shields/secondary_9x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_10x2.svg b/symbols/shields/tertiary_10x2.svg new file mode 100644 index 0000000000..aff10b5b00 --- /dev/null +++ b/symbols/shields/tertiary_10x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_10x3.svg b/symbols/shields/tertiary_10x3.svg new file mode 100644 index 0000000000..c5fc4a8d3c --- /dev/null +++ b/symbols/shields/tertiary_10x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_10x4.svg b/symbols/shields/tertiary_10x4.svg new file mode 100644 index 0000000000..c8eddf79dd --- /dev/null +++ b/symbols/shields/tertiary_10x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_11x2.svg b/symbols/shields/tertiary_11x2.svg new file mode 100644 index 0000000000..81c1c229fd --- /dev/null +++ b/symbols/shields/tertiary_11x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_11x3.svg b/symbols/shields/tertiary_11x3.svg new file mode 100644 index 0000000000..5b18b8504b --- /dev/null +++ b/symbols/shields/tertiary_11x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_11x4.svg b/symbols/shields/tertiary_11x4.svg new file mode 100644 index 0000000000..ac1fec90a7 --- /dev/null +++ b/symbols/shields/tertiary_11x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_1x2.svg b/symbols/shields/tertiary_1x2.svg new file mode 100644 index 0000000000..49e201cd3b --- /dev/null +++ b/symbols/shields/tertiary_1x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_1x3.svg b/symbols/shields/tertiary_1x3.svg new file mode 100644 index 0000000000..8f2b51e27c --- /dev/null +++ b/symbols/shields/tertiary_1x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_1x4.svg b/symbols/shields/tertiary_1x4.svg new file mode 100644 index 0000000000..f5bffed918 --- /dev/null +++ b/symbols/shields/tertiary_1x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_2x2.svg b/symbols/shields/tertiary_2x2.svg new file mode 100644 index 0000000000..141d76966d --- /dev/null +++ b/symbols/shields/tertiary_2x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_2x3.svg b/symbols/shields/tertiary_2x3.svg new file mode 100644 index 0000000000..f82418a414 --- /dev/null +++ b/symbols/shields/tertiary_2x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_2x4.svg b/symbols/shields/tertiary_2x4.svg new file mode 100644 index 0000000000..5d7eb09822 --- /dev/null +++ b/symbols/shields/tertiary_2x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_3x2.svg b/symbols/shields/tertiary_3x2.svg new file mode 100644 index 0000000000..44a3df3d49 --- /dev/null +++ b/symbols/shields/tertiary_3x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_3x3.svg b/symbols/shields/tertiary_3x3.svg new file mode 100644 index 0000000000..57c476f5d4 --- /dev/null +++ b/symbols/shields/tertiary_3x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_3x4.svg b/symbols/shields/tertiary_3x4.svg new file mode 100644 index 0000000000..607d0c4929 --- /dev/null +++ b/symbols/shields/tertiary_3x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_4x2.svg b/symbols/shields/tertiary_4x2.svg new file mode 100644 index 0000000000..7f6907d998 --- /dev/null +++ b/symbols/shields/tertiary_4x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_4x3.svg b/symbols/shields/tertiary_4x3.svg new file mode 100644 index 0000000000..a5e7f88392 --- /dev/null +++ b/symbols/shields/tertiary_4x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_4x4.svg b/symbols/shields/tertiary_4x4.svg new file mode 100644 index 0000000000..23892d87c7 --- /dev/null +++ b/symbols/shields/tertiary_4x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_5x2.svg b/symbols/shields/tertiary_5x2.svg new file mode 100644 index 0000000000..7cd283d107 --- /dev/null +++ b/symbols/shields/tertiary_5x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_5x3.svg b/symbols/shields/tertiary_5x3.svg new file mode 100644 index 0000000000..cf2718ac74 --- /dev/null +++ b/symbols/shields/tertiary_5x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_5x4.svg b/symbols/shields/tertiary_5x4.svg new file mode 100644 index 0000000000..0d69012a20 --- /dev/null +++ b/symbols/shields/tertiary_5x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_6x2.svg b/symbols/shields/tertiary_6x2.svg new file mode 100644 index 0000000000..1d4f5acd63 --- /dev/null +++ b/symbols/shields/tertiary_6x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_6x3.svg b/symbols/shields/tertiary_6x3.svg new file mode 100644 index 0000000000..a207a3c182 --- /dev/null +++ b/symbols/shields/tertiary_6x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_6x4.svg b/symbols/shields/tertiary_6x4.svg new file mode 100644 index 0000000000..0248947cc8 --- /dev/null +++ b/symbols/shields/tertiary_6x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_7x2.svg b/symbols/shields/tertiary_7x2.svg new file mode 100644 index 0000000000..d6baacc572 --- /dev/null +++ b/symbols/shields/tertiary_7x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_7x3.svg b/symbols/shields/tertiary_7x3.svg new file mode 100644 index 0000000000..aeb9b0a8b9 --- /dev/null +++ b/symbols/shields/tertiary_7x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_7x4.svg b/symbols/shields/tertiary_7x4.svg new file mode 100644 index 0000000000..3dd39e3c97 --- /dev/null +++ b/symbols/shields/tertiary_7x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_8x2.svg b/symbols/shields/tertiary_8x2.svg new file mode 100644 index 0000000000..9d4ea49d70 --- /dev/null +++ b/symbols/shields/tertiary_8x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_8x3.svg b/symbols/shields/tertiary_8x3.svg new file mode 100644 index 0000000000..3d2821f9ee --- /dev/null +++ b/symbols/shields/tertiary_8x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_8x4.svg b/symbols/shields/tertiary_8x4.svg new file mode 100644 index 0000000000..111b9bc262 --- /dev/null +++ b/symbols/shields/tertiary_8x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_9x2.svg b/symbols/shields/tertiary_9x2.svg new file mode 100644 index 0000000000..16489073db --- /dev/null +++ b/symbols/shields/tertiary_9x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_9x3.svg b/symbols/shields/tertiary_9x3.svg new file mode 100644 index 0000000000..ed1b4a11fe --- /dev/null +++ b/symbols/shields/tertiary_9x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/tertiary_9x4.svg b/symbols/shields/tertiary_9x4.svg new file mode 100644 index 0000000000..c5069273d4 --- /dev/null +++ b/symbols/shields/tertiary_9x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_10x2.svg b/symbols/shields/trunk_10x2.svg new file mode 100644 index 0000000000..912c42c533 --- /dev/null +++ b/symbols/shields/trunk_10x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_10x3.svg b/symbols/shields/trunk_10x3.svg new file mode 100644 index 0000000000..343834f074 --- /dev/null +++ b/symbols/shields/trunk_10x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_10x4.svg b/symbols/shields/trunk_10x4.svg new file mode 100644 index 0000000000..e681955179 --- /dev/null +++ b/symbols/shields/trunk_10x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_11x2.svg b/symbols/shields/trunk_11x2.svg new file mode 100644 index 0000000000..ea9b8af272 --- /dev/null +++ b/symbols/shields/trunk_11x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_11x3.svg b/symbols/shields/trunk_11x3.svg new file mode 100644 index 0000000000..7a0bc0596a --- /dev/null +++ b/symbols/shields/trunk_11x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_11x4.svg b/symbols/shields/trunk_11x4.svg new file mode 100644 index 0000000000..4d4cf4bb6c --- /dev/null +++ b/symbols/shields/trunk_11x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_1x2.svg b/symbols/shields/trunk_1x2.svg new file mode 100644 index 0000000000..98c44866e8 --- /dev/null +++ b/symbols/shields/trunk_1x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_1x3.svg b/symbols/shields/trunk_1x3.svg new file mode 100644 index 0000000000..3c68953d55 --- /dev/null +++ b/symbols/shields/trunk_1x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_1x4.svg b/symbols/shields/trunk_1x4.svg new file mode 100644 index 0000000000..e56905f4ef --- /dev/null +++ b/symbols/shields/trunk_1x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_2x2.svg b/symbols/shields/trunk_2x2.svg new file mode 100644 index 0000000000..c2b60aebe9 --- /dev/null +++ b/symbols/shields/trunk_2x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_2x3.svg b/symbols/shields/trunk_2x3.svg new file mode 100644 index 0000000000..d24f803ef2 --- /dev/null +++ b/symbols/shields/trunk_2x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_2x4.svg b/symbols/shields/trunk_2x4.svg new file mode 100644 index 0000000000..422f2dd846 --- /dev/null +++ b/symbols/shields/trunk_2x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_3x2.svg b/symbols/shields/trunk_3x2.svg new file mode 100644 index 0000000000..8bd3a5b736 --- /dev/null +++ b/symbols/shields/trunk_3x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_3x3.svg b/symbols/shields/trunk_3x3.svg new file mode 100644 index 0000000000..2ad03f3f3d --- /dev/null +++ b/symbols/shields/trunk_3x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_3x4.svg b/symbols/shields/trunk_3x4.svg new file mode 100644 index 0000000000..ff6becb9a8 --- /dev/null +++ b/symbols/shields/trunk_3x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_4x2.svg b/symbols/shields/trunk_4x2.svg new file mode 100644 index 0000000000..68e452721c --- /dev/null +++ b/symbols/shields/trunk_4x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_4x3.svg b/symbols/shields/trunk_4x3.svg new file mode 100644 index 0000000000..b1e899e77b --- /dev/null +++ b/symbols/shields/trunk_4x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_4x4.svg b/symbols/shields/trunk_4x4.svg new file mode 100644 index 0000000000..f330d27afa --- /dev/null +++ b/symbols/shields/trunk_4x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_5x2.svg b/symbols/shields/trunk_5x2.svg new file mode 100644 index 0000000000..6ef419d104 --- /dev/null +++ b/symbols/shields/trunk_5x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_5x3.svg b/symbols/shields/trunk_5x3.svg new file mode 100644 index 0000000000..b41feabb9b --- /dev/null +++ b/symbols/shields/trunk_5x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_5x4.svg b/symbols/shields/trunk_5x4.svg new file mode 100644 index 0000000000..eb416b48ad --- /dev/null +++ b/symbols/shields/trunk_5x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_6x2.svg b/symbols/shields/trunk_6x2.svg new file mode 100644 index 0000000000..56a00ccc19 --- /dev/null +++ b/symbols/shields/trunk_6x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_6x3.svg b/symbols/shields/trunk_6x3.svg new file mode 100644 index 0000000000..b3253194ff --- /dev/null +++ b/symbols/shields/trunk_6x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_6x4.svg b/symbols/shields/trunk_6x4.svg new file mode 100644 index 0000000000..0b8e3f0cd5 --- /dev/null +++ b/symbols/shields/trunk_6x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_7x2.svg b/symbols/shields/trunk_7x2.svg new file mode 100644 index 0000000000..cae79f339c --- /dev/null +++ b/symbols/shields/trunk_7x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_7x3.svg b/symbols/shields/trunk_7x3.svg new file mode 100644 index 0000000000..b68c25765c --- /dev/null +++ b/symbols/shields/trunk_7x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_7x4.svg b/symbols/shields/trunk_7x4.svg new file mode 100644 index 0000000000..e98e374db5 --- /dev/null +++ b/symbols/shields/trunk_7x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_8x2.svg b/symbols/shields/trunk_8x2.svg new file mode 100644 index 0000000000..225b563b21 --- /dev/null +++ b/symbols/shields/trunk_8x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_8x3.svg b/symbols/shields/trunk_8x3.svg new file mode 100644 index 0000000000..7ad16ac922 --- /dev/null +++ b/symbols/shields/trunk_8x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_8x4.svg b/symbols/shields/trunk_8x4.svg new file mode 100644 index 0000000000..d8e01374b5 --- /dev/null +++ b/symbols/shields/trunk_8x4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_9x2.svg b/symbols/shields/trunk_9x2.svg new file mode 100644 index 0000000000..f37cd3408f --- /dev/null +++ b/symbols/shields/trunk_9x2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_9x3.svg b/symbols/shields/trunk_9x3.svg new file mode 100644 index 0000000000..c2202e43af --- /dev/null +++ b/symbols/shields/trunk_9x3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/symbols/shields/trunk_9x4.svg b/symbols/shields/trunk_9x4.svg new file mode 100644 index 0000000000..648e6d5e93 --- /dev/null +++ b/symbols/shields/trunk_9x4.svg @@ -0,0 +1,5 @@ + + + + + From cd7da91de4cbbb29c26178dda3eed479b4cb084a Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Sun, 20 Jul 2014 19:39:36 -0700 Subject: [PATCH 06/74] Split concurrent refs into a multi-line shield This new SQL takes the refs for a way, splits them on ;, and rejoins them with newlines. When doing this it also calculates the number of lines and the length of the longest line. Fixes #670 as best as possible pre-Mapnik 3. Also fixes #701 --- project.mml | 4 +-- roads.mss | 84 +++++++++++++++++++++++++---------------------------- 2 files changed, 42 insertions(+), 46 deletions(-) diff --git a/project.mml b/project.mml index fd9b47963f..c8fe0ad6be 100755 --- a/project.mml +++ b/project.mml @@ -1390,7 +1390,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,highway,ref,char_length(ref) as length\n from planet_osm_roads\n where highway in ('motorway','trunk','primary','secondary')\n and ref is not null\n and char_length(ref) between 1 and 11\n ) as roads_text_ref_low_zoom", + "table": "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_roads\n WHERE highway IN ('motorway','trunk','primary','secondary')\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -1436,7 +1436,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,coalesce(highway,aeroway) as highway,ref,char_length(ref) as length,\n case when bridge in ('yes','true','1') then 'yes'::text else 'no'::text end as bridge\n from planet_osm_line\n where (highway is not null or aeroway is not null)\n and ref is not null\n and char_length(ref) between 1 and 11\n ) as roads_text_ref", + "table": "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n COALESCE(highway, aeroway) AS highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_line\n WHERE (highway IN ('motorway','trunk','primary','secondary','tertiary','unclassified','residential') OR aeroway IN ('runway','taxiway'))\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", diff --git a/roads.mss b/roads.mss index e21411f057..b7dae20c7c 100644 --- a/roads.mss +++ b/roads.mss @@ -2124,26 +2124,24 @@ } #roads-text-ref-low-zoom { - [highway = 'motorway'][length < 12] { - [zoom >= 10][zoom < 13] { - shield-name: "[ref]"; - shield-size: 10; - shield-fill: #fff; - shield-placement: line; - shield-file: url("symbols/shields/motorway_[length]x1.svg"); - shield-spacing: 750; - shield-min-distance: 30; - shield-face-name: @bold-fonts; - shield-clip: false; - } + [highway = 'motorway'][zoom >= 10][zoom < 13] { + shield-name: "[refs]"; + shield-size: 10; + shield-fill: #fff; + shield-placement: line; + shield-file: url("symbols/shields/motorway_[width]x[height].svg"); + shield-spacing: 750; + shield-min-distance: 30; + shield-face-name: @bold-fonts; + shield-clip: false; } [highway = 'trunk'][zoom >= 11][zoom < 13] { - shield-name: "[ref]"; + shield-name: "[refs]"; shield-size: 10; shield-fill: #fff; shield-placement: line; - shield-file: url("symbols/shields/trunk_[length]x1.svg"); + shield-file: url("symbols/shields/trunk_[width]x[height].svg"); shield-spacing: 750; shield-min-distance: 30; shield-face-name: @bold-fonts; @@ -2151,11 +2149,11 @@ } [highway = 'primary'][zoom >= 11][zoom < 13] { - shield-name: "[ref]"; + shield-name: "[refs]"; shield-size: 10; shield-fill: #fff; shield-placement: line; - shield-file: url("symbols/shields/primary_[length]x1.svg"); + shield-file: url("symbols/shields/primary_[width]x[height].svg"); shield-spacing: 750; shield-min-distance: 30; shield-face-name: @bold-fonts; @@ -2163,11 +2161,11 @@ } [highway = 'secondary'][zoom >= 12][zoom < 13] { - shield-name: "[ref]"; + shield-name: "[refs]"; shield-size: 10; shield-fill: #fff; shield-placement: line; - shield-file: url("symbols/shields/secondary_[length]x1.svg"); + shield-file: url("symbols/shields/secondary_[width]x[height].svg"); shield-spacing: 750; shield-min-distance: 30; shield-face-name: @bold-fonts; @@ -2176,26 +2174,24 @@ } #roads-text-ref { - [highway = 'motorway'][length < 12] { - [zoom >= 13] { - shield-name: "[ref]"; - shield-size: 10; - shield-fill: #fff; - shield-placement: line; - shield-file: url("symbols/shields/motorway_[length]x1.svg"); - shield-spacing: 750; - shield-min-distance: 30; - shield-face-name: @bold-fonts; - shield-clip: false; - } + [highway = 'motorway'][zoom >= 13] { + shield-name: "[refs]"; + shield-size: 10; + shield-fill: #fff; + shield-placement: line; + shield-file: url("symbols/shields/motorway_[width]x[height].svg"); + shield-spacing: 750; + shield-min-distance: 30; + shield-face-name: @bold-fonts; + shield-clip: false; } [highway = 'trunk'][zoom >= 13] { - shield-name: "[ref]"; + shield-name: "[refs]"; shield-size: 10; shield-fill: #fff; shield-placement: line; - shield-file: url("symbols/shields/trunk_[length]x1.svg"); + shield-file: url("symbols/shields/trunk_[width]x[height].svg"); shield-spacing: 750; shield-min-distance: 30; shield-face-name: @bold-fonts; @@ -2203,35 +2199,35 @@ } [highway = 'primary'][zoom >= 13] { - shield-name: "[ref]"; + shield-name: "[refs]"; shield-size: 10; shield-fill: #fff; shield-placement: line; - shield-file: url("symbols/shields/primary_[length]x1.svg"); + shield-file: url("symbols/shields/primary_[width]x[height].svg"); shield-spacing: 750; shield-min-distance: 30; shield-face-name: @bold-fonts; shield-clip: false; } - [highway = 'secondary'][bridge = 'no'][zoom >= 13] { - shield-name: "[ref]"; + [highway = 'secondary'][zoom >= 13] { + shield-name: "[refs]"; shield-size: 10; shield-fill: #fff; shield-placement: line; - shield-file: url("symbols/shields/secondary_[length]x1.svg"); + shield-file: url("symbols/shields/secondary_[width]x[height].svg"); shield-spacing: 750; shield-min-distance: 30; shield-face-name: @bold-fonts; shield-clip: false; } - [highway = 'tertiary'][bridge = 'no'][zoom >= 13] { - shield-name: "[ref]"; + [highway = 'tertiary'][zoom >= 13] { + shield-name: "[refs]"; shield-size: 10; shield-fill: #fff; shield-placement: line; - shield-file: url("symbols/shields/tertiary_[length]x1.svg"); + shield-file: url("symbols/shields/tertiary_[width]x[height].svg"); shield-spacing: 750; shield-min-distance: 30; shield-face-name: @bold-fonts; @@ -2240,8 +2236,8 @@ [highway = 'unclassified'], [highway = 'residential'] { - [zoom >= 15][bridge = 'no'] { - text-name: "[ref]"; + [zoom >= 15] { + text-name: "[refs]"; text-size: 10; text-fill: #000; text-face-name: @bold-fonts; @@ -2254,8 +2250,8 @@ [highway = 'runway'], [highway = 'taxiway'] { - [zoom >= 15][bridge = 'no'] { - text-name: "[ref]"; + [zoom >= 15] { + text-name: "[refs]"; text-size: 10; text-fill: #333; text-spacing: 750; From 5ff7d09b2b81482ed7b0ba1dce32c7a75fb41994 Mon Sep 17 00:00:00 2001 From: vholten Date: Sat, 26 Jul 2014 18:47:58 +0200 Subject: [PATCH 07/74] Increase text-dy for default shop style --- amenity-points.mss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/amenity-points.mss b/amenity-points.mss index 71fc6be3e4..3f7f90facf 100644 --- a/amenity-points.mss +++ b/amenity-points.mss @@ -1100,7 +1100,7 @@ [shop != ''][zoom >= 17]::shop { text-name: [name]; text-size: 9; - text-dy: 9; + text-dy: 10; text-fill: #939; text-face-name: @book-fonts; text-halo-radius: 1; From 2340841983a377ed3f33f0cc42d25622f1fb3cfd Mon Sep 17 00:00:00 2001 From: polarbearing Date: Sun, 27 Jul 2014 12:23:21 +0200 Subject: [PATCH 08/74] explain workflow in contribution guidelines --- CONTRIBUTING.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6a97b8038a..448edcb33f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,15 @@ # OpenStreetMap Carto contribution guidelines +## Workflow + +We operate the "Fork & Pull" model explained at + +https://help.github.com/articles/using-pull-requests + +You should fork the project into your own repo, create a topic branch +there and then make one or more pull requests back to the gravitystorm repository. +Your pull requests will then be reviewed and discussed. + ## CartoCSS Style Guidelines * Always specify zoom levels as either >= or < . Don't use = or =< or > @@ -42,4 +52,4 @@ instead of Some changes benefit from a review from a wider audience. In most cases some static images are sufficient, but sometimes a demo layer is necessary. pnorman has a private server which can host layers and has some data from parts of the world loaded. Before requesting this in a pull request, make sure that you don't anticipate any more changes to it. -This does not replace reviewing your changes in Tilemill \ No newline at end of file +This does not replace reviewing your changes in Tilemill From 364c95b31119528dcba6ae1b29f1c0ec2be8608d Mon Sep 17 00:00:00 2001 From: polarbearing Date: Sun, 27 Jul 2014 15:06:03 +0200 Subject: [PATCH 09/74] metatile alignments --- landcover.mss | 4 +++- symbols/allotments.png | Bin 911 -> 0 bytes symbols/allotments_3-1.png | Bin 0 -> 235 bytes symbols/allotments_7-1.png | Bin 0 -> 237 bytes 4 files changed, 3 insertions(+), 1 deletion(-) delete mode 100644 symbols/allotments.png create mode 100644 symbols/allotments_3-1.png create mode 100644 symbols/allotments_7-1.png diff --git a/landcover.mss b/landcover.mss index 7557397584..183afd37f2 100644 --- a/landcover.mss +++ b/landcover.mss @@ -193,7 +193,9 @@ polygon-fill: @allotments; } [zoom >= 14] { - polygon-pattern-file: url('symbols/allotments.png'); + polygon-pattern-file: url('symbols/allotments_7-1.png'); + //polygon-pattern-file: url('symbols/allotments_3-1.png'); + polygon-pattern-alignment: global; } } diff --git a/symbols/allotments.png b/symbols/allotments.png deleted file mode 100644 index d5e27796c2553d070e058c9b5fa42900711f09ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 911 zcmeAS@N?(olHy`uVBq!ia0vp^azM<+!3-oHXWvT$QY`6?zK#qG8~bX02To>SU}gyL z32_CAlLQzU8JWOB-6UPfx6UdVI~(JvqMm@v+qpkFLIVWc95>tFP=|b7s%#BimQ+-LiV;##QTA zuUNfm#j<6~mV&|J#fuk#!GZ+~=Fgu$7YydinKK&Kao)X88lY0{*L zV9?*+-`CgI0|wpQ-CbbN(b3V~-rfcVEiEn0&CQKq(9qCOUteDb1~oM`)z#HiU{Fy} zQC?nNR#sL52F1n2MMXu0g@yTGke8R2o12@HlamDonVFdx85!y6>1k*M3&?d|R5<>lew;qLD4=H}+=>gwX+;_U3~^JP+rK>#W95AdNRjBZV9%aS-koT3@ Date: Mon, 28 Jul 2014 19:26:37 +0200 Subject: [PATCH 10/74] Delete allotments_3-1.png --- symbols/allotments_3-1.png | Bin 235 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 symbols/allotments_3-1.png diff --git a/symbols/allotments_3-1.png b/symbols/allotments_3-1.png deleted file mode 100644 index d73d201909a9e4324ccbb95a533a533dd6d2c910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!3?zwT@3!Ist Date: Mon, 28 Jul 2014 19:39:05 +0200 Subject: [PATCH 11/74] rebase allotments.png and remove comment from mss --- landcover.mss | 3 +-- symbols/{allotments_7-1.png => allotments.png} | Bin symbols/allotments_3-1.png | Bin 235 -> 0 bytes 3 files changed, 1 insertion(+), 2 deletions(-) rename symbols/{allotments_7-1.png => allotments.png} (100%) delete mode 100644 symbols/allotments_3-1.png diff --git a/landcover.mss b/landcover.mss index 183afd37f2..d2891fdc7e 100644 --- a/landcover.mss +++ b/landcover.mss @@ -193,8 +193,7 @@ polygon-fill: @allotments; } [zoom >= 14] { - polygon-pattern-file: url('symbols/allotments_7-1.png'); - //polygon-pattern-file: url('symbols/allotments_3-1.png'); + polygon-pattern-file: url('symbols/allotments.png'); polygon-pattern-alignment: global; } } diff --git a/symbols/allotments_7-1.png b/symbols/allotments.png similarity index 100% rename from symbols/allotments_7-1.png rename to symbols/allotments.png diff --git a/symbols/allotments_3-1.png b/symbols/allotments_3-1.png deleted file mode 100644 index d73d201909a9e4324ccbb95a533a533dd6d2c910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Y$ZW{!3?zwT@3!Ist Date: Mon, 28 Jul 2014 22:46:46 +0100 Subject: [PATCH 12/74] Drop landuse=grave_yard We still render landuse=cemetery and amenity=grave_yard. See issue #204. --- landcover.mss | 1 - project.mml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/landcover.mss b/landcover.mss index 7557397584..af6257f0ba 100644 --- a/landcover.mss +++ b/landcover.mss @@ -102,7 +102,6 @@ } [feature = 'landuse_cemetery'], - [feature = 'landuse_grave_yard'], [feature = 'amenity_grave_yard'] { [zoom >= 10][zoom < 14] { polygon-fill: @cemetery; diff --git a/project.mml b/project.mml index 82f61b05f3..4dfa46dcab 100644 --- a/project.mml +++ b/project.mml @@ -121,7 +121,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way, name, religion,\ncoalesce (aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) as feature from (\nselect way, COALESCE(name,'') AS name, \n('aeroway_' || (case when aeroway in ('apron', 'aerodrome') then aeroway else null end)) as aeroway,\n('amenity_' || (case when amenity in ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity,\n('landuse_' || (case when landuse in ('quarry', 'vineyard', 'orchard', 'cemetery', 'grave_yard', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') then landuse else null end)) as landuse,\n('leisure_' || (case when leisure in ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') then leisure else null end)) as leisure,\n('military_' || (case when military in ('barracks', 'danger_area') then military else null end)) as military,\n('natural_' || (case when \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') then \"natural\" else null end)) as \"natural\",\n('power_' || (case when power in ('station','sub_station','substation','generator') then power else null end)) as power,\n('tourism_' || (case when tourism in ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') then tourism else null end)) as tourism,\n('highway_' || (case when highway in ('services', 'rest_area') then highway else null end)) as highway,\ncase when religion in ('christian','jewish') then religion else 'INT-generic'::text end as religion\n from planet_osm_polygon\n where landuse is not null\n or leisure is not null\n or aeroway in ('apron','aerodrome')\n or amenity in ('parking','university','college','school','hospital','kindergarten','grave_yard')\n or military in ('barracks','danger_area')\n or \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub')\n or power in ('station','sub_station','substation','generator')\n or tourism in ('attraction','camp_site','caravan_site','picnic_site','zoo')\n or highway in ('services','rest_area')\n order by z_order,way_area desc\n ) as landcover\n) as features", + "table": "(select way, name, religion,\ncoalesce (aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) as feature from (\nselect way, COALESCE(name,'') AS name, \n('aeroway_' || (case when aeroway in ('apron', 'aerodrome') then aeroway else null end)) as aeroway,\n('amenity_' || (case when amenity in ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity,\n('landuse_' || (case when landuse in ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') then landuse else null end)) as landuse,\n('leisure_' || (case when leisure in ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') then leisure else null end)) as leisure,\n('military_' || (case when military in ('barracks', 'danger_area') then military else null end)) as military,\n('natural_' || (case when \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') then \"natural\" else null end)) as \"natural\",\n('power_' || (case when power in ('station','sub_station','substation','generator') then power else null end)) as power,\n('tourism_' || (case when tourism in ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') then tourism else null end)) as tourism,\n('highway_' || (case when highway in ('services', 'rest_area') then highway else null end)) as highway,\ncase when religion in ('christian','jewish') then religion else 'INT-generic'::text end as religion\n from planet_osm_polygon\n where landuse is not null\n or leisure is not null\n or aeroway in ('apron','aerodrome')\n or amenity in ('parking','university','college','school','hospital','kindergarten','grave_yard')\n or military in ('barracks','danger_area')\n or \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub')\n or power in ('station','sub_station','substation','generator')\n or tourism in ('attraction','camp_site','caravan_site','picnic_site','zoo')\n or highway in ('services','rest_area')\n order by z_order,way_area desc\n ) as landcover\n) as features", "extent": "-20037508,-19929239,20037508,19929239", "key_field": "", "geometry_field": "", From e3ae6170b778b79f1f568c08d09502f8016aeb3c Mon Sep 17 00:00:00 2001 From: math1985 Date: Mon, 28 Jul 2014 23:05:24 +0100 Subject: [PATCH 13/74] Drop polygon-opacity from landcover Drop polygon-opacity from landcover tags that still had it, i.e.: * tourism = camp_site * tourism = caravan_site * tourism = picnic_site * landuse = garages * landuse = fill * leisure = park * leisure = recreation_ground * landuse = brownfield * landuse = landfill * landuse = construction * aeroway = aerodome Polygon-opacity should be avoided, as it gives smudgy and sometimes unexpected colours in case of overlapping polygons. Also colour landuse=field as landuse=farm_land, as the old landuse=field without opacity is too dark. --- landcover.mss | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/landcover.mss b/landcover.mss index 7557397584..4bbacbc638 100644 --- a/landcover.mss +++ b/landcover.mss @@ -44,7 +44,7 @@ @construction: #9d9d6c; @danger_area: pink; @desert: #e3b57a; -@field: #660; +@field: @farmland; @garages: #996; @heath: #d6d99f; @parking: #f7efb7; @@ -72,7 +72,6 @@ [feature = 'tourism_picnic_site'] { [zoom >= 13] { polygon-fill: @campsite; - polygon-opacity: 0.5; line-color: saturate(darken(@campsite, 60%), 30%); line-width: 0.3; } @@ -128,7 +127,6 @@ [feature = 'landuse_garages'][zoom >= 12] { polygon-fill: @garages; - polygon-opacity: 0.2; } [feature = 'military_barracks'][zoom >= 10] { @@ -138,7 +136,6 @@ [feature = 'landuse_field'] { [zoom >= 10] { polygon-fill: @field; - polygon-opacity: 0.2; [zoom >= 14] { line-width: 0.3; line-opacity: 0.4; @@ -168,7 +165,6 @@ [feature = 'leisure_recreation_ground'] { [zoom >= 10] { polygon-fill: @park; - polygon-opacity: 0.6; } } @@ -297,7 +293,6 @@ [feature = 'landuse_construction'] { [zoom >= 10] { polygon-fill: @construction; - polygon-opacity: 0.7; } } @@ -360,7 +355,6 @@ [feature = 'aeroway_aerodrome'][zoom >= 12] { polygon-fill: @aerodrome; - polygon-opacity: 0.2; line-width: 0.2; line-color: saturate(darken(@aerodrome, 40%), 20%); } From 110235977d1b0c8f9329cba1363f7e08332839aa Mon Sep 17 00:00:00 2001 From: Math1985 Date: Thu, 12 Jun 2014 13:49:44 +0100 Subject: [PATCH 14/74] Move control over road rendering order to SQL Currently, rendering order of road rendering within one layer is handled by the z_order column, which comes from osm2pgsql. As such, we have little control over road rendering without reloading the database. This PR moves control over the rendering order to the SQL query. This adds complexity to the SQL queries, but increases customizability, and simplifies the roads.mms code. This solves the following issues: * #462 (Move rendering order road types from osm2pgsql to our SQL queries) * #163 (Railways are now drawn above roads) * #167 (Tramway layering issues) * #168 (Paths are now drawn below link roads) * Trac 2024 (Service roads are now rendered below link roads) * Trac 3649 (Service roads are now rendered below race tracks) * Pedestrian and living streets are now consistently ordered * Footways are now always displayed under service ways --- project.mml | 31 +---- roads.mss | 378 ++++++++++++---------------------------------------- 2 files changed, 88 insertions(+), 321 deletions(-) diff --git a/project.mml b/project.mml index 4dfa46dcab..19380428d8 100644 --- a/project.mml +++ b/project.mml @@ -443,7 +443,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,coalesce(('highway_' || highway), ('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 in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'construction')) and (tunnel='yes' or tunnel='building_passage' or covered='yes') order by layernotnull, z_order) as tunnels", + "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join (values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('highway_motorway',370), ('highway_trunk',360), ('highway_primary',350), ('highway_secondary',340), ('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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes') order by layernotnull, ordertable.prio) as tunnels", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -722,7 +722,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,coalesce(('highway_' || highway), ('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 in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'construction')) and (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','true','1','viaduct')) order by z_order) as roads", + "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('highway_motorway',370), ('highway_trunk',360), ('highway_primary',350), ('highway_secondary',340), ('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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','true','1','viaduct')) order by ordertable.prio) as roads", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -767,7 +767,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,coalesce(('highway_' || highway), ('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 in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'construction')) and (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','true','1','viaduct')) order by z_order) as roads_fill", + "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('highway_motorway',370), ('highway_trunk',360), ('highway_primary',350), ('highway_secondary',340), ('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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','true','1','viaduct')) order by ordertable.prio) as roads_fill", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -882,7 +882,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,coalesce(('highway_' || highway), ('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 in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'construction')) and bridge in ('yes','true','1','viaduct') and (layer is null or (layer in ('0','1','2','3','4','5'))) order by layernotnull, z_order) as bridges", + "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('highway_motorway',370), ('highway_trunk',360), ('highway_primary',350), ('highway_secondary',340), ('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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','true','1','viaduct') and (layer is null or (layer in ('0','1','2','3','4','5'))) order by layernotnull, ordertable.prio) as bridges", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -898,29 +898,6 @@ "group-by": "layernotnull" } }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,railway,bridge from planet_osm_line where railway='tram' and (tunnel is null or tunnel != 'yes')) as trams", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "trams", - "class": "", - "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", - "advanced": {}, - "name": "trams" - }, { "geometry": "linestring", "extent": [ diff --git a/roads.mss b/roads.mss index d1488724ac..2f36aa8871 100644 --- a/roads.mss +++ b/roads.mss @@ -132,134 +132,20 @@ @paths-tunnel-casing-width: 1; .roads-casing, .bridges-casing, .tunnels-casing { - ::casing_links { - [feature = 'highway_raceway'] { - [zoom >= 12] { - line-color: pink; - line-width: 1.2; - line-join: round; - line-cap: round; - } - [zoom >= 13] { line-width: 4; } - [zoom >= 15] { line-width: 7; } - } - - [feature = 'highway_motorway_link'] { - [zoom >= 12] { - line-color: @motorway-casing; - line-width: @motorway-link-width-z12; - [zoom >= 13] { line-width: @motorway-link-width-z13; } - [zoom >= 15] { line-width: @motorway-link-width-z15; } - [zoom >= 17] { line-width: @motorway-link-width-z17; } - .roads-casing { - line-join: round; - } - .tunnels-casing { - line-dasharray: 4,2; - } - .bridges-casing { - line-join: round; - [zoom >= 13] { line-color: @bridge-casing; } - } - } - } - - [feature = 'highway_trunk_link'] { - [zoom >= 12] { - line-width: @trunk-width-z12; - [zoom >= 13] { line-width: @trunk-width-z13; } - [zoom >= 15] { line-width: @trunk-width-z15; } - [zoom >= 17] { line-width: @trunk-width-z17; } - line-color: @trunk-casing; - .roads-casing { - line-join: round; - line-cap: round; - } - .tunnels-casing { - line-dasharray: 4,2; - } - .bridges-casing { - line-join: round; - [zoom >= 13] { line-color: @bridge-casing; } - } - } - } - - [feature = 'highway_primary_link'] { - [zoom >= 12] { - line-color: @primary-casing; - line-width: @primary-width-z12; - [zoom >= 13] { line-width: @primary-width-z13; } - [zoom >= 15] { line-width: @primary-width-z15; } - [zoom >= 17] { line-width: @primary-width-z17; } - .roads-casing { - line-join: round; - line-cap: round; - } - .tunnels-casing { - line-dasharray: 4,2; - } - .bridges-casing { - line-join: round; - [zoom >= 13] { line-color: @bridge-casing; } - } - } - } - - [feature = 'highway_secondary_link'] { - [zoom >= 12] { - line-color: @secondary-casing; - line-width: @secondary-width-z12; - [zoom >= 13] { line-width: @secondary-width-z13; } - [zoom >= 15] { line-width: @secondary-width-z15; } - [zoom >= 17] { line-width: @secondary-width-z17; } - .roads-casing { - line-cap: round; - line-join: round; - } - .tunnels-casing { - line-dasharray: 4,2; - } - .bridges-casing { - [zoom >= 13] { - line-color: @bridge-casing; - line-join: round; - } - } - } - } - - [feature = 'highway_tertiary_link'] { - [zoom >= 13] { - line-color: @tertiary-casing; - line-width: @tertiary-width-z13; - [zoom >= 14] { line-width: @tertiary-width-z14; } - [zoom >= 15] { line-width: @tertiary-width-z15; } - [zoom >= 17] { line-width: @tertiary-width-z17; } - .roads-casing { - line-cap: round; - line-join: round; - } - .tunnels-casing { - line-dasharray: 4,2; - } - .bridges-casing { - [zoom >= 14] { - line-color: @bridge-casing; - line-join: round; - } - } - } - } - } - ::casing { [zoom >= 12] { + [feature = 'highway_motorway_link'], [feature = 'highway_motorway'] { line-width: @motorway-width-z12; [zoom >= 13] { line-width: @motorway-width-z13; } [zoom >= 15] { line-width: @motorway-width-z15; } [zoom >= 17] { line-width: @motorway-width-z17; } + [link = 'yes'] { + line-width: @motorway-link-width-z12; + [zoom >= 13] { line-width: @motorway-link-width-z13; } + [zoom >= 15] { line-width: @motorway-link-width-z15; } + [zoom >= 17] { line-width: @motorway-link-width-z17; } + } line-color: @motorway-casing; .roads-casing { line-join: round; @@ -275,6 +161,7 @@ } } + [feature = 'highway_trunk_link'], [feature = 'highway_trunk'] { [zoom >= 12] { line-color: @trunk-casing; @@ -296,6 +183,7 @@ } } + [feature = 'highway_primary_link'], [feature = 'highway_primary'] { [zoom >= 12] { line-color: @primary-casing; @@ -317,6 +205,7 @@ } } + [feature = 'highway_secondary_link'], [feature = 'highway_secondary'] { [zoom >= 12] { line-color: @secondary-casing; @@ -340,6 +229,7 @@ } } + [feature = 'highway_tertiary_link'], [feature = 'highway_tertiary'] { [zoom >= 13] { line-color: @tertiary-casing; @@ -552,10 +442,34 @@ } } + [feature = 'highway_raceway'] { + [zoom >= 12] { + line-color: pink; + line-width: 1.2; + line-join: round; + line-cap: round; + } + [zoom >= 13] { line-width: 4; } + [zoom >= 15] { line-width: 7; } + } + + [feature = 'railway_tram'] { + .bridges-casing { + [zoom >= 13] { + line-width: 4; + [zoom >= 15] { + line-width: 5; + } + line-color: black; + line-join: round; + } + } + } + [feature = 'railway_subway'] { .bridges-casing { [zoom >= 14] { - line-width: 5.5; + line-width: 5; line-color: black; line-join: round; } @@ -754,6 +668,18 @@ } } + [feature = 'railway_tram'] { + .bridges-casing { + [zoom >= 13] { + line-width: 3; + [zoom >= 15] { + line-width: 4; + } + line-color: white; + } + } + } + [feature = 'railway_subway'] { .bridges-casing { [zoom >= 14] { @@ -779,125 +705,7 @@ } .roads-fill,.bridges-fill,.tunnels-fill { - ::fill_links { - [feature = 'highway_motorway_link'] { - [zoom >= 12] { - line-width: @motorway-link-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @casing-width-z13; } - [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @casing-width-z15; } - [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @casing-width-z17; } - .roads-fill, .bridges-fill { - line-color: @motorway-fill; - } - .tunnels-fill { - line-color: @motorway-tunnel-fill; - } - .bridges-fill { - line-width: @motorway-link-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @bridge-casing-width-z17; } - } - line-cap: round; - line-join: round; - } - } - - [feature = 'highway_trunk_link'] { - [zoom >= 12] { - line-width: @trunk-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @casing-width-z13; } - [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @casing-width-z15; } - [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @casing-width-z17; } - .roads-fill, .bridges-fill { - line-color: @trunk-fill; - } - .tunnels-fill { - line-color: @trunk-tunnel-fill; - } - .bridges-fill { - line-width: @trunk-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @bridge-casing-width-z17; } - } - line-cap: round; - line-join: round; - } - } - - [feature = 'highway_primary_link'] { - [zoom >= 12] { - line-width: @primary-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @primary-width-z13 - 2 * @casing-width-z13; } - [zoom >= 15] { line-width: @primary-width-z15 - 2 * @casing-width-z15; } - [zoom >= 17] { line-width: @primary-width-z17 - 2 * @casing-width-z17; } - .roads-fill, .bridges-fill { - line-color: @primary-fill; - } - .tunnels-fill { - line-color: @primary-tunnel-fill; - } - .bridges-fill { - line-width: @primary-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @primary-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 15] { line-width: @primary-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @primary-width-z17 - 2 * @bridge-casing-width-z17; } - } - line-cap: round; - line-join: round; - } - } - - [feature = 'highway_secondary_link'] { - [zoom >= 12] { - line-width: @secondary-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @casing-width-z13; } - [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @casing-width-z15; } - [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @casing-width-z17; } - .roads-fill, .bridges-fill { - line-color: @secondary-fill; - } - .tunnels-fill { - line-color: @secondary-tunnel-fill; - } - .bridges-fill { - line-width: @secondary-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @bridge-casing-width-z17; } - } - line-cap: round; - line-join: round; - } - } - - [feature = 'highway_tertiary_link'] { - [zoom >= 13] { - line-width: @tertiary-width-z13 - 2 * @casing-width-z13; - [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @casing-width-z14; } - [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @tertiary-width-z15; } - [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @tertiary-width-z17; } - .roads-fill, .bridges-fill { - line-color: @tertiary-fill; - } - .tunnels-fill { - line-color: @tertiary-tunnel-fill; - } - .bridges-fill { - line-width: @tertiary-width-z13 - 2 * @bridge-casing-width-z13; - [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @bridge-casing-width-z14; } - [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @bridge-casing-width-z17; } - } - line-cap: round; - line-join: round; - } - } - } - ::fill { - /* * The construction rules for small roads are strange, since if construction is null its assumed that * it's a more major road. The line-width = 0 could be removed by playing with the query to set a construction @@ -915,24 +723,19 @@ line-width: 2; line-color: #9cc; - [construction = 'motorway'], - [construction = 'motorway_link'] { + [construction = 'motorway'] { line-color: @motorway-fill; } - [construction = 'trunk'], - [construction = 'trunk_link'] { + [construction = 'trunk'] { line-color: @trunk-fill; } - [construction = 'primary'], - [construction = 'primary_link'] { + [construction = 'primary'] { line-color: @primary-fill; } - [construction = 'secondary'], - [construction = 'secondary_link'] { + [construction = 'secondary'] { line-color: @secondary-fill; } - [construction = 'tertiary'], - [construction = 'tertiary_link'] { + [construction = 'tertiary'] { line-color: @tertiary-fill; [zoom < 13] { line-width: 0; @@ -983,12 +786,19 @@ } } + [feature = 'highway_motorway_link'], [feature = 'highway_motorway'] { [zoom >= 12] { line-width: @motorway-width-z12 - 2 * @casing-width-z12; [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @casing-width-z13; } [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @casing-width-z15; } [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @casing-width-z17; } + [link = 'yes'] { + line-width: @motorway-link-width-z12 - 2 * @casing-width-z12; + [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @casing-width-z13; } + [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @casing-width-z15; } + [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @casing-width-z17; } + } .roads-fill, .bridges-fill { line-color: @motorway-fill; } @@ -1000,12 +810,19 @@ [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @bridge-casing-width-z13; } [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @bridge-casing-width-z15; } [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @bridge-casing-width-z17; } + [link = 'yes'] { + line-width: @motorway-link-width-z12 - 2 * @bridge-casing-width-z12; + [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @bridge-casing-width-z13; } + [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @bridge-casing-width-z15; } + [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @bridge-casing-width-z17; } + } } line-cap: round; line-join: round; } } + [feature = 'highway_trunk_link'], [feature = 'highway_trunk'] { [zoom >= 12] { line-width: @trunk-width-z12 - 2 * @casing-width-z12; @@ -1029,6 +846,7 @@ } } + [feature = 'highway_primary_link'], [feature = 'highway_primary'] { [zoom >= 12] { line-width: @primary-width-z12 - 2 * @casing-width-z12; @@ -1052,6 +870,7 @@ } } + [feature = 'highway_secondary_link'], [feature = 'highway_secondary'] { [zoom >= 12] { line-width: @secondary-width-z12 - 2 * @casing-width-z12; @@ -1075,6 +894,7 @@ } } + [feature = 'highway_tertiary_link'], [feature = 'highway_tertiary'] { [zoom >= 13] { line-width: @tertiary-width-z13 - 2 * @casing-width-z13; @@ -1563,12 +1383,14 @@ } [feature = 'railway_tram'] { - .tunnels-fill { - [zoom >= 13] { - line-width: 1; + [zoom >= 13] { + line-color: #444; + line-width: 1; + [zoom >= 15] { + line-width: 2; + } + .tunnels-fill { line-dasharray: 5,3; - line-color: #444; - [zoom >= 15] { line-width: 2; } } } } @@ -1975,15 +1797,10 @@ } [access = 'no'] { [feature = 'highway_motorway'], - [feature = 'highway_motorway_link'], [feature = 'highway_trunk'], - [feature = 'highway_trunk_link'], [feature = 'highway_primary'], - [feature = 'highway_primary_link'], [feature = 'highway_secondary'], - [feature = 'highway_secondary_link'], [feature = 'highway_tertiary'], - [feature = 'highway_tertiary_link'], [feature = 'highway_unclassified'], [feature = 'highway_residential'], [feature = 'highway_road'], @@ -2016,8 +1833,7 @@ } #roads-low-zoom { - [feature = 'highway_motorway'], - [feature = 'highway_motorway_link'] { + [feature = 'highway_motorway'] { [zoom >= 5][zoom < 12] { line-width: 0.5; line-color: @motorway-fill; @@ -2028,8 +1844,7 @@ } } - [feature = 'highway_trunk'], - [feature = 'highway_trunk_link'] { + [feature = 'highway_trunk'] { [zoom >= 5][zoom < 12] { line-width: 0.4; line-color: @trunk-fill; @@ -2042,8 +1857,7 @@ } } - [feature = 'highway_primary'], - [feature = 'highway_primary_link'] { + [feature = 'highway_primary'] { [zoom >= 7][zoom < 12] { line-width: 0.5; line-color: @primary-fill; @@ -2053,8 +1867,7 @@ } } - [feature = 'highway_secondary'], - [feature = 'highway_secondary_link'] { + [feature = 'highway_secondary'] { [zoom >= 9][zoom < 12] { line-width: 1; line-color: @secondary-fill; @@ -2094,24 +1907,6 @@ } } -#trams { - [railway = 'tram'][zoom >= 13] { - line-color: #444; - line-width: 1; - [zoom >= 15] { - line-width: 2; - [bridge = 'yes'] { - line-width: 5; - line-color: black; - b/line-width: 4; - b/line-color: white; - c/line-width: 2; - c/line-color: #444; - } - } - } -} - #guideways { [zoom >= 13] { line-width: 3; @@ -2274,11 +2069,8 @@ #roads-text-name { [highway = 'motorway'], - [highway = 'motorway_link'], [highway = 'trunk'], - [highway = 'trunk_link'], - [highway = 'primary'], - [highway = 'primary_link'] { + [highway = 'primary'] { [zoom >= 13] { text-name: "[name]"; text-size: 8; @@ -2296,8 +2088,7 @@ text-size: 10; } } - [highway = 'secondary'], - [highway = 'secondary_link'] { + [highway = 'secondary'] { [zoom >= 13] { text-name: "[name]"; text-size: 8; @@ -2315,8 +2106,7 @@ text-size: 10; } } - [highway = 'tertiary'], - [highway = 'tertiary_link'] { + [highway = 'tertiary'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; From bc730dcc06e1b6ba512c640f9790fcd94912383e Mon Sep 17 00:00:00 2001 From: math1985 Date: Sun, 20 Jul 2014 23:42:52 +0100 Subject: [PATCH 15/74] Correct rendering lowzoom and names of links This corrects a mismatch between the queries and the style sheet for the roads-low-zoom and roads-text-name layers. This should not have influence on performance. --- project.mml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/project.mml b/project.mml index 19380428d8..34dfa80b62 100644 --- a/project.mml +++ b/project.mml @@ -836,7 +836,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,coalesce(('highway_' || (case when highway is not null then highway else null 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,tunnel\n from planet_osm_roads\n where highway is not null\n or (railway is not null and railway!='preserved' and (service is null or service not in ('spur','siding','yard')))\n order by z_order\n ) as roads_low_zoom", + "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,tunnel\n from planet_osm_roads\n where highway is not null\n or (railway is not null and railway!='preserved' and (service is null or service not in ('spur','siding','yard')))\n order by z_order\n ) as roads_low_zoom", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -1459,7 +1459,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way, highway, name\n from planet_osm_line\n 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','proposed') \n and name is not null\n ) as roads_text_name", + "table": " (select way, case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end, name\n from planet_osm_line\n 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','proposed') \n and name is not null\n ) as roads_text_name", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", From b9c02d0e94a3859b2a26979c8364d46db41973f4 Mon Sep 17 00:00:00 2001 From: math1985 Date: Fri, 1 Aug 2014 23:04:25 +0100 Subject: [PATCH 16/74] Remove no longer needed link references --- roads.mss | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/roads.mss b/roads.mss index 2f36aa8871..80adead1b3 100644 --- a/roads.mss +++ b/roads.mss @@ -134,7 +134,6 @@ .roads-casing, .bridges-casing, .tunnels-casing { ::casing { [zoom >= 12] { - [feature = 'highway_motorway_link'], [feature = 'highway_motorway'] { line-width: @motorway-width-z12; [zoom >= 13] { line-width: @motorway-width-z13; } @@ -161,7 +160,6 @@ } } - [feature = 'highway_trunk_link'], [feature = 'highway_trunk'] { [zoom >= 12] { line-color: @trunk-casing; @@ -183,7 +181,6 @@ } } - [feature = 'highway_primary_link'], [feature = 'highway_primary'] { [zoom >= 12] { line-color: @primary-casing; @@ -205,7 +202,6 @@ } } - [feature = 'highway_secondary_link'], [feature = 'highway_secondary'] { [zoom >= 12] { line-color: @secondary-casing; @@ -229,7 +225,6 @@ } } - [feature = 'highway_tertiary_link'], [feature = 'highway_tertiary'] { [zoom >= 13] { line-color: @tertiary-casing; @@ -786,7 +781,6 @@ } } - [feature = 'highway_motorway_link'], [feature = 'highway_motorway'] { [zoom >= 12] { line-width: @motorway-width-z12 - 2 * @casing-width-z12; @@ -822,7 +816,6 @@ } } - [feature = 'highway_trunk_link'], [feature = 'highway_trunk'] { [zoom >= 12] { line-width: @trunk-width-z12 - 2 * @casing-width-z12; @@ -846,7 +839,6 @@ } } - [feature = 'highway_primary_link'], [feature = 'highway_primary'] { [zoom >= 12] { line-width: @primary-width-z12 - 2 * @casing-width-z12; @@ -870,7 +862,6 @@ } } - [feature = 'highway_secondary_link'], [feature = 'highway_secondary'] { [zoom >= 12] { line-width: @secondary-width-z12 - 2 * @casing-width-z12; @@ -894,7 +885,6 @@ } } - [feature = 'highway_tertiary_link'], [feature = 'highway_tertiary'] { [zoom >= 13] { line-width: @tertiary-width-z13 - 2 * @casing-width-z13; From fc3b3ed8e4e05a101e294272353e3755fbff3d09 Mon Sep 17 00:00:00 2001 From: math1985 Date: Sat, 2 Aug 2014 00:00:47 +0100 Subject: [PATCH 17/74] Make colors former transparent landuses darker The colors have been chosen in such a way that they stay the same on the gray 'land' background. --- landcover.mss | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/landcover.mss b/landcover.mss index 4bbacbc638..95a4169387 100644 --- a/landcover.mss +++ b/landcover.mss @@ -4,7 +4,7 @@ @grass: #cfeca8; // also meadow, common, garden, village_green, conservation @golf_course: #b5e3b5; @natural: #c6e4b4; // also grassland -@park: #b6fdb6; // also recreation_ground +@park: #cdf7c9; // also recreation_ground @wood: #aed1a0; @vineyard: #abdf96; @@ -34,18 +34,18 @@ // --- Other ---- -@aerodrome: #ccc; +@aerodrome: #e9e7e2; @allotments: #e5c7ab; @apron: #e9d1ff; @attraction: #f2caea; @barracks: #ff8f8f; -@campsite: #ccff99; // also caravan_site, picnic_site +@campsite: #def6c0; // also caravan_site, picnic_site @cemetery: #aacbaf; // also grave_yard -@construction: #9d9d6c; +@construction: #b6b592; @danger_area: pink; @desert: #e3b57a; @field: @farmland; -@garages: #996; +@garages: #dfddce; @heath: #d6d99f; @parking: #f7efb7; @playground: #ccfff1; From d89c6e2233857f659347475920b2520781beec93 Mon Sep 17 00:00:00 2001 From: math1985 Date: Sat, 2 Aug 2014 00:04:58 +0100 Subject: [PATCH 18/74] Remove irrelevant subway bridge casing change from PR --- roads.mss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roads.mss b/roads.mss index 80adead1b3..7752a97beb 100644 --- a/roads.mss +++ b/roads.mss @@ -464,7 +464,7 @@ [feature = 'railway_subway'] { .bridges-casing { [zoom >= 14] { - line-width: 5; + line-width: 5.5; line-color: black; line-join: round; } From 543e025cb914a9ab0f2c35062d1302d81ec3602e Mon Sep 17 00:00:00 2001 From: math1985 Date: Sat, 2 Aug 2014 01:50:10 +0100 Subject: [PATCH 19/74] Make bridge values consistent Be consistent in the bridge values for which we test. Note that bridge=true and bridge=1 are no longer in use. --- project.mml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/project.mml b/project.mml index 4dfa46dcab..bb551548a8 100644 --- a/project.mml +++ b/project.mml @@ -259,7 +259,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n and (bridge is null or bridge not in ('yes','true','1','aqueduct'))\n order by z_order\n ) as water_lines", + "table": " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n and (bridge is null or bridge not in ('yes','aqueduct'))\n order by z_order\n ) as water_lines", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -722,7 +722,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,coalesce(('highway_' || highway), ('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 in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'construction')) and (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','true','1','viaduct')) order by z_order) as roads", + "table": " (select way,coalesce(('highway_' || highway), ('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 in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'construction')) and (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','viaduct')) order by z_order) as roads", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -767,7 +767,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,coalesce(('highway_' || highway), ('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 in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'construction')) and (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','true','1','viaduct')) order by z_order) as roads_fill", + "table": " (select way,coalesce(('highway_' || highway), ('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 in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'construction')) and (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','viaduct')) order by z_order) as roads_fill", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -859,7 +859,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,name from planet_osm_line where waterway='canal' and bridge in ('yes','true','1','aqueduct') order by z_order) as waterway_bridges", + "table": "(select way,name from planet_osm_line where waterway='canal' and bridge in ('yes','aqueduct') order by z_order) as waterway_bridges", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -882,7 +882,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,coalesce(('highway_' || highway), ('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 in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'construction')) and bridge in ('yes','true','1','viaduct') and (layer is null or (layer in ('0','1','2','3','4','5'))) order by layernotnull, z_order) as bridges", + "table": "(select way,coalesce(('highway_' || highway), ('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 in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'construction')) and bridge in ('yes','viaduct') and (layer is null or (layer in ('0','1','2','3','4','5'))) order by layernotnull, z_order) as bridges", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -1436,7 +1436,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,coalesce(highway,aeroway) as highway,ref,char_length(ref) as length,\n case when bridge in ('yes','true','1') then 'yes'::text else 'no'::text end as bridge\n from planet_osm_line\n where (highway is not null or aeroway is not null)\n and ref is not null\n and char_length(ref) between 1 and 11\n ) as roads_text_ref", + "table": " (select way,coalesce(highway,aeroway) as highway,ref,char_length(ref) as length,\n case when bridge in ('yes','aqueduct') then 'yes'::text else 'no'::text end as bridge\n from planet_osm_line\n where (highway is not null or aeroway is not null)\n and ref is not null\n and char_length(ref) between 1 and 11\n ) as roads_text_ref", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", From 4f33212d24913cfd9d2f52879a0f9609378ff8db Mon Sep 17 00:00:00 2001 From: math1985 Date: Sat, 2 Aug 2014 09:20:34 +0100 Subject: [PATCH 20/74] Clean up highway labels * Make font sizes more consistent (resolves #544) * Let tertiary labels start at z14 rather than z15 (resolves #301) * Add label for bridleways * Remove halo from residential/unclassified/road (resolves #515) * General code clean-up --- roads.mss | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/roads.mss b/roads.mss index d1488724ac..21146ed56d 100644 --- a/roads.mss +++ b/roads.mss @@ -2295,6 +2295,9 @@ [zoom >= 15] { text-size: 10; } + [zoom >= 17] { + text-size: 11; + } } [highway = 'secondary'], [highway = 'secondary_link'] { @@ -2314,13 +2317,16 @@ [zoom >= 15] { text-size: 10; } + [zoom >= 17] { + text-size: 11; + } } [highway = 'tertiary'], [highway = 'tertiary_link'] { - [zoom >= 15] { + [zoom >= 14] { text-name: "[name]"; text-size: 9; - text-fill: #000; + text-fill: black; text-spacing: 300; text-clip: false; text-placement: line; @@ -2336,14 +2342,14 @@ [zoom >= 13] { text-name: "[name]"; text-size: 9; - text-fill: #000; + text-fill: black; text-spacing: 300; text-clip: false; text-placement: line; - text-face-name: @book-fonts; text-halo-radius: 1; + text-face-name: @book-fonts; } - [zoom >= 16] { + [zoom >= 17] { text-size: 11; } } @@ -2353,10 +2359,11 @@ [zoom >= 15] { text-name: "[name]"; text-size: 8; + text-fill: black; text-spacing: 300; text-clip: false; text-placement: line; - text-halo-radius: 1; + text-halo-radius: 0; text-face-name: @book-fonts; } [zoom >= 16] { @@ -2373,9 +2380,11 @@ [zoom >= 16] { text-name: "[name]"; text-size: 9; + text-fill: black; text-spacing: 300; text-clip: false; text-placement: line; + text-halo-radius: 0; text-face-name: @book-fonts; } [zoom >= 17] { @@ -2388,9 +2397,11 @@ [zoom >= 15] { text-name: "[name]"; text-size: 8; + text-fill: black; text-spacing: 300; text-clip: false; text-placement: line; + text-halo-radius: 0; text-face-name: @book-fonts; } [zoom >= 16] { @@ -2444,6 +2455,7 @@ } } + [highway = 'bridleway'], [highway = 'footway'], [highway = 'cycleway'], [highway = 'path'], From 68823cf4a26e58bbf667669da4183542abb73920 Mon Sep 17 00:00:00 2001 From: math1985 Date: Sat, 2 Aug 2014 11:08:41 +0100 Subject: [PATCH 21/74] Render names of large names at lower zoomlevels This resolves #700. --- amenity-points.mss | 9 ++++++++- project.mml | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/amenity-points.mss b/amenity-points.mss index 3f7f90facf..e0f1c070af 100644 --- a/amenity-points.mss +++ b/amenity-points.mss @@ -582,7 +582,14 @@ [natural = 'lake']::natural, [landuse = 'reservoir']::landuse, [landuse = 'basin']::landuse { - [zoom >= 15] { + [way_area >= 40000000][zoom >= 10], + [way_area >= 10000000][zoom >= 11], + [way_area >= 2400000][zoom >= 12], + [way_area >= 600000][zoom >= 13], + [way_area >= 150000][zoom >= 14], + [way_area >= 80000][zoom >= 15], + [way_area >= 20000][zoom >= 16], + [zoom >= 17] { text-name: "[name]"; text-size: 12; text-fill: @water-text; diff --git a/project.mml b/project.mml index 4dfa46dcab..ac58fa9d06 100644 --- a/project.mml +++ b/project.mml @@ -213,7 +213,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,\"natural\",waterway,landuse,name\n from planet_osm_polygon\n where (waterway in ('dock','mill_pond','riverbank','canal')\n or landuse in ('reservoir','water','basin')\n or \"natural\" in ('lake','water','land','glacier','mud'))\n and building is null\n order by z_order,way_area desc\n ) as water_areas", + "table": " (select way,\"natural\",waterway,landuse,name,way_area\n from planet_osm_polygon\n where (waterway in ('dock','mill_pond','riverbank','canal')\n or landuse in ('reservoir','water','basin')\n or \"natural\" in ('lake','water','land','glacier','mud'))\n and building is null\n order by z_order,way_area desc\n ) as water_areas", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", From 81ce70a54d27fbf930a131f678b764c4bd897177 Mon Sep 17 00:00:00 2001 From: math1985 Date: Mon, 4 Aug 2014 01:02:23 +0100 Subject: [PATCH 22/74] Give service roads the same color as residential roads This resolves #817. --- roads.mss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roads.mss b/roads.mss index d1488724ac..8ad63a294d 100644 --- a/roads.mss +++ b/roads.mss @@ -7,7 +7,7 @@ @secondary-fill: #f9d6aa; @tertiary-fill: #f8f8ba; @residential-fill: #ffffff; -@service-fill: #ffffff; +@service-fill: @residential-fill; @living-street-fill: #ccc; @pedestrian-fill: #ededed; @road-fill: #ddd; @@ -29,7 +29,7 @@ @secondary-casing: #cca16a; @tertiary-casing: #c6c68a; @residential-casing: #bbb; -@service-casing: #999; +@service-casing: @residential-casing; @living-street-casing: @default-casing; @living-street-tunnel-casing: #bbb; @pedestrian-casing: grey; From a8e866810f51e900ee876637b28cb2d9ea268659 Mon Sep 17 00:00:00 2001 From: math1985 Date: Mon, 4 Aug 2014 01:14:46 +0100 Subject: [PATCH 23/74] Revert accidental change in dasharray of steps This solves #760. --- roads.mss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roads.mss b/roads.mss index d1488724ac..2f280c60d8 100644 --- a/roads.mss +++ b/roads.mss @@ -1259,7 +1259,7 @@ .roads-fill { background/line-opacity: 0.4; } } line/line-color: @steps-fill; - line/line-dasharray: 1,3; + line/line-dasharray: 2,1; [zoom >= 15] { line/line-width: @steps-width-z15; } line/line-width: @steps-width-z13; [zoom >= 15] { line/line-width: @steps-width-z15; } From 8fa1e06d1f38ead4df638f212377d063492e5d50 Mon Sep 17 00:00:00 2001 From: math1985 Date: Sat, 2 Aug 2014 10:47:22 +0100 Subject: [PATCH 24/74] Refactor waterway bridges * Rivers, streams, ditches and drains are now also rendered on bridges. This resolves https://trac.openstreetmap.org/ticket/3005. * Canals on bridges now have a width consistent with canals not on bridges. --- project.mml | 8 ++++---- water.mss | 40 +++++++++++++++++++++++----------------- 2 files changed, 27 insertions(+), 21 deletions(-) diff --git a/project.mml b/project.mml index 390dc62f13..da162240b7 100644 --- a/project.mml +++ b/project.mml @@ -259,14 +259,14 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n and (bridge is null or bridge not in ('yes','aqueduct'))\n order by z_order\n ) as water_lines", + "table": " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel, 'no' as bridge\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n and (bridge is null or bridge not in ('yes','aqueduct'))\n order by z_order\n ) as water_lines", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", "dbname": "gis" }, "id": "water-lines", - "class": "", + "class": "water-lines", "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", "advanced": {}, @@ -859,14 +859,14 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,name from planet_osm_line where waterway='canal' and bridge in ('yes','aqueduct') order by z_order) as waterway_bridges", + "table": "(select way,waterway,name,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", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", "dbname": "gis" }, "id": "waterway-bridges", - "class": "", + "class": "water-lines", "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", "advanced": {}, diff --git a/water.mss b/water.mss index c1068c2404..09fdcd00b6 100644 --- a/water.mss +++ b/water.mss @@ -90,7 +90,7 @@ } } -#water-lines { +.water-lines { [waterway = 'weir'][zoom >= 15] { line-color: #aaa; line-width: 2; @@ -109,6 +109,16 @@ [waterway = 'canal'][zoom >= 12], [waterway = 'river'][zoom >= 12] { + [bridge = 'yes'] { + [zoom >= 14] { + bridgecasing/line-color: black; + bridgecasing/line-join: round; + bridgecasing/line-width: 6; + [zoom >= 15] { bridgecasing/line-width: 7; } + [zoom >= 17] { bridgecasing/line-width: 11; } + [zoom >= 18] { bridgecasing/line-width: 13; } + } + } line-color: @water-color; line-width: 2; [zoom >= 13] { line-width: 3; } @@ -135,6 +145,18 @@ [waterway = 'ditch'], [waterway = 'drain'] { [zoom >= 13] { + [bridge = 'yes'] { + [zoom >= 14] { + bridgecasing/line-color: black; + bridgecasing/line-join: round; + bridgecasing/line-width: 3; + [waterway = 'stream'][zoom >= 15] { bridgecasing/line-width: 4; } + bridgeglow/line-color: white; + bridgeglow/line-join: round; + bridgeglow/line-width: 2; + [waterway = 'stream'][zoom >= 15] { bridgeglow/line-width: 3; } + } + } line-width: 1; line-color: @water-color; [waterway = 'stream'][zoom >= 15] { @@ -169,22 +191,6 @@ } } -#waterway-bridges { - [zoom >= 14] { - line-width: 7; - line-color: #000; - line-join: round; - b/line-width: 6; - b/line-color: @water-color; - b/line-cap: round; - b/line-join: round; - [zoom >= 17] { - line-width: 11; - b/line-width: 10; - } - } -} - #water-lines-text { [waterway = 'river'][zoom >= 13] { text-name: "[name]"; From a1a34dcfa93e20941f78aada3dcb4e33236a04d7 Mon Sep 17 00:00:00 2001 From: math1985 Date: Sat, 2 Aug 2014 00:35:45 +0100 Subject: [PATCH 25/74] Make minimum landuse zoom levels more consistent The minimum zoom levels are currently rather inconsistent. For example meadow and farmland have a different minimum zoom level. This PR aims to improve this. This PR lets all major landuse start at z10 (like most do already), except for wood / forest. Smaller objects will start at z13. Concrete changes in minimum zoom levels: * tourism=camp_site, tourism=caravan_site, tourism_picnic_site from z13 to z10 * landuse=quarry from z11 to z10 * landuse=garages from z12 to z13 * landuse=farmyard, landuse=farm, landuse=farmland from z9 to 10 * landuse=village_green from z11 to z10 * natural=desert from z8 to z10 (solves partially #773) * aeroway=apron, aeroway=aerodrome from z12 to z10 * highway=services, highway=rest_area from z14 to z10 --- landcover.mss | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/landcover.mss b/landcover.mss index 660129225f..ae6bc55c7c 100644 --- a/landcover.mss +++ b/landcover.mss @@ -70,7 +70,7 @@ [feature = 'tourism_camp_site'], [feature = 'tourism_caravan_site'], [feature = 'tourism_picnic_site'] { - [zoom >= 13] { + [zoom >= 10] { polygon-fill: @campsite; line-color: saturate(darken(@campsite, 60%), 30%); line-width: 0.3; @@ -81,7 +81,7 @@ polygon-fill: @attraction; } - [feature = 'landuse_quarry'][zoom >= 11] { + [feature = 'landuse_quarry'][zoom >= 10] { polygon-pattern-file: url('symbols/quarry2.png'); line-width: 0.5; line-color: grey; @@ -124,7 +124,7 @@ } } - [feature = 'landuse_garages'][zoom >= 12] { + [feature = 'landuse_garages'][zoom >= 13] { polygon-fill: @garages; } @@ -201,7 +201,7 @@ } } - [feature = 'landuse_farmyard'][zoom >= 9] { + [feature = 'landuse_farmyard'][zoom >= 10] { polygon-fill: @farmyard; [zoom >= 16] { line-width: 0.5; @@ -214,7 +214,7 @@ [feature = 'landuse_farm'], [feature = 'landuse_farmland'] { - [zoom >= 9] { + [zoom >= 10] { polygon-fill: @farmland; [zoom >= 16] { line-width: .5; @@ -230,7 +230,7 @@ } } - [feature = 'landuse_village_green'][zoom >= 11] { + [feature = 'landuse_village_green'][zoom >= 10] { polygon-fill: @grass; } @@ -301,7 +301,7 @@ } } - [feature = 'natural_desert'][zoom >= 8] { + [feature = 'natural_desert'][zoom >= 10] { polygon-fill: @desert; } @@ -348,11 +348,11 @@ } } - [feature = 'aeroway_apron'][zoom >= 12] { + [feature = 'aeroway_apron'][zoom >= 10] { polygon-fill: @apron; } - [feature = 'aeroway_aerodrome'][zoom >= 12] { + [feature = 'aeroway_aerodrome'][zoom >= 10] { polygon-fill: @aerodrome; line-width: 0.2; line-color: saturate(darken(@aerodrome, 40%), 20%); @@ -364,7 +364,7 @@ [feature = 'highway_services'], [feature = 'highway_rest_area'] { - [zoom >= 14] { + [zoom >= 10] { polygon-fill: @rest_area; } } From d59278fbf259eef163cb519d803d390769ff4e0a Mon Sep 17 00:00:00 2001 From: Math1985 Date: Tue, 3 Jun 2014 01:47:15 +0100 Subject: [PATCH 26/74] Render names on junctions This renders names of junction=yes and junction=roundabout. Rendering is similar to highway=motorway_junction. --- project.mml | 6 +++--- roads.mss | 49 +++++++++++++++++++++++++++++++++++-------------- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/project.mml b/project.mml index 390dc62f13..1f28b3fe54 100644 --- a/project.mml +++ b/project.mml @@ -1390,18 +1390,18 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,ref,name\n from planet_osm_point\n where highway='motorway_junction'\n ) as highway_junctions", + "table": " (select way,highway,junction,ref,name\n from planet_osm_point\n where highway='motorway_junction' or NOT junction IS NULL\n ) as junctions", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", "dbname": "gis" }, - "id": "highway-junctions", + "id": "junctions", "class": "", "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", "advanced": {}, - "name": "highway-junctions" + "name": "junctions" }, { "geometry": "linestring", diff --git a/roads.mss b/roads.mss index 64c3776359..56a2e0212d 100644 --- a/roads.mss +++ b/roads.mss @@ -1730,15 +1730,37 @@ } } -#highway-junctions { - [zoom >= 11] { - ref/text-name: "[ref]"; - ref/text-size: 10; - ref/text-fill: #6666ff; - ref/text-min-distance: 2; - ref/text-face-name: @oblique-fonts; - ref/text-halo-radius: 1.5; - [zoom >= 12] { +#junctions { + [highway = 'motorway_junction'] { + [zoom >= 11] { + ref/text-name: "[ref]"; + ref/text-size: 10; + ref/text-fill: #6666ff; + ref/text-min-distance: 2; + ref/text-face-name: @oblique-fonts; + ref/text-halo-radius: 1.5; + [zoom >= 12] { + name/text-name: "[name]"; + name/text-size: 9; + name/text-fill: #6666ff; + name/text-dy: -9; + name/text-face-name: @oblique-fonts; + name/text-halo-radius: 1; + name/text-wrap-character: ";"; + name/text-wrap-width: 2; + name/text-min-distance: 2; + } + [zoom >= 15] { + ref/text-size: 12; + name/text-size: 11; + name/text-dy: -10; + } + } + } + + [junction = 'yes'], + [junction = 'roundabout'] { + [zoom >= 13] { name/text-name: "[name]"; name/text-size: 9; name/text-fill: #6666ff; @@ -1748,11 +1770,10 @@ name/text-wrap-character: ";"; name/text-wrap-width: 2; name/text-min-distance: 2; - } - [zoom >= 15] { - ref/text-size: 12; - name/text-size: 11; - name/text-dy: -10; + [zoom >= 15] { + name/text-size: 11; + name/text-dy: -10; + } } } } From 9c6b1616f8bb84ec7c8f9cfba937b8ddc05c1328 Mon Sep 17 00:00:00 2001 From: math1985 Date: Sat, 2 Aug 2014 10:11:29 +0100 Subject: [PATCH 27/74] Change junction rendering * Also render name for traffic_signals without junction tag * Don't render junction names on roundabouts * Render junctions in black and in a smaller font * Offset junction names only when the traffic signal icon shows * Start rendering junctions from z14 * Wrap lines --- project.mml | 2 +- roads.mss | 34 +++++++++++++++++++++------------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/project.mml b/project.mml index 1f28b3fe54..d0d7453f6b 100644 --- a/project.mml +++ b/project.mml @@ -1390,7 +1390,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,highway,junction,ref,name\n from planet_osm_point\n where highway='motorway_junction' or NOT junction IS NULL\n ) as junctions", + "table": " (select way,highway,junction,ref,name\n from planet_osm_point\n where highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes'\n ) as junctions", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", diff --git a/roads.mss b/roads.mss index 56a2e0212d..4a9fb281ac 100644 --- a/roads.mss +++ b/roads.mss @@ -1759,20 +1759,28 @@ } [junction = 'yes'], - [junction = 'roundabout'] { - [zoom >= 13] { - name/text-name: "[name]"; - name/text-size: 9; - name/text-fill: #6666ff; - name/text-dy: -9; - name/text-face-name: @oblique-fonts; - name/text-halo-radius: 1; - name/text-wrap-character: ";"; - name/text-wrap-width: 2; - name/text-min-distance: 2; + [highway = 'traffic_signals'] { + [zoom >= 14] { + text-name: "[name]"; + text-size: 8; + text-fill: black; + text-face-name: @book-fonts; + text-halo-radius: 1; + text-wrap-width: 30; + text-min-distance: 2; + [zoom >= 14] { + text-size: 9; + } [zoom >= 15] { - name/text-size: 11; - name/text-dy: -10; + text-size: 10; + } + [zoom >= 17] { + text-size: 11; + /* Offset name on traffic_signals on zoomlevels where they are displayed + in order not to hide the icon */ + [highway = 'traffic_signals'] { + text-dy: 11; + } } } } From 44600652b9662a78c279622df4bfd212b86f31db Mon Sep 17 00:00:00 2001 From: math1985 Date: Fri, 8 Aug 2014 17:42:04 +0100 Subject: [PATCH 28/74] Clean up highway area label * Render names on all types of highway areas, not just highway=pedestrian * Make minimum zoom level depend on area size --- project.mml | 2 +- roads.mss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/project.mml b/project.mml index 390dc62f13..da8f688da9 100644 --- a/project.mml +++ b/project.mml @@ -1436,7 +1436,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way, highway, name\n from planet_osm_polygon\n where highway='pedestrian'\n and name is not null\n ) as roads_area_text_name", + "table": " (select way, way_area/(!pixel_width!*!pixel_height!) AS way_pixels, highway, name\n from planet_osm_polygon\n where highway in ('residential','unclassified','pedestrian','service','footway','cycleway','living_street','track','path','platform') or railway in ('platform') and name is not null\n ) as roads_area_text_name", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", diff --git a/roads.mss b/roads.mss index 64c3776359..27de3222bc 100644 --- a/roads.mss +++ b/roads.mss @@ -2195,7 +2195,7 @@ } #roads-area-text-name { - [highway = 'pedestrian'] { + [way_pixels > 3000] { [zoom >= 15] { text-name: "[name]"; text-size: 8; From 8bbed89b206a971d91e27e8363a7f1fb515515c8 Mon Sep 17 00:00:00 2001 From: math1985 Date: Fri, 8 Aug 2014 17:56:21 +0100 Subject: [PATCH 29/74] Correct order secondary vs tertiary highway This resolves #862. --- project.mml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/project.mml b/project.mml index 390dc62f13..86053b2303 100644 --- a/project.mml +++ b/project.mml @@ -443,7 +443,7 @@ ], "Datasource": { "type": "postgis", - "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join (values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('highway_motorway',370), ('highway_trunk',360), ('highway_primary',350), ('highway_secondary',340), ('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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes') order by layernotnull, ordertable.prio) as tunnels", + "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join (values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes') order by layernotnull, ordertable.prio) as tunnels", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -722,7 +722,7 @@ ], "Datasource": { "type": "postgis", - "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('highway_motorway',370), ('highway_trunk',360), ('highway_primary',350), ('highway_secondary',340), ('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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')) order by ordertable.prio) as roads", + "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')) order by ordertable.prio) as roads", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -767,7 +767,7 @@ ], "Datasource": { "type": "postgis", - "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('highway_motorway',370), ('highway_trunk',360), ('highway_primary',350), ('highway_secondary',340), ('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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')) order by ordertable.prio) as roads_fill", + "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')) order by ordertable.prio) as roads_fill", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -882,7 +882,7 @@ ], "Datasource": { "type": "postgis", - "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('highway_motorway',370), ('highway_trunk',360), ('highway_primary',350), ('highway_secondary',340), ('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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct') and (layer is null or (layer in ('0','1','2','3','4','5'))) order by layernotnull, ordertable.prio) as bridges", + "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct') and (layer is null or (layer in ('0','1','2','3','4','5'))) order by layernotnull, ordertable.prio) as bridges", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", From e282c38ae32556633f4496197a15ee4d1638c3c5 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Mon, 11 Aug 2014 19:59:15 -0700 Subject: [PATCH 30/74] Remove polygon-gamma polygon-gamma was left over from the XML conversion, and doesn't actually seem to help anything Fixes #73 Superceeds #867 --- water.mss | 3 --- 1 file changed, 3 deletions(-) diff --git a/water.mss b/water.mss index c1068c2404..f55f604005 100644 --- a/water.mss +++ b/water.mss @@ -17,13 +17,11 @@ [waterway = 'mill_pond'], [waterway = 'canal'] { [zoom >= 9]::waterway { - polygon-gamma: 0.75; polygon-fill: @water-color; } } [landuse = 'basin'][zoom >= 7]::landuse { - polygon-gamma: 0.75; polygon-fill: @water-color; } @@ -34,7 +32,6 @@ [landuse = 'water']::water { [zoom >= 6] { polygon-fill: @water-color; - polygon-gamma: 0.75; } } From dc108c3525f3b78da670e76a7f76eb608a9436ff Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Mon, 11 Aug 2014 22:26:00 -0700 Subject: [PATCH 31/74] Clean up and reformat water area SQL This reformats the water SQL, and eliminates unused and hardly used mistaken taggings for water. Cross-reference #204 --- project.mml | 2 +- water.mss | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/project.mml b/project.mml index 390dc62f13..1559d95909 100644 --- a/project.mml +++ b/project.mml @@ -213,7 +213,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,\"natural\",waterway,landuse,name,way_area\n from planet_osm_polygon\n where (waterway in ('dock','mill_pond','riverbank','canal')\n or landuse in ('reservoir','water','basin')\n or \"natural\" in ('lake','water','land','glacier','mud'))\n and building is null\n order by z_order,way_area desc\n ) as water_areas", + "table": "(SELECT\n way, \"natural\", waterway, landuse, name, way_area\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir','basin')\n OR \"natural\" IN ('lake','water','land','glacier','mud'))\n AND building IS NULL\n ORDER BY z_order, way_area) AS water_areas", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", diff --git a/water.mss b/water.mss index f55f604005..e15624a22f 100644 --- a/water.mss +++ b/water.mss @@ -14,7 +14,6 @@ } [waterway = 'dock'], - [waterway = 'mill_pond'], [waterway = 'canal'] { [zoom >= 9]::waterway { polygon-fill: @water-color; @@ -28,8 +27,7 @@ [natural = 'lake']::natural, [natural = 'water']::natural, [landuse = 'reservoir']::landuse, - [waterway = 'riverbank']::waterway, - [landuse = 'water']::water { + [waterway = 'riverbank']::waterway { [zoom >= 6] { polygon-fill: @water-color; } From ad99638302b371bfccce920ffb667111d632af3f Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Tue, 12 Aug 2014 08:40:31 -0700 Subject: [PATCH 32/74] Don't return way_area for water areas We're not using way_area, so don't return it --- project.mml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.mml b/project.mml index 1559d95909..b2254e6a6b 100644 --- a/project.mml +++ b/project.mml @@ -213,7 +213,7 @@ ], "Datasource": { "type": "postgis", - "table": "(SELECT\n way, \"natural\", waterway, landuse, name, way_area\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir','basin')\n OR \"natural\" IN ('lake','water','land','glacier','mud'))\n AND building IS NULL\n ORDER BY z_order, way_area) AS water_areas", + "table": "(SELECT\n way, \"natural\", waterway, landuse, name\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir','basin')\n OR \"natural\" IN ('lake','water','land','glacier','mud'))\n AND building IS NULL\n ORDER BY z_order, way_area) AS water_areas", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", From 3b3099a989f2fe80c2cfa45036e1ce196d1e6d52 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Tue, 12 Aug 2014 21:53:29 +0200 Subject: [PATCH 33/74] trac requests are migrated to github bugtracker --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 800673eb9d..bf7ed1a101 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,7 @@ much more suitable for further development, and/or forking for third-parties to ## Tackle the backlog (v3.x) -There are over [400 open requests][trac] on trac, some that have been open for years. These need +There are over [300 open requests][issues], some that have been open for years. These need reviewing and dividing into obvious fixes, or additional new features that need some cartographic judgement. The work done already in v1.0 and v2.0 will make it much easier to process these. @@ -163,5 +163,5 @@ instead of ``` * Order the selectors in a style-sheet in rough order of importance (i.e., highway=primary, then highway=secondary) and beyond that, add layers that are rendered later (i.e., higher) lower in the file. -[trac]: https://trac.openstreetmap.org/query?component=mapnik&status=!closed&order=changetime&desc=1&max=500 +[issues]: https://github.com/gravitystorm/openstreetmap-carto/issues [cleverness]: https://github.com/openstreetmap/mapnik-stylesheets/blob/master/inc/settings.xml.inc.template#L16 From d8afe6fc0c4d5b104a7726d49634b1001a667a8e Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Wed, 13 Aug 2014 17:16:11 -0700 Subject: [PATCH 34/74] Filter out small areas and use polygon-gamma for large ones This should fill in gaps between water bodies, prevent colouring bugs and not over-represent water at low zooms --- project.mml | 2 +- water.mss | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/project.mml b/project.mml index b2254e6a6b..79dd315f74 100644 --- a/project.mml +++ b/project.mml @@ -213,7 +213,7 @@ ], "Datasource": { "type": "postgis", - "table": "(SELECT\n way, \"natural\", waterway, landuse, name\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir','basin')\n OR \"natural\" IN ('lake','water','land','glacier','mud'))\n AND building IS NULL\n ORDER BY z_order, way_area) AS water_areas", + "table": "(SELECT\n way, \"natural\", waterway, landuse, name, way_area/(!pixel_width!*!pixel_height!) AS way_pixels\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir','basin')\n OR \"natural\" IN ('lake','water','land','glacier','mud'))\n AND building IS NULL\n AND way_area/(!pixel_width!*!pixel_height!) > 0.01\n ORDER BY z_order, way_area) AS water_areas", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", diff --git a/water.mss b/water.mss index e15624a22f..71e6f6a167 100644 --- a/water.mss +++ b/water.mss @@ -17,11 +17,17 @@ [waterway = 'canal'] { [zoom >= 9]::waterway { polygon-fill: @water-color; + [way_pixels >= 4] { + polygon-gamma: 0.75; + } } } [landuse = 'basin'][zoom >= 7]::landuse { polygon-fill: @water-color; + [way_pixels >= 4] { + polygon-gamma: 0.75; + } } [natural = 'lake']::natural, @@ -30,6 +36,9 @@ [waterway = 'riverbank']::waterway { [zoom >= 6] { polygon-fill: @water-color; + [way_pixels >= 4] { + polygon-gamma: 0.75; + } } } From 4306f12c3be7285b6d1ef88badf9ff9794d353ae Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Wed, 13 Aug 2014 17:29:07 -0700 Subject: [PATCH 35/74] Turn down polygon-gamma even more for bigger areas This completely eliminates white lines where large areas join. --- water.mss | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/water.mss b/water.mss index 71e6f6a167..5fb3a96488 100644 --- a/water.mss +++ b/water.mss @@ -20,6 +20,9 @@ [way_pixels >= 4] { polygon-gamma: 0.75; } + [way_pixels >= 64] { + polygon-gamma: 0.6; + } } } @@ -28,6 +31,9 @@ [way_pixels >= 4] { polygon-gamma: 0.75; } + [way_pixels >= 64] { + polygon-gamma: 0.6; + } } [natural = 'lake']::natural, @@ -39,6 +45,9 @@ [way_pixels >= 4] { polygon-gamma: 0.75; } + [way_pixels >= 64] { + polygon-gamma: 0.6; + } } } From 40a747d3d3612c6b05fa15aa1aec811568aeff64 Mon Sep 17 00:00:00 2001 From: math1985 Date: Fri, 15 Aug 2014 19:49:57 +0100 Subject: [PATCH 36/74] Re-add highway=platform Re-add highway=platform, and changes ordering of railway=platform versus paths. This solves #871. This assumes #866 is merged first. --- project.mml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/project.mml b/project.mml index 86053b2303..026cdbd274 100644 --- a/project.mml +++ b/project.mml @@ -443,7 +443,7 @@ ], "Datasource": { "type": "postgis", - "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join (values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes') order by layernotnull, ordertable.prio) as tunnels", + "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join (values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes') order by layernotnull, ordertable.prio) as tunnels", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -722,7 +722,7 @@ ], "Datasource": { "type": "postgis", - "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')) order by ordertable.prio) as roads", + "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')) order by ordertable.prio) as roads", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -767,7 +767,7 @@ ], "Datasource": { "type": "postgis", - "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')) order by ordertable.prio) as roads_fill", + "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')) order by ordertable.prio) as roads_fill", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -882,7 +882,7 @@ ], "Datasource": { "type": "postgis", - "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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), ('railway_platform',100), ('aeroway_runway',60), ('aeroway_taxiway',50), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct') and (layer is null or (layer in ('0','1','2','3','4','5'))) order by layernotnull, ordertable.prio) as bridges", + "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct') and (layer is null or (layer in ('0','1','2','3','4','5'))) order by layernotnull, ordertable.prio) as bridges", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", From fd1df07c64d2e56b9ee9de972c45959085ce57c5 Mon Sep 17 00:00:00 2001 From: math1985 Date: Mon, 18 Aug 2014 23:42:13 +0100 Subject: [PATCH 37/74] Render ways with both highway and railway tag Make sure that ways that have both a highway and a railway tag are rendered both as highway and railway. This resolves #874. This assumes #866 and #884 are merged first. Thanks to @kkofler. --- project.mml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/project.mml b/project.mml index 026cdbd274..9074be019a 100644 --- a/project.mml +++ b/project.mml @@ -443,7 +443,7 @@ ], "Datasource": { "type": "postgis", - "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join (values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes') order by layernotnull, ordertable.prio) as tunnels", + "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes'))) as features order by layernotnull,prio) as tunnels", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -722,7 +722,7 @@ ], "Datasource": { "type": "postgis", - "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')) order by ordertable.prio) as roads", + "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_casing", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -767,7 +767,7 @@ ], "Datasource": { "type": "postgis", - "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')) order by ordertable.prio) as roads_fill", + "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_fill", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -882,7 +882,7 @@ ], "Datasource": { "type": "postgis", - "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='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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_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_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on coalesce(('highway_' || planet_osm_line.highway), ('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct') and (layer is null or (layer in ('0','1','2','3','4','5'))) order by layernotnull, ordertable.prio) as bridges", + "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where bridge in ('yes','viaduct')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct'))) as features order by layernotnull,prio) as bridges", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", From 86ca76a31b86a51c1c2fe6b46a15db6e19f5735f Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Fri, 22 Aug 2014 22:24:51 -0700 Subject: [PATCH 38/74] Add a travis file This only checks for JSON validity, but it's a start --- .travis.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..1165663599 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +cache: apt +node_js: + - "0.10" +before_install: + - sudo apt-get update -qq + - sudo apt-get install -y -q python-demjson +script: jsonlint project.mml From 47bc5352c9ba4ff45eb762a5d05911d14ed5e897 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Fri, 22 Aug 2014 22:36:36 -0700 Subject: [PATCH 39/74] Check the stylesheet is valid carto We have to touch the shapefiles to make it not complain that they don't exist. --- .travis.yml | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1165663599..cba217e219 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,8 +1,22 @@ -language: node_js -cache: apt -node_js: - - "0.10" -before_install: - - sudo apt-get update -qq - - sudo apt-get install -y -q python-demjson -script: jsonlint project.mml +language: node_js +cache: apt +node_js: + - "0.10" +before_install: + - sudo apt-get update -qq + - sudo apt-get install -y -q python-demjson +install: + - npm install carto + - mkdir -p data/world_boundaries + - mkdir -p data/simplified-land-polygons-complete-3857 + - mkdir -p data/ne_110m_admin_0_boundary_lines_land + - mkdir -p data/ne_10m_populated_places + - mkdir -p data/land-polygons-split-3857 + - touch data/world_boundaries/builtup_area.shp + - touch data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp + - touch data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp + - touch data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp + - touch data/land-polygons-split-3857/land_polygons.shp +script: + - jsonlint project.mml + - ./node_modules/carto/bin/carto project.mml | xmllint --noout - From 01e0c9b6313478fbe27dc67b7e7a9e221608d0b5 Mon Sep 17 00:00:00 2001 From: math1985 Date: Sat, 23 Aug 2014 13:38:45 +0100 Subject: [PATCH 40/74] Move raceway fill to right layer Raceway fill was in the casing rather than the fill layer. This moves it to the fill layer. This resolves #830. --- roads.mss | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/roads.mss b/roads.mss index 64c3776359..9886daf589 100644 --- a/roads.mss +++ b/roads.mss @@ -437,17 +437,6 @@ } } - [feature = 'highway_raceway'] { - [zoom >= 12] { - line-color: pink; - line-width: 1.2; - line-join: round; - line-cap: round; - } - [zoom >= 13] { line-width: 4; } - [zoom >= 15] { line-width: 7; } - } - [feature = 'railway_tram'] { .bridges-casing { [zoom >= 13] { @@ -1037,6 +1026,17 @@ } } + [feature = 'highway_raceway'] { + [zoom >= 12] { + line-color: pink; + line-width: 1.2; + line-join: round; + line-cap: round; + } + [zoom >= 13] { line-width: 4; } + [zoom >= 15] { line-width: 7; } + } + [feature = 'highway_platform'] { [zoom >= 16] { line-join: round; From aa10cfd75776dabfd3839663cda6f22f21e19e5e Mon Sep 17 00:00:00 2001 From: math1985 Date: Thu, 28 Aug 2014 01:24:32 +0100 Subject: [PATCH 41/74] Restore rendering of construction link rendering This solves #909. --- roads.mss | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/roads.mss b/roads.mss index 2a2656ddd8..74c392cf22 100644 --- a/roads.mss +++ b/roads.mss @@ -707,19 +707,24 @@ line-width: 2; line-color: #9cc; - [construction = 'motorway'] { + [construction = 'motorway'], + [construction = 'motorway_link'] { line-color: @motorway-fill; } - [construction = 'trunk'] { + [construction = 'trunk'], + [construction = 'trunk_link'] { line-color: @trunk-fill; } - [construction = 'primary'] { + [construction = 'primary'], + [construction = 'primary_link'] { line-color: @primary-fill; } - [construction = 'secondary'] { + [construction = 'secondary'], + [construction = 'secondary_link'] { line-color: @secondary-fill; } - [construction = 'tertiary'] { + [construction = 'tertiary'], + [construction = 'tertiary_link'] { line-color: @tertiary-fill; [zoom < 13] { line-width: 0; From 52db19579647be9f94dacaee32894939c92016e7 Mon Sep 17 00:00:00 2001 From: math1985 Date: Thu, 28 Aug 2014 01:32:25 +0100 Subject: [PATCH 42/74] Re-add special rendering of construction links This resolves #909. --- roads.mss | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/roads.mss b/roads.mss index 2a2656ddd8..74c392cf22 100644 --- a/roads.mss +++ b/roads.mss @@ -707,19 +707,24 @@ line-width: 2; line-color: #9cc; - [construction = 'motorway'] { + [construction = 'motorway'], + [construction = 'motorway_link'] { line-color: @motorway-fill; } - [construction = 'trunk'] { + [construction = 'trunk'], + [construction = 'trunk_link'] { line-color: @trunk-fill; } - [construction = 'primary'] { + [construction = 'primary'], + [construction = 'primary_link'] { line-color: @primary-fill; } - [construction = 'secondary'] { + [construction = 'secondary'], + [construction = 'secondary_link'] { line-color: @secondary-fill; } - [construction = 'tertiary'] { + [construction = 'tertiary'], + [construction = 'tertiary_link'] { line-color: @tertiary-fill; [zoom < 13] { line-width: 0; From fe1d62327b219dc4bc292f7924335e57ff87bc46 Mon Sep 17 00:00:00 2001 From: math1985 Date: Tue, 5 Aug 2014 00:29:32 +0100 Subject: [PATCH 43/74] Order POI by way_area POI are now ordered by way area. Note that icons are never rendered on top of each other, so this has only influence on priority decision of icon rendering. Large POI (such as universities, malls, etc.) are now rendered with higher priority. The old order was: * Render points with higher priority than areas * Icon priority from high to low: tourism, amenity, highway, waterway, man_made, historic, shop, leisure * Text priority from high to low: place, amenity, natural, historic, leisure, landuse, tourism, waterway, man_made, shop, aeroway It is clear that the old order was quite a mess. * Resolves partially #287 * Resolves partially #797 * Resolves #802 * Resolves https://trac.openstreetmap.org/ticket/4100 --- amenity-points.mss | 358 ++++++++++++++++++++++----------------------- project.mml | 32 ++-- 2 files changed, 195 insertions(+), 195 deletions(-) diff --git a/amenity-points.mss b/amenity-points.mss index e0f1c070af..64c30eb0d4 100644 --- a/amenity-points.mss +++ b/amenity-points.mss @@ -6,37 +6,37 @@ @transportation-text: #0066ff; .points { - [tourism = 'alpine_hut'][zoom >= 13]::tourism { + [tourism = 'alpine_hut'][zoom >= 13] { point-file: url('symbols/alpinehut.p.16.png'); point-placement: interior; } - [amenity = 'shelter'][zoom >= 16]::amenity { + [amenity = 'shelter'][zoom >= 16] { point-file: url('symbols/shelter2.p.16.png'); point-placement: interior; } - [amenity = 'atm'][zoom >=17]::amenity { + [amenity = 'atm'][zoom >=17] { point-file: url('symbols/atm2.p.16.png'); point-placement: interior; } - [amenity = 'bank'][zoom >= 17]::amenity { + [amenity = 'bank'][zoom >= 17] { point-file: url('symbols/bank2.p.16.png'); point-placement: interior; } - [amenity = 'bar'][zoom >=17]::amenity { + [amenity = 'bar'][zoom >=17] { point-file: url('symbols/bar.p.20.png'); point-placement: interior; } - [amenity = 'bicycle_rental'][zoom >= 17]::amenity { + [amenity = 'bicycle_rental'][zoom >= 17] { point-file: url('symbols/rental_bicycle.p.20.png'); point-placement: interior; } - [highway = 'bus_stop']::highway { + [highway = 'bus_stop'] { [zoom >= 16] { point-file: url('symbols/bus_stop_small.png'); point-placement: interior; @@ -46,125 +46,125 @@ } } - [amenity = 'bus_station'][zoom >= 16]::amenity { + [amenity = 'bus_station'][zoom >= 16] { point-file: url('symbols/bus_station.n.16.png'); point-placement: interior; } - [highway = 'traffic_signals'][zoom >= 17]::highway { + [highway = 'traffic_signals'][zoom >= 17] { point-file: url('symbols/traffic_light.png'); point-placement: interior; } - [amenity = 'cafe'][zoom >=17]::amenity { + [amenity = 'cafe'][zoom >=17] { point-file: url('symbols/cafe.p.16.png'); point-placement: interior; } - [tourism = 'camp_site'][zoom >= 16]::tourism { + [tourism = 'camp_site'][zoom >= 16] { point-file: url('symbols/camping.n.16.png'); point-placement: interior; } - [highway = 'ford'][zoom >= 16]::highway { + [highway = 'ford'][zoom >= 16] { point-file: url('symbols/transport_ford.p.16.png'); point-placement: interior; } - [tourism = 'caravan_site'][zoom >= 16]::tourism { + [tourism = 'caravan_site'][zoom >= 16] { point-file: url('symbols/caravan_park.p.24.png'); point-placement: interior; } - [amenity = 'car_sharing'][zoom >= 16]::amenity { + [amenity = 'car_sharing'][zoom >= 16] { point-file: url('symbols/car_share.p.16.png'); point-placement: interior; } - [tourism = 'chalet'][zoom >= 17]::tourism { + [tourism = 'chalet'][zoom >= 17] { point-file: url('symbols/chalet.p.16.png'); point-placement: interior; } - [amenity = 'cinema'][zoom >= 17]::amenity { + [amenity = 'cinema'][zoom >= 17] { point-file: url('symbols/cinema.p.24.png'); point-placement: interior; } - [amenity = 'fire_station'][zoom >= 17]::amenity { + [amenity = 'fire_station'][zoom >= 17] { point-file: url('symbols/firestation.p.16.png'); point-placement: interior; } - [amenity = 'fuel'][zoom >= 17]::amenity { + [amenity = 'fuel'][zoom >= 17] { point-file: url('symbols/fuel.p.16.png'); point-placement: interior; } - [tourism = 'guest_house'][zoom >= 17]::tourism { + [tourism = 'guest_house'][zoom >= 17] { point-file: url('symbols/guest_house.p.16.png'); point-placement: interior; } - [amenity = 'hospital'][zoom >= 15]::amenity { + [amenity = 'hospital'][zoom >= 15] { point-file: url('symbols/hospital.p.16.png'); point-placement: interior; } - [tourism = 'hostel'][zoom >= 17]::tourism { + [tourism = 'hostel'][zoom >= 17] { point-file: url('symbols/hostel.p.20.png'); point-placement: interior; } - [tourism = 'hotel'][zoom >= 17]::tourism { + [tourism = 'hotel'][zoom >= 17] { point-file: url('symbols/hotel2.p.20.png'); point-placement: interior; } - [tourism = 'motel'][zoom >= 17]::tourism { + [tourism = 'motel'][zoom >= 17] { point-file: url('symbols/motel.p.20.png'); point-placement: interior; } - [tourism = 'information'][zoom >= 16]::tourism { + [tourism = 'information'][zoom >= 16] { point-file: url('symbols/information.p.16.png'); point-placement: interior; } - [amenity = 'embassy'][zoom >= 17]::amenity { + [amenity = 'embassy'][zoom >= 17] { point-file: url('symbols/embassy.png'); point-placement: interior; } - [amenity = 'library'][zoom >= 17]::amenity { + [amenity = 'library'][zoom >= 17] { point-file: url('symbols/library.p.20.png'); point-placement: interior; } - [amenity = 'courthouse'][zoom > 17]::amenity { + [amenity = 'courthouse'][zoom > 17] { point-file: url('symbols/amenity_court.p.20.png'); point-placement: interior; } - [waterway = 'lock']::waterway, - [lock = 'yes']::lock { + [waterway = 'lock'], + [lock = 'yes'] { [zoom >= 15] { point-file: url('symbols/lock_gate.png'); point-placement: interior; } } - [man_made = 'mast'][zoom >= 17]::man_made { + [man_made = 'mast'][zoom >= 17] { point-file: url('symbols/communications.p.20.png'); point-placement: interior; } - [tourism = 'museum'][zoom >= 17]::tourism { + [tourism = 'museum'][zoom >= 17] { point-file: url('symbols/museum.p.16.png'); point-placement: interior; } - [amenity = 'parking'][zoom >= 15]::amenity { + [amenity = 'parking'][zoom >= 15] { marker-file: url('symbols/parking.svg'); marker-placement: interior; marker-clip: false; @@ -174,12 +174,12 @@ } } - [amenity = 'pharmacy'][zoom >= 17]::amenity { + [amenity = 'pharmacy'][zoom >= 17] { point-file: url('symbols/pharmacy.p.16.png'); point-placement: interior; } - [amenity = 'place_of_worship'][zoom >= 16]::amenity { + [amenity = 'place_of_worship'][zoom >= 16] { point-file: url('symbols/place_of_worship3.p.16.png'); point-placement: interior; [religion = 'christian'] { @@ -208,123 +208,123 @@ } } - [amenity = 'police'][zoom >= 17]::amenity { + [amenity = 'police'][zoom >= 17] { point-file: url('symbols/police.p.16.png'); point-placement: interior; } - [amenity = 'post_box'][zoom >= 17]::amenity { + [amenity = 'post_box'][zoom >= 17] { point-file: url('symbols/post_box.p.16.png'); point-placement: interior; } - [amenity = 'post_office'][zoom >= 17]::amenity { + [amenity = 'post_office'][zoom >= 17] { point-file: url('symbols/post_office.p.16.png'); point-placement: interior; } - [amenity = 'pub'][zoom >= 16]::amenity { + [amenity = 'pub'][zoom >= 16] { point-file: url('symbols/pub.p.16.png'); point-placement: interior; } - [amenity = 'biergarten'][zoom >= 16]::amenity { + [amenity = 'biergarten'][zoom >= 16] { point-file: url('symbols/biergarten.p.16.png'); point-placement: interior; } - [amenity = 'recycling'][zoom >= 16]::amenity { + [amenity = 'recycling'][zoom >= 16] { point-file: url('symbols/recycling.p.16.png'); point-placement: interior; } - [amenity = 'restaurant'][zoom >= 17]::amenity { + [amenity = 'restaurant'][zoom >= 17] { point-file: url('symbols/restaurant.p.16.png'); point-placement: interior; } - [amenity = 'fast_food'][zoom >= 17]::amenity { + [amenity = 'fast_food'][zoom >= 17] { point-file: url('symbols/fast_food.png'); point-placement: interior; } - [amenity = 'telephone'][zoom >= 17]::amenity { + [amenity = 'telephone'][zoom >= 17] { point-file: url('symbols/telephone.p.16.png'); point-placement: interior; } - [amenity = 'emergency_phone'][zoom >= 17]::amenity { + [amenity = 'emergency_phone'][zoom >= 17] { point-file: url('symbols/sosphone.png'); point-placement: interior; } - [amenity = 'theatre'][zoom >= 17]::amenity { + [amenity = 'theatre'][zoom >= 17] { point-file: url('symbols/theatre.p.20.png'); point-placement: interior; } - [amenity = 'toilets'][zoom >= 17]::amenity { + [amenity = 'toilets'][zoom >= 17] { point-file: url('symbols/toilets.p.20.png'); point-placement: interior; } - [amenity = 'drinking_water'][zoom >= 17]::amenity { + [amenity = 'drinking_water'][zoom >= 17] { point-file: url('symbols/food_drinkingtap.p.20.png'); point-placement: interior; } - [amenity = 'prison'][zoom >= 17]::amenity { + [amenity = 'prison'][zoom >= 17] { point-file: url('symbols/amenity_prison.p.20.png'); point-placement: interior; } - [tourism = 'viewpoint'][zoom >= 16]::tourism { + [tourism = 'viewpoint'][zoom >= 16] { point-file: url('symbols/view_point.p.16.png'); point-placement: interior; } - [man_made = 'water_tower'][zoom >= 17]::man_made { + [man_made = 'water_tower'][zoom >= 17] { point-file: url('symbols/tower_water.p.20.png'); point-placement: interior; } - [historic = 'memorial'][zoom >= 17]::historic { + [historic = 'memorial'][zoom >= 17] { point-file: url('symbols/tourist_memorial.p.20.png'); point-placement: interior; } - [historic = 'archaeological_site'][zoom >= 16]::historic { + [historic = 'archaeological_site'][zoom >= 16] { point-file: url('symbols/tourist_archaeological2.glow.24.png'); point-placement: interior; } - [shop != ''][zoom >= 17]::shop { + [shop != ''][zoom >= 17] { marker-file: url('symbols/shop.p.16.png'); marker-placement: interior; marker-clip: false; } - [shop = 'supermarket'][zoom >= 16]::shop { + [shop = 'supermarket'][zoom >= 16] { marker-file: url('symbols/shop_supermarket.svg'); marker-placement: interior; marker-clip: false; marker-fill: @shop-icon; } - [shop = 'bakery'][zoom >= 17]::shop { + [shop = 'bakery'][zoom >= 17] { marker-file: url('symbols/shop_bakery.p.16.png'); marker-placement: interior; marker-clip: false; } - [shop = 'butcher'][zoom >= 17]::shop { + [shop = 'butcher'][zoom >= 17] { marker-file: url('symbols/shop_butcher.png'); marker-placement: interior; marker-clip: false; } - [shop = 'clothes']::shop, - [shop = 'fashion']::shop { + [shop = 'clothes'], + [shop = 'fashion'] { [zoom >= 17] { marker-file: url('symbols/shop_clothes.svg'); marker-placement: interior; @@ -333,71 +333,71 @@ } } - [shop = 'convenience'][zoom >= 17]::shop { + [shop = 'convenience'][zoom >= 17] { marker-file: url('symbols/shop_convenience.svg'); marker-placement: interior; marker-clip: false; marker-fill: @shop-icon; } - [shop = 'department_store'][zoom >= 16]::shop { + [shop = 'department_store'][zoom >= 16] { point-file: url('symbols/department_store.p.16.png'); point-placement: interior; } - [shop = 'doityourself'][zoom >= 17]::shop { + [shop = 'doityourself'][zoom >= 17] { marker-file: url('symbols/shop_diy.p.16.png'); marker-placement: interior; marker-clip: false; } - [shop = 'florist'][zoom >= 17]::shop { + [shop = 'florist'][zoom >= 17] { marker-file: url('symbols/florist.p.16.png'); marker-placement: interior; marker-clip: false; } - [shop = 'hairdresser'][zoom >= 17]::shop { + [shop = 'hairdresser'][zoom >= 17] { marker-file: url('symbols/shop_hairdresser.p.16.png'); marker-placement: interior; marker-clip: false; } - [shop = 'car'][zoom >= 17]::shop { + [shop = 'car'][zoom >= 17] { marker-file: url('symbols/shop_car.svg'); marker-placement: interior; marker-clip: false; marker-fill: @shop-icon; } - [shop = 'car_repair'][zoom >= 17]::shop { + [shop = 'car_repair'][zoom >= 17] { marker-file: url('symbols/shopping_car_repair.p.16.png'); marker-placement: interior; marker-clip: false; } - [shop = 'bicycle'][zoom >= 17]::shop { + [shop = 'bicycle'][zoom >= 17] { marker-file: url('symbols/shopping_bicycle.p.16.png'); marker-placement: interior; marker-clip: false; } - [leisure = 'playground'][zoom >= 17]::leisure { + [leisure = 'playground'][zoom >= 17] { point-file: url('symbols/playground.p.20.png'); point-placement: interior; } - [tourism = 'picnic_site'][zoom >= 16]::tourism { + [tourism = 'picnic_site'][zoom >= 16] { point-file: url('symbols/picnic.p.16.png'); point-placement: interior; } - [leisure = 'picnic_table'][zoom >= 17]::leisure { + [leisure = 'picnic_table'][zoom >= 17] { point-file: url('symbols/picnic.p.16.png'); point-placement: interior; } - [leisure = 'slipway'][zoom >= 17]::leisure { + [leisure = 'slipway'][zoom >= 17] { point-file: url('symbols/transport_slipway.p.20.png'); point-placement: interior; } @@ -405,7 +405,7 @@ .text { - [place = 'island'][zoom >= 12]::place { + [place = 'island'][zoom >= 12] { text-name: "[name]"; text-fill: #000; text-size: 9; @@ -414,11 +414,11 @@ text-placement: interior; } - [amenity = 'pub']::amenity, - [amenity = 'restaurant']::amenity, - [amenity = 'cafe']::amenity, - [amenity = 'fast_food']::amenity, - [amenity = 'biergarten']::amenity { + [amenity = 'pub'], + [amenity = 'restaurant'], + [amenity = 'cafe'], + [amenity = 'fast_food'], + [amenity = 'biergarten'] { [zoom >= 17] { text-name: "[name]"; text-fill: #734a08; @@ -431,7 +431,7 @@ } } - [amenity = 'bar'][zoom >= 17]::amenity { + [amenity = 'bar'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #734a08; @@ -441,9 +441,9 @@ text-placement: interior; } - [amenity = 'library']::amenity, - [amenity = 'theatre']::amenity, - [amenity = 'courthouse']::amenity { + [amenity = 'library'], + [amenity = 'theatre'], + [amenity = 'courthouse'] { [zoom >= 17] { text-name: "[name]"; text-size: 10; @@ -455,7 +455,7 @@ } } - [amenity = 'cinema'][zoom >= 17]::amenity { + [amenity = 'cinema'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #734a08; @@ -465,7 +465,7 @@ text-placement: interior; } - [amenity = 'parking'][zoom >= 17]::amenity { + [amenity = 'parking'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: @transportation-text; @@ -479,7 +479,7 @@ } } - [amenity = 'police'][zoom >= 17]::amenity { + [amenity = 'police'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #734a08; @@ -490,7 +490,7 @@ text-placement: interior; } - [amenity = 'fire_station'][zoom >= 17]::amenity { + [amenity = 'fire_station'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #734a08; @@ -501,7 +501,7 @@ text-placement: interior; } - [amenity = 'place_of_worship'][zoom >= 17]::amenity { + [amenity = 'place_of_worship'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #000033; @@ -512,7 +512,7 @@ text-placement: interior; } - [natural = 'wood'][zoom >= 15]::natural { + [natural = 'wood'][zoom >= 15] { text-name: "[name]"; text-size: 10; text-fill: darken(@wood, 50%); @@ -522,8 +522,8 @@ text-placement: interior; } - [natural = 'peak']::natural, - [natural = 'volcano']::natural { + [natural = 'peak'], + [natural = 'volcano'] { [zoom >= 13] { text-name: "[name]"; text-size: 10; @@ -545,7 +545,7 @@ } } - [natural = 'cave_entrance'][zoom >= 15]::natural { + [natural = 'cave_entrance'][zoom >= 15] { text-name: "[name]"; text-size: 10; text-fill: brown; @@ -556,7 +556,7 @@ text-placement: interior; } - [historic = 'memorial'][zoom >= 17]::historic { + [historic = 'memorial'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: brown; @@ -567,7 +567,7 @@ text-placement: interior; } - [historic = 'archaeological_site'][zoom >= 17]::historic { + [historic = 'archaeological_site'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: brown; @@ -578,10 +578,10 @@ text-placement: interior; } - [natural = 'water']::natural, - [natural = 'lake']::natural, - [landuse = 'reservoir']::landuse, - [landuse = 'basin']::landuse { + [natural = 'water'], + [natural = 'lake'], + [landuse = 'reservoir'], + [landuse = 'basin'] { [way_area >= 40000000][zoom >= 10], [way_area >= 10000000][zoom >= 11], [way_area >= 2400000][zoom >= 12], @@ -600,7 +600,7 @@ } } - [leisure = 'swimming_pool']::leisure { + [leisure = 'swimming_pool'] { [zoom >= 17] { text-name: "[name]"; text-size: 9; @@ -612,10 +612,10 @@ } } - [leisure = 'sports_centre']::leisure, - [leisure = 'stadium']::leisure, - [leisure = 'track']::leisure, - [leisure = 'pitch']::leisure { + [leisure = 'sports_centre'], + [leisure = 'stadium'], + [leisure = 'track'], + [leisure = 'pitch'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -627,16 +627,16 @@ } } - [leisure = 'playground']::leisure, - [leisure = 'park']::leisure, - [leisure = 'recreation_ground']::leisure, - [landuse = 'recreation_ground']::landuse, - [landuse = 'conservation']::landuse, - [landuse = 'village_green']::landuse, - [leisure = 'common']::leisure, - [leisure = 'garden']::leisure, - [leisure = 'golf_course']::leisure, - [leisure = 'nature_reserve']::leisure { + [leisure = 'playground'], + [leisure = 'park'], + [leisure = 'recreation_ground'], + [landuse = 'recreation_ground'], + [landuse = 'conservation'], + [landuse = 'village_green'], + [leisure = 'common'], + [leisure = 'garden'], + [leisure = 'golf_course'], + [leisure = 'nature_reserve'] { [way_area >= 150000][zoom >= 14], [way_area >= 80000][zoom >= 15], [way_area >= 20000][zoom >= 16], @@ -652,7 +652,7 @@ } } - [landuse = 'quarry']::landuse { + [landuse = 'quarry'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -663,8 +663,8 @@ } } - [landuse = 'vineyard']::landuse, - [landuse = 'orchard']::landuse { + [landuse = 'vineyard'], + [landuse = 'orchard'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -676,8 +676,8 @@ } } - [landuse = 'cemetery']::landuse, - [landuse = 'grave_yard']::landuse { + [landuse = 'cemetery'], + [landuse = 'grave_yard'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -689,7 +689,7 @@ } } - [landuse = 'residential']::landuse { + [landuse = 'residential'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -700,7 +700,7 @@ } } - [landuse = 'garages']::landuse { + [landuse = 'garages'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -711,7 +711,7 @@ } } - [landuse = 'field']::landuse { + [landuse = 'field'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -722,8 +722,8 @@ } } - [landuse = 'meadow']::landuse, - [landuse = 'grass']::landuse { + [landuse = 'meadow'], + [landuse = 'grass'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -734,7 +734,7 @@ } } - [landuse = 'allotments']::landuse { + [landuse = 'allotments'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -745,7 +745,7 @@ } } - [landuse = 'forest']::landuse { + [landuse = 'forest'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -756,9 +756,9 @@ } } - [landuse = 'farm']::landuse, - [landuse = 'farmland']::landuse, - [landuse = 'farmyard']::landuse { + [landuse = 'farm'], + [landuse = 'farmland'], + [landuse = 'farmyard'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -769,7 +769,7 @@ } } - [landuse = 'retail']::landuse { + [landuse = 'retail'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -780,8 +780,8 @@ } } - [landuse = 'industrial']::landuse, - [landuse = 'railway']::landuse { + [landuse = 'industrial'], + [landuse = 'railway'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -792,7 +792,7 @@ } } - [landuse = 'commercial']::landuse { + [landuse = 'commercial'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -803,9 +803,9 @@ } } - [landuse = 'brownfield']::landuse, - [landuse = 'landfill']::landuse, - [landuse = 'construction']::landuse { + [landuse = 'brownfield'], + [landuse = 'landfill'], + [landuse = 'construction'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -816,7 +816,7 @@ } } - [natural = 'bay'][zoom >= 14]::natural { + [natural = 'bay'][zoom >= 14] { text-name: "[name]"; text-size: 10; text-fill: #6699cc; @@ -826,7 +826,7 @@ text-placement: interior; } - [natural = 'spring'][zoom >= 16]::natural { + [natural = 'spring'][zoom >= 16] { text-name: "[name]"; text-size: 10; text-fill: #6699cc; @@ -837,7 +837,7 @@ text-dy: 6; } - [tourism = 'alpine_hut'][zoom >= 15]::tourism { + [tourism = 'alpine_hut'][zoom >= 15] { text-name: "[name]"; text-size: 9; text-fill: #6699cc; @@ -856,7 +856,7 @@ } } - [amenity = 'shelter'][zoom >= 17]::amenity { + [amenity = 'shelter'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: #6699cc; @@ -873,7 +873,7 @@ ele/text-placement: interior; } - [amenity = 'bank'][zoom >= 17]::amenity { + [amenity = 'bank'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: black; @@ -883,10 +883,10 @@ text-face-name: @book-fonts; } - [tourism = 'hotel']::tourism, - [tourism = 'motel']::tourism, - [tourism = 'hostel']::tourism, - [tourism = 'chalet']::tourism { + [tourism = 'hotel'], + [tourism = 'motel'], + [tourism = 'hostel'], + [tourism = 'chalet'] { [zoom >= 17] { text-name: "[name]"; text-size: 10; @@ -898,7 +898,7 @@ } } - [amenity = 'embassy'][zoom >= 17]::amenity { + [amenity = 'embassy'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: #0066ff; @@ -908,7 +908,7 @@ text-placement: interior; } - [tourism = 'guest_house'][zoom >= 17]::tourism { + [tourism = 'guest_house'][zoom >= 17] { text-name: "[name]"; text-size: 8; text-fill: #0066ff; @@ -918,7 +918,7 @@ text-placement: interior; } - [tourism = 'bed_and_breakfast'][zoom >= 17]::tourism { + [tourism = 'bed_and_breakfast'][zoom >= 17] { text-name: "[name]"; text-size: 8; text-fill: #0066ff; @@ -928,8 +928,8 @@ text-placement: interior; } - [amenity = 'fuel']::amenity, - [amenity = 'bus_station']::amenity { + [amenity = 'fuel'], + [amenity = 'bus_station'] { [zoom >= 17] { text-name: "[name]"; text-size: 9; @@ -940,7 +940,7 @@ } } - [tourism = 'camp_site'][zoom >= 17]::tourism { + [tourism = 'camp_site'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #0066ff; @@ -950,7 +950,7 @@ text-wrap-width: 70; } - [tourism = 'caravan_site'][zoom >= 17]::tourism { + [tourism = 'caravan_site'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #0066ff; @@ -960,7 +960,7 @@ text-wrap-width: 70; } - [waterway = 'lock'][zoom >= 15]::waterway { + [waterway = 'lock'][zoom >= 15] { text-name: "[name]"; text-size: 9; text-dy: 10; @@ -970,7 +970,7 @@ text-wrap-width: 70; } - [leisure = 'marina'][zoom >= 15]::leisure { + [leisure = 'marina'][zoom >= 15] { text-name: "[name]"; text-size: 8; text-fill: @marina-text; @@ -983,7 +983,7 @@ } } - [tourism = 'theme_park'][zoom >= 14]::tourism { + [tourism = 'theme_park'][zoom >= 14] { text-name: "[name]"; text-size: 8; text-fill: #734a08; @@ -996,7 +996,7 @@ } } - [tourism = 'museum'][zoom >= 17]::tourism { + [tourism = 'museum'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-dy: 10; @@ -1006,7 +1006,7 @@ text-placement: interior; } - [amenity = 'prison'][zoom >= 17]::amenity { + [amenity = 'prison'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #734a08; @@ -1016,7 +1016,7 @@ text-placement: interior; } - [tourism = 'attraction'][zoom >= 16]::tourism { + [tourism = 'attraction'][zoom >= 16] { text-name: "[name]"; text-size: 10; text-fill: #660033; @@ -1026,7 +1026,7 @@ text-placement: interior; } - [amenity = 'university'][zoom >= 15]::amenity { + [amenity = 'university'][zoom >= 15] { text-name: "[name]"; text-size: 9; text-fill: #000033; @@ -1036,8 +1036,8 @@ text-placement: interior; } - [amenity = 'school']::amenity, - [amenity = 'college']::amenity { + [amenity = 'school'], + [amenity = 'college'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -1049,7 +1049,7 @@ } } - [amenity = 'kindergarten'][zoom >= 16]::amenity { + [amenity = 'kindergarten'][zoom >= 16] { text-name: "[name]"; text-size: 8; text-fill: #000033; @@ -1059,7 +1059,7 @@ text-placement: interior; } - [man_made = 'lighthouse'][zoom >= 15]::man_made { + [man_made = 'lighthouse'][zoom >= 15] { text-name: "[name]"; text-size: 9; text-fill: #000033; @@ -1070,7 +1070,7 @@ text-placement: interior; } - [man_made = 'windmill'][zoom >= 17]::man_made { + [man_made = 'windmill'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: #734a08; @@ -1081,7 +1081,7 @@ text-placement: interior; } - [amenity = 'hospital'][zoom >= 16]::amenity { + [amenity = 'hospital'][zoom >= 16] { text-name: "[name]"; text-fill: #da0092; text-size: 8; @@ -1092,7 +1092,7 @@ text-placement: interior; } - [amenity = 'pharmacy'][zoom >= 17]::amenity { + [amenity = 'pharmacy'][zoom >= 17] { text-name: "[name]"; text-size: 8; text-dy: 10; @@ -1104,7 +1104,7 @@ } /* Default shop text style */ - [shop != ''][zoom >= 17]::shop { + [shop != ''][zoom >= 17] { text-name: [name]; text-size: 9; text-dy: 10; @@ -1115,17 +1115,17 @@ text-placement: interior; } - [shop = 'bakery']::shop, - [shop = 'clothes']::shop, - [shop = 'fashion']::shop, - [shop = 'convenience']::shop, - [shop = 'doityourself']::shop, - [shop = 'hairdresser']::shop, - [shop = 'butcher']::shop, - [shop = 'car']::shop, - [shop = 'car_repair']::shop, - [shop = 'bicycle']::shop, - [shop = 'florist']::shop { + [shop = 'bakery'], + [shop = 'clothes'], + [shop = 'fashion'], + [shop = 'convenience'], + [shop = 'doityourself'], + [shop = 'hairdresser'], + [shop = 'butcher'], + [shop = 'car'], + [shop = 'car_repair'], + [shop = 'bicycle'], + [shop = 'florist'] { [zoom >= 17] { text-name: "[name]"; text-size: 8; @@ -1138,8 +1138,8 @@ } } - [shop = 'supermarket']::shop, - [shop = 'department_store']::shop { + [shop = 'supermarket'], + [shop = 'department_store'] { [zoom >= 16] { text-name: "[name]"; text-size: 9; @@ -1152,7 +1152,7 @@ } } - [military = 'danger_area'][zoom >= 12]::military { + [military = 'danger_area'][zoom >= 12] { text-name: "[name]"; text-size: 9; text-fill: @military-text; @@ -1162,7 +1162,7 @@ text-placement: interior; } - [landuse = 'military']::landuse { + [landuse = 'military'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -1174,7 +1174,7 @@ } } - [aeroway = 'gate'][zoom >= 17]::aeroway { + [aeroway = 'gate'][zoom >= 17] { text-name: "[ref]"; text-size: 10; text-fill: #aa66cc; diff --git a/project.mml b/project.mml index 86b279ac37..03cbfdf363 100644 --- a/project.mml +++ b/project.mml @@ -1266,7 +1266,7 @@ "name": "amenity-symbols-poly" }, { - "geometry": "point", + "geometry": "polygon", "extent": [ -179.99999692067183, -85.05112877980659, @@ -1275,21 +1275,21 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,amenity,shop,tourism,highway,man_made,access,religion,waterway,lock,historic,leisure\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", + "table": "(select way,amenity,shop,tourism,highway,man_made,access,religion,waterway,lock,historic,leisure\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", "dbname": "gis" }, - "id": "amenity-points", + "id": "amenity-points-poly", "class": "points", "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", "advanced": {}, - "name": "amenity-points" + "name": "amenity-points-poly" }, { - "geometry": "polygon", + "geometry": "point", "extent": [ -179.99999692067183, -85.05112877980659, @@ -1298,18 +1298,18 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,amenity,shop,tourism,highway,man_made,access,religion,waterway,lock,historic,leisure\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n ) as amenity_points_poly", + "table": "(select way,amenity,shop,tourism,highway,man_made,access,religion,waterway,lock,historic,leisure\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", "dbname": "gis" }, - "id": "amenity-points-poly", + "id": "amenity-points", "class": "points", "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", "advanced": {}, - "name": "amenity-points-poly" + "name": "amenity-points" }, { "geometry": "point", @@ -1496,7 +1496,7 @@ "name": "paths-text-name" }, { - "geometry": "point", + "geometry": "polygon", "extent": [ -179.99999692067183, -85.05112877980659, @@ -1505,21 +1505,21 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,amenity,shop,access,leisure,landuse,man_made,\"natural\",place,tourism,ele,name,ref,military,aeroway,waterway,historic,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", + "table": "(select way,aeroway,shop,access,amenity,leisure,landuse,man_made,\"natural\",place,tourism,NULL as ele,name,ref,military,waterway,historic,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", "dbname": "gis" }, - "id": "text", + "id": "text-poly", "class": "text", "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", "advanced": {}, - "name": "text" + "name": "text-poly" }, { - "geometry": "polygon", + "geometry": "point", "extent": [ -179.99999692067183, -85.05112877980659, @@ -1528,18 +1528,18 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,aeroway,shop,access,amenity,leisure,landuse,man_made,\"natural\",place,tourism,NULL as ele,name,ref,military,waterway,historic,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n ) as text_poly", + "table": " (select way,amenity,shop,access,leisure,landuse,man_made,\"natural\",place,tourism,ele,name,ref,military,aeroway,waterway,historic,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", "dbname": "gis" }, - "id": "text-poly", + "id": "text", "class": "text", "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", "advanced": {}, - "name": "text-poly" + "name": "text" }, { "geometry": "polygon", From 88ee671c5a628dbf3b639af4b7656ef7418bbeab Mon Sep 17 00:00:00 2001 From: math1985 Date: Thu, 7 Aug 2014 01:08:59 +0100 Subject: [PATCH 44/74] Prevent combinatorial explosion --- amenity-points.mss | 354 ++++++++++++++++++++++----------------------- project.mml | 8 +- 2 files changed, 181 insertions(+), 181 deletions(-) diff --git a/amenity-points.mss b/amenity-points.mss index 64c30eb0d4..bae6b9e6da 100644 --- a/amenity-points.mss +++ b/amenity-points.mss @@ -6,37 +6,37 @@ @transportation-text: #0066ff; .points { - [tourism = 'alpine_hut'][zoom >= 13] { + [feature = 'tourism_alpine_hut'][zoom >= 13] { point-file: url('symbols/alpinehut.p.16.png'); point-placement: interior; } - [amenity = 'shelter'][zoom >= 16] { + [feature = 'amenity_shelter'][zoom >= 16] { point-file: url('symbols/shelter2.p.16.png'); point-placement: interior; } - [amenity = 'atm'][zoom >=17] { + [feature = 'amenity_atm'][zoom >=17] { point-file: url('symbols/atm2.p.16.png'); point-placement: interior; } - [amenity = 'bank'][zoom >= 17] { + [feature = 'amenity_bank'][zoom >= 17] { point-file: url('symbols/bank2.p.16.png'); point-placement: interior; } - [amenity = 'bar'][zoom >=17] { + [feature = 'amenity_bar'][zoom >=17] { point-file: url('symbols/bar.p.20.png'); point-placement: interior; } - [amenity = 'bicycle_rental'][zoom >= 17] { + [feature = 'amenity_bicycle_rental'][zoom >= 17] { point-file: url('symbols/rental_bicycle.p.20.png'); point-placement: interior; } - [highway = 'bus_stop'] { + [feature = 'highway_bus_stop'] { [zoom >= 16] { point-file: url('symbols/bus_stop_small.png'); point-placement: interior; @@ -46,125 +46,125 @@ } } - [amenity = 'bus_station'][zoom >= 16] { + [feature = 'amenity_bus_station'][zoom >= 16] { point-file: url('symbols/bus_station.n.16.png'); point-placement: interior; } - [highway = 'traffic_signals'][zoom >= 17] { + [feature = 'highway_traffic_signals'][zoom >= 17] { point-file: url('symbols/traffic_light.png'); point-placement: interior; } - [amenity = 'cafe'][zoom >=17] { + [feature = 'amenity_cafe'][zoom >=17] { point-file: url('symbols/cafe.p.16.png'); point-placement: interior; } - [tourism = 'camp_site'][zoom >= 16] { + [feature = 'tourism_camp_site'][zoom >= 16] { point-file: url('symbols/camping.n.16.png'); point-placement: interior; } - [highway = 'ford'][zoom >= 16] { + [feature = 'highway_ford'][zoom >= 16] { point-file: url('symbols/transport_ford.p.16.png'); point-placement: interior; } - [tourism = 'caravan_site'][zoom >= 16] { + [feature = 'tourism_caravan_site'][zoom >= 16] { point-file: url('symbols/caravan_park.p.24.png'); point-placement: interior; } - [amenity = 'car_sharing'][zoom >= 16] { + [feature = 'amenity_car_sharing'][zoom >= 16] { point-file: url('symbols/car_share.p.16.png'); point-placement: interior; } - [tourism = 'chalet'][zoom >= 17] { + [feature = 'tourism_chalet'][zoom >= 17] { point-file: url('symbols/chalet.p.16.png'); point-placement: interior; } - [amenity = 'cinema'][zoom >= 17] { + [feature = 'amenity_cinema'][zoom >= 17] { point-file: url('symbols/cinema.p.24.png'); point-placement: interior; } - [amenity = 'fire_station'][zoom >= 17] { + [feature = 'amenity_fire_station'][zoom >= 17] { point-file: url('symbols/firestation.p.16.png'); point-placement: interior; } - [amenity = 'fuel'][zoom >= 17] { + [feature = 'amenity_fuel'][zoom >= 17] { point-file: url('symbols/fuel.p.16.png'); point-placement: interior; } - [tourism = 'guest_house'][zoom >= 17] { + [feature = 'tourism_guest_house'][zoom >= 17] { point-file: url('symbols/guest_house.p.16.png'); point-placement: interior; } - [amenity = 'hospital'][zoom >= 15] { + [feature = 'amenity_hospital'][zoom >= 15] { point-file: url('symbols/hospital.p.16.png'); point-placement: interior; } - [tourism = 'hostel'][zoom >= 17] { + [feature = 'tourism_hostel'][zoom >= 17] { point-file: url('symbols/hostel.p.20.png'); point-placement: interior; } - [tourism = 'hotel'][zoom >= 17] { + [feature = 'tourism_hotel'][zoom >= 17] { point-file: url('symbols/hotel2.p.20.png'); point-placement: interior; } - [tourism = 'motel'][zoom >= 17] { + [feature = 'tourism_motel'][zoom >= 17] { point-file: url('symbols/motel.p.20.png'); point-placement: interior; } - [tourism = 'information'][zoom >= 16] { + [feature = 'tourism_information'][zoom >= 16] { point-file: url('symbols/information.p.16.png'); point-placement: interior; } - [amenity = 'embassy'][zoom >= 17] { + [feature = 'amenity_embassy'][zoom >= 17] { point-file: url('symbols/embassy.png'); point-placement: interior; } - [amenity = 'library'][zoom >= 17] { + [feature = 'amenity_library'][zoom >= 17] { point-file: url('symbols/library.p.20.png'); point-placement: interior; } - [amenity = 'courthouse'][zoom > 17] { + [feature = 'amenity_courthouse'][zoom > 17] { point-file: url('symbols/amenity_court.p.20.png'); point-placement: interior; } - [waterway = 'lock'], - [lock = 'yes'] { + [feature = 'waterway_lock'], + [feature = 'lock_yes'] { [zoom >= 15] { point-file: url('symbols/lock_gate.png'); point-placement: interior; } } - [man_made = 'mast'][zoom >= 17] { + [feature = 'man_made_mast'][zoom >= 17] { point-file: url('symbols/communications.p.20.png'); point-placement: interior; } - [tourism = 'museum'][zoom >= 17] { + [feature = 'tourism_museum'][zoom >= 17] { point-file: url('symbols/museum.p.16.png'); point-placement: interior; } - [amenity = 'parking'][zoom >= 15] { + [feature = 'amenity_parking'][zoom >= 15] { marker-file: url('symbols/parking.svg'); marker-placement: interior; marker-clip: false; @@ -174,12 +174,12 @@ } } - [amenity = 'pharmacy'][zoom >= 17] { + [feature = 'amenity_pharmacy'][zoom >= 17] { point-file: url('symbols/pharmacy.p.16.png'); point-placement: interior; } - [amenity = 'place_of_worship'][zoom >= 16] { + [feature = 'amenity_place_of_worship'][zoom >= 16] { point-file: url('symbols/place_of_worship3.p.16.png'); point-placement: interior; [religion = 'christian'] { @@ -208,92 +208,92 @@ } } - [amenity = 'police'][zoom >= 17] { + [feature = 'amenity_police'][zoom >= 17] { point-file: url('symbols/police.p.16.png'); point-placement: interior; } - [amenity = 'post_box'][zoom >= 17] { + [feature = 'amenity_post_box'][zoom >= 17] { point-file: url('symbols/post_box.p.16.png'); point-placement: interior; } - [amenity = 'post_office'][zoom >= 17] { + [feature = 'amenity_post_office'][zoom >= 17] { point-file: url('symbols/post_office.p.16.png'); point-placement: interior; } - [amenity = 'pub'][zoom >= 16] { + [feature = 'amenity_pub'][zoom >= 16] { point-file: url('symbols/pub.p.16.png'); point-placement: interior; } - [amenity = 'biergarten'][zoom >= 16] { + [feature = 'amenity_biergarten'][zoom >= 16] { point-file: url('symbols/biergarten.p.16.png'); point-placement: interior; } - [amenity = 'recycling'][zoom >= 16] { + [feature = 'amenity_recycling'][zoom >= 16] { point-file: url('symbols/recycling.p.16.png'); point-placement: interior; } - [amenity = 'restaurant'][zoom >= 17] { + [feature = 'amenity_restaurant'][zoom >= 17] { point-file: url('symbols/restaurant.p.16.png'); point-placement: interior; } - [amenity = 'fast_food'][zoom >= 17] { + [feature = 'amenity_fast_food'][zoom >= 17] { point-file: url('symbols/fast_food.png'); point-placement: interior; } - [amenity = 'telephone'][zoom >= 17] { + [feature = 'amenity_telephone'][zoom >= 17] { point-file: url('symbols/telephone.p.16.png'); point-placement: interior; } - [amenity = 'emergency_phone'][zoom >= 17] { + [feature = 'amenity_emergency_phone'][zoom >= 17] { point-file: url('symbols/sosphone.png'); point-placement: interior; } - [amenity = 'theatre'][zoom >= 17] { + [feature = 'amenity_theatre'][zoom >= 17] { point-file: url('symbols/theatre.p.20.png'); point-placement: interior; } - [amenity = 'toilets'][zoom >= 17] { + [feature = 'amenity_toilets'][zoom >= 17] { point-file: url('symbols/toilets.p.20.png'); point-placement: interior; } - [amenity = 'drinking_water'][zoom >= 17] { + [feature = 'amenity_drinking_water'][zoom >= 17] { point-file: url('symbols/food_drinkingtap.p.20.png'); point-placement: interior; } - [amenity = 'prison'][zoom >= 17] { + [feature = 'amenity_prison'][zoom >= 17] { point-file: url('symbols/amenity_prison.p.20.png'); point-placement: interior; } - [tourism = 'viewpoint'][zoom >= 16] { + [feature = 'tourism_viewpoint'][zoom >= 16] { point-file: url('symbols/view_point.p.16.png'); point-placement: interior; } - [man_made = 'water_tower'][zoom >= 17] { + [feature = 'man_made_water_tower'][zoom >= 17] { point-file: url('symbols/tower_water.p.20.png'); point-placement: interior; } - [historic = 'memorial'][zoom >= 17] { + [feature = 'historic_memorial'][zoom >= 17] { point-file: url('symbols/tourist_memorial.p.20.png'); point-placement: interior; } - [historic = 'archaeological_site'][zoom >= 16] { + [feature = 'historic_archaeological_site'][zoom >= 16] { point-file: url('symbols/tourist_archaeological2.glow.24.png'); point-placement: interior; } @@ -304,27 +304,27 @@ marker-clip: false; } - [shop = 'supermarket'][zoom >= 16] { + [feature = 'shop_supermarket'][zoom >= 16] { marker-file: url('symbols/shop_supermarket.svg'); marker-placement: interior; marker-clip: false; marker-fill: @shop-icon; } - [shop = 'bakery'][zoom >= 17] { + [feature = 'shop_bakery'][zoom >= 17] { marker-file: url('symbols/shop_bakery.p.16.png'); marker-placement: interior; marker-clip: false; } - [shop = 'butcher'][zoom >= 17] { + [feature = 'shop_butcher'][zoom >= 17] { marker-file: url('symbols/shop_butcher.png'); marker-placement: interior; marker-clip: false; } - [shop = 'clothes'], - [shop = 'fashion'] { + [feature = 'shop_clothes'], + [feature = 'shop_fashion'] { [zoom >= 17] { marker-file: url('symbols/shop_clothes.svg'); marker-placement: interior; @@ -333,71 +333,71 @@ } } - [shop = 'convenience'][zoom >= 17] { + [feature = 'shop_convenience'][zoom >= 17] { marker-file: url('symbols/shop_convenience.svg'); marker-placement: interior; marker-clip: false; marker-fill: @shop-icon; } - [shop = 'department_store'][zoom >= 16] { + [feature = 'shop_department_store'][zoom >= 16] { point-file: url('symbols/department_store.p.16.png'); point-placement: interior; } - [shop = 'doityourself'][zoom >= 17] { + [feature = 'shop_doityourself'][zoom >= 17] { marker-file: url('symbols/shop_diy.p.16.png'); marker-placement: interior; marker-clip: false; } - [shop = 'florist'][zoom >= 17] { + [feature = 'shop_florist'][zoom >= 17] { marker-file: url('symbols/florist.p.16.png'); marker-placement: interior; marker-clip: false; } - [shop = 'hairdresser'][zoom >= 17] { + [feature = 'shop_hairdresser'][zoom >= 17] { marker-file: url('symbols/shop_hairdresser.p.16.png'); marker-placement: interior; marker-clip: false; } - [shop = 'car'][zoom >= 17] { + [feature = 'shop_car'][zoom >= 17] { marker-file: url('symbols/shop_car.svg'); marker-placement: interior; marker-clip: false; marker-fill: @shop-icon; } - [shop = 'car_repair'][zoom >= 17] { + [feature = 'shop_car_repair'][zoom >= 17] { marker-file: url('symbols/shopping_car_repair.p.16.png'); marker-placement: interior; marker-clip: false; } - [shop = 'bicycle'][zoom >= 17] { + [feature = 'shop_bicycle'][zoom >= 17] { marker-file: url('symbols/shopping_bicycle.p.16.png'); marker-placement: interior; marker-clip: false; } - [leisure = 'playground'][zoom >= 17] { + [feature = 'leisure_playground'][zoom >= 17] { point-file: url('symbols/playground.p.20.png'); point-placement: interior; } - [tourism = 'picnic_site'][zoom >= 16] { + [feature = 'tourism_picnic_site'][zoom >= 16] { point-file: url('symbols/picnic.p.16.png'); point-placement: interior; } - [leisure = 'picnic_table'][zoom >= 17] { + [feature = 'leisure_picnic_table'][zoom >= 17] { point-file: url('symbols/picnic.p.16.png'); point-placement: interior; } - [leisure = 'slipway'][zoom >= 17] { + [feature = 'leisure_slipway'][zoom >= 17] { point-file: url('symbols/transport_slipway.p.20.png'); point-placement: interior; } @@ -405,7 +405,7 @@ .text { - [place = 'island'][zoom >= 12] { + [feature = 'place_island'][zoom >= 12] { text-name: "[name]"; text-fill: #000; text-size: 9; @@ -414,11 +414,11 @@ text-placement: interior; } - [amenity = 'pub'], - [amenity = 'restaurant'], - [amenity = 'cafe'], - [amenity = 'fast_food'], - [amenity = 'biergarten'] { + [feature = 'amenity_pub'], + [feature = 'amenity_restaurant'], + [feature = 'amenity_cafe'], + [feature = 'amenity_fast_food'], + [feature = 'amenity_biergarten'] { [zoom >= 17] { text-name: "[name]"; text-fill: #734a08; @@ -431,7 +431,7 @@ } } - [amenity = 'bar'][zoom >= 17] { + [feature = 'amenity_bar'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #734a08; @@ -441,9 +441,9 @@ text-placement: interior; } - [amenity = 'library'], - [amenity = 'theatre'], - [amenity = 'courthouse'] { + [feature = 'amenity_library'], + [feature = 'amenity_theatre'], + [feature = 'amenity_courthouse'] { [zoom >= 17] { text-name: "[name]"; text-size: 10; @@ -455,7 +455,7 @@ } } - [amenity = 'cinema'][zoom >= 17] { + [feature = 'amenity_cinema'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #734a08; @@ -465,7 +465,7 @@ text-placement: interior; } - [amenity = 'parking'][zoom >= 17] { + [feature = 'amenity_parking'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: @transportation-text; @@ -479,7 +479,7 @@ } } - [amenity = 'police'][zoom >= 17] { + [feature = 'amenity_police'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #734a08; @@ -490,7 +490,7 @@ text-placement: interior; } - [amenity = 'fire_station'][zoom >= 17] { + [feature = 'amenity_fire_station'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #734a08; @@ -501,7 +501,7 @@ text-placement: interior; } - [amenity = 'place_of_worship'][zoom >= 17] { + [feature = 'amenity_place_of_worship'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #000033; @@ -512,7 +512,7 @@ text-placement: interior; } - [natural = 'wood'][zoom >= 15] { + [feature = 'natural_wood'][zoom >= 15] { text-name: "[name]"; text-size: 10; text-fill: darken(@wood, 50%); @@ -522,8 +522,8 @@ text-placement: interior; } - [natural = 'peak'], - [natural = 'volcano'] { + [feature = 'natural_peak'], + [feature = 'natural_volcano'] { [zoom >= 13] { text-name: "[name]"; text-size: 10; @@ -545,7 +545,7 @@ } } - [natural = 'cave_entrance'][zoom >= 15] { + [feature = 'natural_cave_entrance'][zoom >= 15] { text-name: "[name]"; text-size: 10; text-fill: brown; @@ -556,7 +556,7 @@ text-placement: interior; } - [historic = 'memorial'][zoom >= 17] { + [feature = 'historic_memorial'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: brown; @@ -567,7 +567,7 @@ text-placement: interior; } - [historic = 'archaeological_site'][zoom >= 17] { + [feature = 'historic_archaeological_site'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: brown; @@ -578,10 +578,10 @@ text-placement: interior; } - [natural = 'water'], - [natural = 'lake'], - [landuse = 'reservoir'], - [landuse = 'basin'] { + [feature = 'natural_water'], + [feature = 'natural_lake'], + [feature = 'landuse_reservoir'], + [feature = 'landuse_basin'] { [way_area >= 40000000][zoom >= 10], [way_area >= 10000000][zoom >= 11], [way_area >= 2400000][zoom >= 12], @@ -600,7 +600,7 @@ } } - [leisure = 'swimming_pool'] { + [feature = 'leisure_swimming_pool'] { [zoom >= 17] { text-name: "[name]"; text-size: 9; @@ -612,10 +612,10 @@ } } - [leisure = 'sports_centre'], - [leisure = 'stadium'], - [leisure = 'track'], - [leisure = 'pitch'] { + [feature = 'leisure_sports_centre'], + [feature = 'leisure_stadium'], + [feature = 'leisure_track'], + [feature = 'leisure_pitch'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -627,16 +627,16 @@ } } - [leisure = 'playground'], - [leisure = 'park'], - [leisure = 'recreation_ground'], - [landuse = 'recreation_ground'], - [landuse = 'conservation'], - [landuse = 'village_green'], - [leisure = 'common'], - [leisure = 'garden'], - [leisure = 'golf_course'], - [leisure = 'nature_reserve'] { + [feature = 'leisure_playground'], + [feature = 'leisure_park'], + [feature = 'leisure_recreation_ground'], + [feature = 'landuse_recreation_ground'], + [feature = 'landuse_conservation'], + [feature = 'landuse_village_green'], + [feature = 'leisure_common'], + [feature = 'leisure_garden'], + [feature = 'leisure_golf_course'], + [feature = 'leisure_nature_reserve'] { [way_area >= 150000][zoom >= 14], [way_area >= 80000][zoom >= 15], [way_area >= 20000][zoom >= 16], @@ -652,7 +652,7 @@ } } - [landuse = 'quarry'] { + [feature = 'landuse_quarry'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -663,8 +663,8 @@ } } - [landuse = 'vineyard'], - [landuse = 'orchard'] { + [feature = 'landuse_vineyard'], + [feature = 'landuse_orchard'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -676,8 +676,8 @@ } } - [landuse = 'cemetery'], - [landuse = 'grave_yard'] { + [feature = 'landuse_cemetery'], + [feature = 'landuse_grave_yard'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -689,7 +689,7 @@ } } - [landuse = 'residential'] { + [feature = 'landuse_residential'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -700,7 +700,7 @@ } } - [landuse = 'garages'] { + [feature = 'landuse_garages'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -711,7 +711,7 @@ } } - [landuse = 'field'] { + [feature = 'landuse_field'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -722,8 +722,8 @@ } } - [landuse = 'meadow'], - [landuse = 'grass'] { + [feature = 'landuse_meadow'], + [feature = 'landuse_grass'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -734,7 +734,7 @@ } } - [landuse = 'allotments'] { + [feature = 'landuse_allotments'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -745,7 +745,7 @@ } } - [landuse = 'forest'] { + [feature = 'landuse_forest'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -756,9 +756,9 @@ } } - [landuse = 'farm'], - [landuse = 'farmland'], - [landuse = 'farmyard'] { + [feature = 'landuse_farm'], + [feature = 'landuse_farmland'], + [feature = 'landuse_farmyard'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -769,7 +769,7 @@ } } - [landuse = 'retail'] { + [feature = 'landuse_retail'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -780,8 +780,8 @@ } } - [landuse = 'industrial'], - [landuse = 'railway'] { + [feature = 'landuse_industrial'], + [feature = 'landuse_railway'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -792,7 +792,7 @@ } } - [landuse = 'commercial'] { + [feature = 'landuse_commercial'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -803,9 +803,9 @@ } } - [landuse = 'brownfield'], - [landuse = 'landfill'], - [landuse = 'construction'] { + [feature = 'landuse_brownfield'], + [feature = 'landuse_landfill'], + [feature = 'landuse_construction'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -816,7 +816,7 @@ } } - [natural = 'bay'][zoom >= 14] { + [feature = 'natural_bay'][zoom >= 14] { text-name: "[name]"; text-size: 10; text-fill: #6699cc; @@ -826,7 +826,7 @@ text-placement: interior; } - [natural = 'spring'][zoom >= 16] { + [feature = 'natural_spring'][zoom >= 16] { text-name: "[name]"; text-size: 10; text-fill: #6699cc; @@ -837,7 +837,7 @@ text-dy: 6; } - [tourism = 'alpine_hut'][zoom >= 15] { + [feature = 'tourism_alpine_hut'][zoom >= 15] { text-name: "[name]"; text-size: 9; text-fill: #6699cc; @@ -856,7 +856,7 @@ } } - [amenity = 'shelter'][zoom >= 17] { + [feature = 'amenity_shelter'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: #6699cc; @@ -873,7 +873,7 @@ ele/text-placement: interior; } - [amenity = 'bank'][zoom >= 17] { + [feature = 'amenity_bank'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: black; @@ -883,10 +883,10 @@ text-face-name: @book-fonts; } - [tourism = 'hotel'], - [tourism = 'motel'], - [tourism = 'hostel'], - [tourism = 'chalet'] { + [feature = 'tourism_hotel'], + [feature = 'tourism_motel'], + [feature = 'tourism_hostel'], + [feature = 'tourism_chalet'] { [zoom >= 17] { text-name: "[name]"; text-size: 10; @@ -898,7 +898,7 @@ } } - [amenity = 'embassy'][zoom >= 17] { + [feature = 'amenity_embassy'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: #0066ff; @@ -908,7 +908,7 @@ text-placement: interior; } - [tourism = 'guest_house'][zoom >= 17] { + [feature = 'tourism_guest_house'][zoom >= 17] { text-name: "[name]"; text-size: 8; text-fill: #0066ff; @@ -918,7 +918,7 @@ text-placement: interior; } - [tourism = 'bed_and_breakfast'][zoom >= 17] { + [feature = 'tourism_bed_and_breakfast'][zoom >= 17] { text-name: "[name]"; text-size: 8; text-fill: #0066ff; @@ -928,8 +928,8 @@ text-placement: interior; } - [amenity = 'fuel'], - [amenity = 'bus_station'] { + [feature = 'amenity_fuel'], + [feature = 'amenity_bus_station'] { [zoom >= 17] { text-name: "[name]"; text-size: 9; @@ -940,7 +940,7 @@ } } - [tourism = 'camp_site'][zoom >= 17] { + [feature = 'tourism_camp_site'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #0066ff; @@ -950,7 +950,7 @@ text-wrap-width: 70; } - [tourism = 'caravan_site'][zoom >= 17] { + [feature = 'tourism_caravan_site'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #0066ff; @@ -960,7 +960,7 @@ text-wrap-width: 70; } - [waterway = 'lock'][zoom >= 15] { + [feature = 'waterway_lock'][zoom >= 15] { text-name: "[name]"; text-size: 9; text-dy: 10; @@ -970,7 +970,7 @@ text-wrap-width: 70; } - [leisure = 'marina'][zoom >= 15] { + [feature = 'leisure_marina'][zoom >= 15] { text-name: "[name]"; text-size: 8; text-fill: @marina-text; @@ -983,7 +983,7 @@ } } - [tourism = 'theme_park'][zoom >= 14] { + [feature = 'tourism_theme_park'][zoom >= 14] { text-name: "[name]"; text-size: 8; text-fill: #734a08; @@ -996,7 +996,7 @@ } } - [tourism = 'museum'][zoom >= 17] { + [feature = 'tourism_museum'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-dy: 10; @@ -1006,7 +1006,7 @@ text-placement: interior; } - [amenity = 'prison'][zoom >= 17] { + [feature = 'amenity_prison'][zoom >= 17] { text-name: "[name]"; text-size: 10; text-fill: #734a08; @@ -1016,7 +1016,7 @@ text-placement: interior; } - [tourism = 'attraction'][zoom >= 16] { + [feature = 'tourism_attraction'][zoom >= 16] { text-name: "[name]"; text-size: 10; text-fill: #660033; @@ -1026,7 +1026,7 @@ text-placement: interior; } - [amenity = 'university'][zoom >= 15] { + [feature = 'amenity_university'][zoom >= 15] { text-name: "[name]"; text-size: 9; text-fill: #000033; @@ -1036,8 +1036,8 @@ text-placement: interior; } - [amenity = 'school'], - [amenity = 'college'] { + [feature = 'amenity_school'], + [feature = 'amenity_college'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -1049,7 +1049,7 @@ } } - [amenity = 'kindergarten'][zoom >= 16] { + [feature = 'amenity_kindergarten'][zoom >= 16] { text-name: "[name]"; text-size: 8; text-fill: #000033; @@ -1059,7 +1059,7 @@ text-placement: interior; } - [man_made = 'lighthouse'][zoom >= 15] { + [feature = 'man_made_lighthouse'][zoom >= 15] { text-name: "[name]"; text-size: 9; text-fill: #000033; @@ -1070,7 +1070,7 @@ text-placement: interior; } - [man_made = 'windmill'][zoom >= 17] { + [feature = 'man_made_windmill'][zoom >= 17] { text-name: "[name]"; text-size: 9; text-fill: #734a08; @@ -1081,7 +1081,7 @@ text-placement: interior; } - [amenity = 'hospital'][zoom >= 16] { + [feature = 'amenity_hospital'][zoom >= 16] { text-name: "[name]"; text-fill: #da0092; text-size: 8; @@ -1092,7 +1092,7 @@ text-placement: interior; } - [amenity = 'pharmacy'][zoom >= 17] { + [feature = 'amenity_pharmacy'][zoom >= 17] { text-name: "[name]"; text-size: 8; text-dy: 10; @@ -1115,17 +1115,17 @@ text-placement: interior; } - [shop = 'bakery'], - [shop = 'clothes'], - [shop = 'fashion'], - [shop = 'convenience'], - [shop = 'doityourself'], - [shop = 'hairdresser'], - [shop = 'butcher'], - [shop = 'car'], - [shop = 'car_repair'], - [shop = 'bicycle'], - [shop = 'florist'] { + [feature = 'shop_bakery'], + [feature = 'shop_clothes'], + [feature = 'shop_fashion'], + [feature = 'shop_convenience'], + [feature = 'shop_doityourself'], + [feature = 'shop_hairdresser'], + [feature = 'shop_butcher'], + [feature = 'shop_car'], + [feature = 'shop_car_repair'], + [feature = 'shop_bicycle'], + [feature = 'shop_florist'] { [zoom >= 17] { text-name: "[name]"; text-size: 8; @@ -1138,8 +1138,8 @@ } } - [shop = 'supermarket'], - [shop = 'department_store'] { + [feature = 'shop_supermarket'], + [feature = 'shop_department_store'] { [zoom >= 16] { text-name: "[name]"; text-size: 9; @@ -1152,7 +1152,7 @@ } } - [military = 'danger_area'][zoom >= 12] { + [feature = 'military_danger_area'][zoom >= 12] { text-name: "[name]"; text-size: 9; text-fill: @military-text; @@ -1162,7 +1162,7 @@ text-placement: interior; } - [landuse = 'military'] { + [feature = 'landuse_military'] { [zoom >= 15] { text-name: "[name]"; text-size: 9; @@ -1174,7 +1174,7 @@ } } - [aeroway = 'gate'][zoom >= 17] { + [feature = 'aeroway_gate'][zoom >= 17] { text-name: "[ref]"; text-size: 10; text-fill: #aa66cc; diff --git a/project.mml b/project.mml index 03cbfdf363..0b13efeec1 100644 --- a/project.mml +++ b/project.mml @@ -1275,7 +1275,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,amenity,shop,tourism,highway,man_made,access,religion,waterway,lock,historic,leisure\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly", + "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || natural, 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock) as feature,shop,access,religion,waterway,lock,historic,leisure\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -1298,7 +1298,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,amenity,shop,tourism,highway,man_made,access,religion,waterway,lock,historic,leisure\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", + "table": "(select way,,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || natural, 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock),shop,access\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -1505,7 +1505,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,aeroway,shop,access,amenity,leisure,landuse,man_made,\"natural\",place,tourism,NULL as ele,name,ref,military,waterway,historic,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly", + "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || natural, 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic) as feature,shop,access,NULL as ele,name,ref,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -1528,7 +1528,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,amenity,shop,access,leisure,landuse,man_made,\"natural\",place,tourism,ele,name,ref,military,aeroway,waterway,historic,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", + "table": " (select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || natural, 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic) as feature,shop,access,ele,name,ref,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", From b3557688afb663fe07bd3b07f860a8de894231d7 Mon Sep 17 00:00:00 2001 From: math1985 Date: Wed, 27 Aug 2014 23:30:53 +0100 Subject: [PATCH 45/74] Various corrections to 'Order POI by way_area' PR --- project.mml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/project.mml b/project.mml index 0b13efeec1..bcd4ea79c1 100644 --- a/project.mml +++ b/project.mml @@ -1275,7 +1275,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || natural, 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock) as feature,shop,access,religion,waterway,lock,historic,leisure\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly", + "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,shop,access,religion\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -1298,7 +1298,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || natural, 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock),shop,access\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", + "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,shop,access,religion\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -1505,7 +1505,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || natural, 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic) as feature,shop,access,NULL as ele,name,ref,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly", + "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,shop,access,NULL as ele,name,ref,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -1528,7 +1528,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || natural, 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic) as feature,shop,access,ele,name,ref,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", + "table": " (select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,shop,access,ele,name,ref,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", From ca80283aeb463e6930f3241881c34fd2d5761a05 Mon Sep 17 00:00:00 2001 From: math1985 Date: Thu, 28 Aug 2014 01:56:33 +0100 Subject: [PATCH 46/74] Solve combinatorial explosion caused by shop != '' --- amenity-points.mss | 4 ++-- project.mml | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/amenity-points.mss b/amenity-points.mss index bae6b9e6da..e3b92dbf1f 100644 --- a/amenity-points.mss +++ b/amenity-points.mss @@ -298,7 +298,7 @@ point-placement: interior; } - [shop != ''][zoom >= 17] { + [feature = 'shop_other'][zoom >= 17] { marker-file: url('symbols/shop.p.16.png'); marker-placement: interior; marker-clip: false; @@ -1104,7 +1104,7 @@ } /* Default shop text style */ - [shop != ''][zoom >= 17] { + [feature = 'shop_other'][zoom >= 17] { text-name: [name]; text-size: 9; text-dy: 10; diff --git a/project.mml b/project.mml index bcd4ea79c1..5255e1c4b7 100644 --- a/project.mml +++ b/project.mml @@ -1275,7 +1275,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,shop,access,religion\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly", + "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -1298,7 +1298,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,shop,access,religion\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", + "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -1505,7 +1505,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,shop,access,NULL as ele,name,ref,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly", + "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -1528,7 +1528,7 @@ ], "Datasource": { "type": "postgis", - "table": " (select way,coalesce('aeroway_' || aeroway, 'shop_' || shop, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,shop,access,ele,name,ref,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", + "table": " (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", From bf29d2772c237c8c2ffccb0894765fe97bf07d30 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Wed, 27 Aug 2014 19:56:14 -0700 Subject: [PATCH 47/74] Do a linecount on the output XML This should help catch combinatorial explosions --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index cba217e219..0596b902a0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,4 +19,4 @@ install: - touch data/land-polygons-split-3857/land_polygons.shp script: - jsonlint project.mml - - ./node_modules/carto/bin/carto project.mml | xmllint --noout - + - ./node_modules/carto/bin/carto project.mml | xmllint - | wc -l From c967068f0f903d3e4fa18ca0810670b2325de342 Mon Sep 17 00:00:00 2001 From: Eric Theise Date: Thu, 4 Sep 2014 13:57:47 -0700 Subject: [PATCH 48/74] switch extract link from metro.teczno to mapzen Mapzen's taken over the generation of weekly metro extracts from Mike Migurski. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0d9a0b4236..b2ebeca933 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ are updated from each point release. They supersede the previous [XML-based styl You need OpenStreetMap data loaded into a PostGIS database (see below for [dependencies](https://github.com/gravitystorm/openstreetmap-carto#dependencies)). These stylesheets currently work only with the osm2pgsql defaults (i.e. database name is ``gis``, table names are ``planet_osm_point``, etc). -It's probably easiest to grab an PBF of OSM data from [metro.teczno.com](http://metro.teczno.com/) or [geofabrik](http://download.geofabrik.de/). Once you've set up your PostGIS database, import with osm2pgsql: +It's probably easiest to grab an PBF of OSM data from [Mapzen](https://mapzen.com/metro-extracts/) or [geofabrik](http://download.geofabrik.de/). Once you've set up your PostGIS database, import with osm2pgsql: ``` osm2pgsql -d gis ~/path/to/data.osm.pbf --style openstreetmap-carto.style From 033379c0d4bd0da79812bf61294fe852beec2ccb Mon Sep 17 00:00:00 2001 From: Eric Theise Date: Thu, 4 Sep 2014 16:14:05 -0700 Subject: [PATCH 49/74] fix path: "opentreetmap" -> "openstreetmap" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0d9a0b4236..e9885e363d 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ You can also download them manually at the following paths: * `ne_110m_admin_0_boundary_lines_land.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip) * `ne_10m_populated_places_fixed.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip) (and see below) -Put these shapefiles at path/to/opentreetmap-carto/data +Put these shapefiles at path/to/openstreetmap-carto/data ### Populated places shapefile From 882f63de48914431446f2891e10a6b74f3a630e8 Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Fri, 5 Sep 2014 15:33:09 +0100 Subject: [PATCH 50/74] Add missing `text-placement: interior` attributes Fixes #925 --- amenity-points.mss | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/amenity-points.mss b/amenity-points.mss index 6eb646ee5e..1cbfbfd247 100644 --- a/amenity-points.mss +++ b/amenity-points.mss @@ -660,6 +660,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 10; + text-placement: interior; } } @@ -673,6 +674,7 @@ // extra halo needed to overpower the cemetery polygon pattern text-halo-radius: 1.5; text-wrap-width: 10; + text-placement: interior; } } @@ -686,6 +688,7 @@ // extra halo needed to overpower the cemetery polygon pattern text-halo-radius: 1.5; text-wrap-width: 10; + text-placement: interior; } } @@ -697,6 +700,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 10; + text-placement: interior; } } @@ -708,6 +712,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 10; + text-placement: interior; } } @@ -719,6 +724,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 10; + text-placement: interior; } } @@ -731,6 +737,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 10; + text-placement: interior; } } @@ -742,6 +749,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 10; + text-placement: interior; } } @@ -753,6 +761,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 10; + text-placement: interior; } } @@ -766,6 +775,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 10; + text-placement: interior; } } @@ -777,6 +787,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 10; + text-placement: interior; } } @@ -789,6 +800,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 10; + text-placement: interior; } } @@ -800,6 +812,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 10; + text-placement: interior; } } @@ -813,6 +826,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 10; + text-placement: interior; } } @@ -937,6 +951,7 @@ text-dy: 9; text-face-name: @book-fonts; text-halo-radius: 1; + text-placement: interior; } } @@ -948,6 +963,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 70; + text-placement: interior; } [feature = 'tourism_caravan_site'][zoom >= 17] { @@ -958,6 +974,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 70; + text-placement: interior; } [feature = 'waterway_lock'][zoom >= 15] { @@ -968,6 +985,7 @@ text-face-name: @book-fonts; text-halo-radius: 1; text-wrap-width: 70; + text-placement: interior; } [feature = 'leisure_marina'][zoom >= 15] { From 3189f2503b5edbae491396c6e82e31ccfbdbf971 Mon Sep 17 00:00:00 2001 From: math1985 Date: Sun, 7 Sep 2014 11:05:30 +0100 Subject: [PATCH 51/74] Restore aeroway line rendering This reolves #927. --- project.mml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/project.mml b/project.mml index ec5272c1e8..8f97b7d37e 100644 --- a/project.mml +++ b/project.mml @@ -443,7 +443,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes'))) as features order by layernotnull,prio) as tunnels", + "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes'))) as features order by layernotnull,prio) as tunnels", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -722,7 +722,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_casing", + "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_casing", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -767,7 +767,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_fill", + "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_fill", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", @@ -882,7 +882,7 @@ ], "Datasource": { "type": "postgis", - "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where bridge in ('yes','viaduct')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct'))) as features order by layernotnull,prio) as bridges", + "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where bridge in ('yes','viaduct')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct'))) as features order by layernotnull,prio) as bridges", "extent": "-20037508,-20037508,20037508,20037508", "key_field": "", "geometry_field": "way", From 8552de0fe9eaec304cff9fbe95f0703cdad9cf95 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Mon, 8 Sep 2014 15:03:15 -0700 Subject: [PATCH 52/74] Use a specific version of carto for travis This works around mapbox/carto#368, but it's more to lock down versions and keep CI as a test solely of the stylesheet, not of any components. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 0596b902a0..7b86a913b4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ before_install: - sudo apt-get update -qq - sudo apt-get install -y -q python-demjson install: - - npm install carto + - npm install carto@0.12.1 - mkdir -p data/world_boundaries - mkdir -p data/simplified-land-polygons-complete-3857 - mkdir -p data/ne_110m_admin_0_boundary_lines_land From 886adbbeaadad74360a3e5d002b5399db37d85ce Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Tue, 9 Sep 2014 17:23:37 +0100 Subject: [PATCH 53/74] Add a preview image. --- README.md | 2 ++ preview.png | Bin 0 -> 212455 bytes 2 files changed, 2 insertions(+) create mode 100644 preview.png diff --git a/README.md b/README.md index 46f288eb18..190a0aba19 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # OpenStreetMap Carto +![screenshot](https://raw.github.com/gravitystorm/openstreetmap-carto/master/preview.png) + The standard stylesheet on [OpenStreetMap.org](http://www.openstreetmap.org) An implemention of the standard OpenStreetMap mapnik style, in CartoCSS. These stylesheets can be used in your own cartography projects, and are designed to be easily diff --git a/preview.png b/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..b21499766e7ae1f933bb1f7cc364ae4b9b6f644d GIT binary patch literal 212455 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%0A4IGyg?izY~*^NTauFm6|@y`30O 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

    a=kg5nJoY;hV=n-g1io zVC`CA{d&pqE^KKUYs`D$wi92)O=;IHqm{vw{_n`t(CJ)WSeexQ23 z`izA`Usap#G{3wq&u_%*$(oimWT82)C&XzO8BGI_*&I@TD3OH{`c#Z{y86krl{p=t zwOY43fY{W_cEyDNWPQAunk~DA6Z0qVg3RvFRvd6Fn9~D3B0QX!zi?QHA`-`!?giz; ze|`}}MD@WybTs5M`-%BuyQ+Gh0gLJUMMuNSETc36e%O{Vd&Y{t+{5tPpfd^mZy&x? z3;`^=@RB(O=`Hsy%g)RTTifnj{)dh0|8sgTi6QJjH-WM2rU&16{@z<3{AXVuZaBpC z>)2g--F+*cyLpue!<^t>2e-_X79Xod1`~?dtzkY|!$o=MrL$xtu^Kp`dMT@{%Wq{3Ep%o_@0;0hl-NhC!?P*D^?Q4}SYVtC~Q zBtgMxbI2${qo#X}=;(55Dx`cAjXp5|03ZNKL_t)%fE%mP?>b=z@bvY?R)@pSMVFL~ z?Gk)8_tN}p@&?Y%DX!Xm^5oy(7IKFrcD<%gY@avk$tXUvQP{L_lC+{qrSb!$-k{3M zi&j>iiNI|^&FB*Rm;t+OM7xtj3^81K!C61Q^RL!AFOebLwfiVZD@GLd*Vjr*QBfiJ z)vv&^BOX@XcmocHgk=Ts|FY@9F=NO#-oVP05|OVu?>tPHAgitIfA@zUe(i?kcX&OX zhOQ<$b=tHQx2<^WiR*uu;~Ha>sxyan__j1!rQ;^Y+T^x9y<+|hCz~EF_XGj-iuog} z>$Lx$y)TV#qq^6AW;D`h8)-)JzDi!RICdOoBMI3_Nq~|R0tHG*Xj5(r^rnPD3zSlp zmbRqOUP^D-X&azGn?N8eSqRx6s}pCnV_UZ6-PXQKqnY=^$g(W22}#<%m-E5DqvNA9 zi)PMw&huZMgVn*ZVi?F#DKU9lxAJJMe8y#o4uTZq-U&ri?YU)Tmk5B;YAa~ zKA*n}K?=zI7|k7%+qN?zS3BlRy%gYY(iHW%rs%tPB@%W1@xJv!)L-Y?t0b1cgh%8<`KWQv(v?)v4c>+g|k zb4S(T9j-KWc9w3HH8N)FEaNln?Fb2)+8RJv6+SfnWjf7Op zw1V!A5EoThMeIH9u^v3$=<^c85d)=9KL-awffzbLT7Zw%9y^wvpPy=AStHxkY-w(4k#bh&Pbj0+8b>&Sz5rpb*9$<> z1(qvS;FF`y11_hUAe8-?M8Elrlq|pfOmLn) zp4i3VwJ#iB{K(rU1}A*>N1_T!{$~3=R7nom#WOm{&Q3Dq=%VJ12`=RI~4S z&hLT1B{+(+wYj^u|Lx?d^RyF{736LH!}nj_T|V=>og1&)tBY?qy!=t}$LO?}c#AS*g z35cMrT`@xL5&$x5Phu*^i+ikptM|edvN%K5D0l$Du=}X(Eva2e>RNk02M{HAnMg$m z9)L60oLG^Glw7T`1$^#q8;XTyy4VwXLh`B0Yyu85atNl$tS{i9P(_h}C$)XL(m=dPYV|Tj#!gpQ|ZE zf&mRp2g21sr!yMxr01G-9IH#lc`nf#CS??@QbCBV7Ajh)(zCI&!+xL38Q}xx|GOBt zSlCBrXD7!fbF_@b?v`RkWFEeTp*djvUw2EsMTtvQmGu2@Y!H6*!%LrD3!{N;J;@6BxIC$j<0H-srZq*i`||G0GG!xB=hI< z`~UIJf38`x2EYRkJm9d~pLpVl&dyF-M>_z&X9qzmJ#E2&*VBBqZqC9*R%^?l9d!h) z1hA*xp;W01ZS7qLfM^swwQ5_t9`Mw|-{VR8NM>g-EE{#B`qOUdLadDqde+F0urvsE zJ6lpx>aZOwDHH%i15TaBp(}(KcCNnt=P$qVTHN5P(=l@{zkJCR3txNfzwsYioOY+x zD^R)po7VGIn_vdX{t6r`Xp{F&5r!U8;%rD%6k+Jdyy+O|Ajl(`$H5&)$v;Plbsz2K7Z$3f@4V0a7lgs{@tGV=pa5rlKqg0 z{ZG6eoR5e!`(vt@`h$P( zxNPjHnB$SZNx1NvKX~-*Ki)fc`JKb@f5RD$0k|DKoSqqs2&d1?-0~JV9P<0dyaFL` z002!Z0HkTv036NsG*+MRZhzSagJhDy?qF4q;>;;H-JHnksmX{)4!BrJm5Y{#lro4i zsC7)u$+LU*?p^)u<)Xg@Ky*x8EoAN}F3uKl1naP5%ysz#U5)j}8!XaCM>ygLN3x=P zfRCo=4Vii-H7k=G_!DfN!{hvwP85{9(>>tc z#i5=fli_t|{^PhOl6IB4I|Zm~ASr7EX@w(D9sqdWOr= zN2#2uhMx9lN62SK=0u}bru*8g60L05J=n+l_7=}B0zwycB2vg=?(i(j#=)PY>T5Ea zj~+cbV2&CD2Sp)#iDyoQ;+)rv&D#(C;F0GOTTX2GbsYcE%2*Dgnm%984I4H9xc>U< zpIX2Ey6disQ_Jwi*d{6TBpePWHU_+&E{`X@Ps!ciGk}^({8(*iO6d!!mMbU#d>~{C z^l8~}EC7eYm6s87xsuYmy!^rkt5$y(K-}OvdGh2xKKtw~E2igODq)6m*#OJONdEP7 z+T#Y_*imp?&^j!vF({l=DIafDAIZC&V5+ z(K9GNi(8k1(VqQCWPq{JJ8Q;y+(?z|A`<@*cf=X>0`Nz@y=gj+t5f<2!0xt_AkSw| z2YU1l0IA%t#`;U@^Y`z+0g_}tte<`?eZ1kjkG%BaBiDZGCrY(GD8$%lR+;_MA0CT0 zYUC+<_8txz+>=TRgQ0UvxT?{P$-|dc(lckcjvnv~hq01C-alXaUEzc(Ded3DJz2^v z|NXna{NW*=$2BBH_Fd|(4^PM-XDKidr9R;amx|VlYoAsPgt5mog zHUJMl^9F#8fBMPAobrZH^|<$*J7?VR6Um3q?XJ_Rv!%Qz{gi{xCntQALKANf`@47V zt7&R#((Bl%SKJ(LRH)Mcgd0Ah@-HVTO{BMWxP;FaqmU6NJ&2-`A~qrlTB%gpJzh>B zmyEnxt=8-H)^_!%DdZYc0gwu1TV2pC3X}Mah)~QuehG&9S z#@E*`Q)s19QhVdH2790#z;UZ};kZIlp8EXO#$IoDQl4JQ|5w`{Svan6SHl1cuPYQ{ zIE|Jd1HH)TRvnWQlxIB(;|LA$8Vn76_O2J2Dw5`XXR;vN**}ePj zyYHSbapH?Fy`&cGn)F^dKVbjha+1I@jo3>?`dN80>VT*K)EDCt>MhOh@2G$KohRRa ze{+n>%*_R`^WAq|`Nw^ia-9rM59Gf%ZN=o%7 zFv&Pc^7-QjI!?$vAyrhSu<>#QC5FRNDi+G-03g-rmM#gP&`>dFj|*nthS-PHK}vGi0b6d8#=kv%pN7WVDFrV-@q9?8;#wp1XX^n3_$UBc7EMHc z@gl{D#35QJ6r_RjQj_762|YRUH$Kj`4hIg8uw-_f%_j`RdPF zW?z+cDHrvm3@^da@`@=X5a9RuYtO*%13>U2F(ESX+@3e3Lamjzd4p&AXDt9&CJ(jC zeJ5f|h&%uQQP9CcfljuMXN2|-z6L$R73F50s%x#B6wCLiH>SW=2Ob8K`MdZ1-rlwU z$ex`gPyDE(_M;Thn<8330P+EItS%LN+ZP7HA?WHk^Rh+-App=oqiwJP@D}A##L$eI+!Km0v{Vtp{umN<+6lr>>)Cj! zKYDol-QNd%nZ=<{D?&wPxjRH3ITq#gf$~zhC*(Q0bF<40AYYq5xvVnVm~}B63Ijr* z&DL&n_tv!3SlTV-iRNNcKLk`YHVgkB`22)Qs`+!i_RTn&jD&o{ja)f<+2F>)301lIL#JzA zZc^BtZkHI#zs#tp|M}|&+x8vF-h1vmQyWw4(CgVZ-gx8G$&=UJaO3HdCjiWvHS56#9suyh8*cy@Ke6oD z-#-K3#TQQRNZ22(U@X-J~r)DndGY}d+(OPCk zCIFpA-sN;#&(<%#;)+l(NGp|{9i3jU*O;F_p=zqcaW*$KNh$sOZLu(yw)*os7tHSciEirgfHl`{Kh+!WHClYbL%|z=@06s7aJCrr5(1~ zD+^NX)**KGlQWAy|NQV6$-j8m2RTNl9re1SuKhK~=UlD`xg!8*#2Edk+Xd}N2UR#6 z9T)|An=f@oxFU(~OW4b52eWj!2) z&!A~KEjv36h_iGwO@|vkG(^0HNy#t1&|M>R*CaLOnTiK5jiE4k_ji^V5`>BM3>P;6 zKlQ`qU+lO3_38f>x@(NU`k#M$*lmW}Dt$MpeJnB0R%#^wU-uwM!UK5M4e)JHsA4}sIMAQZM>Bq$wz$B1 zw$XR`3;;SOo1Ib-{}?y>`kaDh80422X1Z`i* z;mT7r34rg$l=U`Ln~jEhjAi;`r}B-sevUc>zRPHBmMx3sLWY zr^G2x;xNymE%rra)FaN!2k^w>4;L2vuO!#j=nHsh=fjUa{D;Rj7>&j^-hA=zAOA_} z|J&z&E;T;*-Vp|KLG!E&J(7qsG;+kNva;Af(5JqL^UTVcJR@o6DH1< z6gy1$`C)%I%d+PDT*;U#DST9vSF|?NsaT^qKexBHSAvqqYK~P`R|Ck;&j+w>-94Ah zn7--V&5_<(M3Se!a8GAQ+dalhkTJ4zO65c=>CjM%n-JxLE=O8c8X?!1OlFDg)3Ypq zapT81olcbym5`s`?M%4amPYq#U0FZO?Wy86~-m&Yx|=UQHD z9hTDgZjLjF`HSZ;mny^{!qpY-n-*YdTn`HKtsVI!W-&KM*p^OYw zRAw(PV8XHh6_q($0?SJ9j`W8mbFlr!f|XH^}Le#at_G1>p*a(a+?LXpxpBhlI+sTTr7vSXT3&d@4(qBONcRzLXAqf=%rmY6@O zy``c1cP~5)Akx}ZIVYC?IoRap^h&;cf0?NgKq{-JTw2(~klzz*=#4KYVTB$kViG8n z?>c2J8gruNfn?Gc@n1@M&TS9f@!I2m8V>(S=xzG^74@eM9^SQi)2mNvb%y-nazk2< zhKZf0&*QRpw{}|VZQZRCtL6_UB{E<>3Rz~P=h~cZB17*X>m?>)@BY(UUw-JrT}NTX zBX?Z4;s?JOGSwd`mz`6zZ!kIpb)Tr}Aa*hV zR>|yJSXjsz4ENpF@78no-FN@bv(Mf8;~#I`x>YW>B;h~8FhQmnAeeY;?}7Mrjhj9} zq4+3%s^|I^DHRI2UMA}Jo6#p zk^$fth=GWkm&^M6rDRbD0Kd}@%!oK!qrHcvEukgio1`Ws4Z4_tZ$w}UIRJQTPDz+4 zk!nf-__i<1N{7p4C4A8wvo;4|0PW4&joND$m!&=Y#_8fLO|Lin!Y3U7R?f-})PJ6- z-T@$sjoU=*0ASYUKs&dru$k612RxnRD85Zn*hlfWvh$w2j0vm-I+7QAvae+TRO;}Y z8>s3l6DLftB&wAGk{g`aWa{Yb1Yj^2#*Z79)aT#4%$Zzj-Ti!={JZsm=k&%QsJH6l z4LkRo`s>s8i14m?zUL9) zORB5hetX~RuYdI5PgjCu-hA_ujEpIzrB!lyN=e^Jv}4CX0A;ggyR7Z4PTQ1Ov*XVI z0Kea_1juWy75x5qXY*~h`5irKF7=z=Tmm3{=@n`&6+ocwbmyV!b47j_D$k!(98M?4 zvQC$C+VtsTyyQfmKb^oyLe_G3h-mcCTo<30$|Ew6B^u;4=#DL>dP2_=0wt0(p#tD2 zDpQ=T9~t9{`30mx9V9}*`4!UO0U(r;D+)OT85ISeuQ**4M2J3uBz$=czyN+;h`>O? zpo}3=J;m$!6d0uBc{G&ze;!~hb%I9AXQnCY8(BaYKgpPz=E*Yw@T6!$`2|F{GmxTp z2??aWi2conDTcaw`qkZ$&UZiEJiy`a;uK4}#nNtBF>CpiQ?GQ{T{YGd3(a$J>3#l` zawY=|t&#(P{@-`1;@kHNZY%O)sfp5L%6tF&0ZtW519s%$FJfpFqCBn4+59(y;W7Yv z&Ikb9fGsy4iTJ$kBv6=VDjs8A-x2sfn@>H0{~xU}1lrRc|KorC>dt3alnSI-1*$)_n5Jns10&22OW0t49&+-&Ig@ zIma@vcC~gnw9L@{4V3KMO!Y#L06ys2ag1nPf_WxLtbcfUF zy6L8ynwy)~t^IFF1?0PH*4%W{O_JLm$8jc;Y5x2LH-7V*03Ltrv0prV4_bB&usSs# z^0e0vxGrDJuC0{^T-B#S!4R!H5(i``A z&_HK%S0_lC0w9;E(gsi&0FVl#_Pexk0F+80-0)GM))Okpk?b0k7nY~*v(xDrm~#4` zDBe~Jq!wpsG7YLsgDPD|7iOyTlvm*Wle0%k2v;6KImI?p;ZMS GC}KK{*%TCJ{_ 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 qy2%+9a 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%0Db&^= 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 m(N%m&y4~z0%g@7x^8WzPUwDu(GaAVN0000 Date: Tue, 9 Sep 2014 17:24:30 +0100 Subject: [PATCH 54/74] Update some of the text to reflect current status. --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 190a0aba19..f8c03f43d2 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,12 @@ ![screenshot](https://raw.github.com/gravitystorm/openstreetmap-carto/master/preview.png) -The standard stylesheet on [OpenStreetMap.org](http://www.openstreetmap.org) An implemention of the standard OpenStreetMap mapnik style, in CartoCSS. +These are the CartoCSS map stylesheets for the Standard map layer on [OpenStreetMap.org](http://www.openstreetmap.org). These stylesheets can be used in your own cartography projects, and are designed to be easily customised. They work with [TileMill](http://www.mapbox.com/tilemill/) and also with the command-line [CartoCSS](https://github.com/mapbox/carto) processor. -Since August 2013 these stylesheets are used on the OSMF tileservers (tile.openstreetmap.org), and +Since August 2013 these stylesheets have been used on the OSMF tileservers (tile.openstreetmap.org), and are updated from each point release. They supersede the previous [XML-based stylesheets](https://trac.openstreetmap.org/browser/subversion/applications/rendering/mapnik) # Setup @@ -109,21 +109,21 @@ If you aren't using TileMill, you can compile the CartoCSS stylesheets into Mapn This was a full re-implementation of the original OSM style, with only a few bugs discovered later. There's been no interest in creating further point releases in the v1.x series. -## Easier to wrangle (v2.x) +## Current work (v2.x) -There are a number of refactorings that can be made to the style, either to fix glitches -with the current style, or to leverage new features in carto / mapnik to simplify the stylesheets -with only small changes to the output. It's also appropriate to pull out some of the 'old-skool' +The v2.x series focuses on refactoring the style, both to to fix glitches and to +leverage new features in CartoCSS / mapnik to simplify the stylesheets with only +small changes to the output. It's also appropriate to pull out the 'old-skool' tagging methods that are now rarely used. Care is being taken to not get too clever with variables and expressions. While these often make it easier to customise, experience has shown that over-cleverness (e.g. [interpolated entities][cleverness]) can discourage contributions. -The end goal will be a style that hews close to the current look of the standard style, but is -much more suitable for further development, and/or forking for third-parties to customise. +The end goal will be a style that remains familiar but is much more suitable for +further development, and/or forking for third-parties to customise. -## Tackle the backlog (v3.x) +## Future (v3.x) There are over [300 open requests][issues], some that have been open for years. These need reviewing and dividing into obvious fixes, or additional new features that need some cartographic From 0a79f168552513d7e75093645e4b6ec64ea574b5 Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Tue, 9 Sep 2014 17:24:41 +0100 Subject: [PATCH 55/74] Add the maintainers. --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index f8c03f43d2..368482381c 100644 --- a/README.md +++ b/README.md @@ -131,3 +131,10 @@ judgement. The work done already in v1.0 and v2.0 will make it much easier to pr [issues]: https://github.com/gravitystorm/openstreetmap-carto/issues [cleverness]: https://github.com/openstreetmap/mapnik-stylesheets/blob/master/inc/settings.xml.inc.template#L16 + +# Maintainers + +* Andy Allan [@gravitystorm](https://github.com/gravitystorm/) +* Matthijs Melissen [@math1985](https://github.com/math1985/) +* Paul Norman [@pnorman](https://github.com/pnorman/) +* Mateusz Konieczny [@mkoniecz](https://github.com/mkoniecz/) From 2e56c08f4ca0fd85537a297408c29cccb580b609 Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Tue, 9 Sep 2014 17:29:26 +0100 Subject: [PATCH 56/74] Move installation instructions to a separate file, since the README has become unweildy. --- INSTALL.md | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 94 ++++-------------------------------------------------- 2 files changed, 97 insertions(+), 88 deletions(-) create mode 100644 INSTALL.md diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000000..85ef1a6564 --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,91 @@ +# Installation + +You need OpenStreetMap data loaded into a PostGIS database (see below for [dependencies](https://github.com/gravitystorm/openstreetmap-carto#dependencies)). These stylesheets currently work only with the osm2pgsql defaults (i.e. database name is ``gis``, table names are ``planet_osm_point``, etc). + +It's probably easiest to grab an PBF of OSM data from [Mapzen](https://mapzen.com/metro-extracts/) or [geofabrik](http://download.geofabrik.de/). Once you've set up your PostGIS database, import with osm2pgsql: + +``` +osm2pgsql -d gis ~/path/to/data.osm.pbf --style openstreetmap-carto.style +``` + +You can find a more detailed guide to setting up a database and loading data with osm2pgsql at [switch2osm.org](http://switch2osm.org/loading-osm-data/) + +Additionally you need some shapefiles. + +## Scripted download + +To download the shapefiles you can run the following script from this directory. No further steps should be needed as the data has been processed and placed in the requisite directories. + +``` +./get-shapefiles.sh +``` + +## Manual download + +You can also download them manually at the following paths: + +* `simplified-land-polygons.shp` [download](http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip) +* `land-polygon.shp` [download](http://data.openstreetmapdata.com/land-polygons-split-3857.zip) +* `builtup_area.shp` [download](http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz) +* `ne_110m_admin_0_boundary_lines_land.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip) +* `ne_10m_populated_places_fixed.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip) (and see below) + +Put these shapefiles at path/to/openstreetmap-carto/data + +### Populated places shapefile + +The Natural Earth 2.0 populated places shapefile contains data that triggers a bug in mapnik. As +a workaround we run the shapefile through ogr2ogr to clean up the data. + +``` +ogr2ogr ne_10m_populated_places_fixed.shp ne_10m_populated_places.shp +``` + +See https://github.com/mapnik/mapnik/issues/1605 for more details. + +## Fonts +The stylesheet depends on a number of openly licensed fonts for support of all the languages found on the map. The package which supplies these fonts on Ubuntu is indicated. + +If a font is missing, it will skip to the next available font which contains those characters. If you are not concerned with a particular language, you do not need its fonts. DejaVu Sans and Unifont are the two required fonts, and included on most systems. + +### Global +* DejaVu Sans, for most languages (``ttf-dejavu``) +* Droid Sans Fallback, as a reasonable fallback (``fonts-droid``) +* Unifont, as a last resort fallback (``ttf-unifont``) + +### Southeast Asia +* Arundina Sans, for Thai (``fonts-sipa-arundina``) +* Padauk, for Burmese (``fonts-sil-padauk``) +* Khmer OS Metal Chrieng Regular, for Khmer (``fonts-khmeros``) + +### South Asia + +* Mukti Narrow, for Bangali (``ttf-indic-fonts-core``) +* Gargi Medium, for Devanagari (``ttf-indic-fonts-core``) +* TSCu_Paranar, for Tamil (``ttf-tamil-fonts``) +* Mallige, for Kannada (``ttf-indic-fonts-core`` for normal and bold and ``ttf-kannada-fonts`` for oblique) *The filename uses "Malige" but the font name uses "Mallige"* + +On Ubuntu you can install all the fonts with + +``` +sudo apt-get install ttf-dejavu fonts-droid ttf-unifont fonts-sipa-arundina fonts-sil-padauk fonts-khmeros \ +ttf-indic-fonts-core ttf-tamil-fonts ttf-kannada-fonts +``` + +## Dependencies + +* [TileMill](http://mapbox.com/tilemill) - This is a TileMill project you can copy (or symlink) directly into your Mapbox/project directory + +If you aren't using TileMill, you can compile the CartoCSS stylesheets into Mapnik XML using the command-line `carto` command. + +* [carto](https://github.com/mapbox/carto) >= 0.9.3 (we're using instances with cascading rules) +* [mapnik](https://github.com/mapnik/mapnik/wiki/Mapnik-Installation) >= 2.1.0 + +--- + +* [osm2pgsql](http://wiki.openstreetmap.org/wiki/Osm2pgsql) to import your data into a PostGIS database +* [PostgreSQL](http://www.postgresql.org/) +* [PostGIS](http://postgis.org/) +* [ogr2ogr](http://www.gdal.org/) command line GDAL utility for processing vector data. here we use it to work around a encoding bug in the Nautral Earth data. +* curl, unzip for downloading and decompressing files +* shapeindex (a companion utility to Mapnik found in the mapnik-utils package) for indexing downloaded shapefiles diff --git a/README.md b/README.md index 368482381c..f437453bee 100644 --- a/README.md +++ b/README.md @@ -10,97 +10,15 @@ customised. They work with [TileMill](http://www.mapbox.com/tilemill/) and also Since August 2013 these stylesheets have been used on the OSMF tileservers (tile.openstreetmap.org), and are updated from each point release. They supersede the previous [XML-based stylesheets](https://trac.openstreetmap.org/browser/subversion/applications/rendering/mapnik) -# Setup +# Installation -You need OpenStreetMap data loaded into a PostGIS database (see below for [dependencies](https://github.com/gravitystorm/openstreetmap-carto#dependencies)). These stylesheets currently work only with the osm2pgsql defaults (i.e. database name is ``gis``, table names are ``planet_osm_point``, etc). +You need a PostGIS database populated with OpenStreetMap data in the standard +osm2pgsql database layout, along with auxillary shapefiles. See [INSTALL.md](INSTALL.md) -It's probably easiest to grab an PBF of OSM data from [Mapzen](https://mapzen.com/metro-extracts/) or [geofabrik](http://download.geofabrik.de/). Once you've set up your PostGIS database, import with osm2pgsql: +# Contributing -``` -osm2pgsql -d gis ~/path/to/data.osm.pbf --style openstreetmap-carto.style -``` - -You can find a more detailed guide to setting up a database and loading data with osm2pgsql at [switch2osm.org](http://switch2osm.org/loading-osm-data/) - -Additionally you need some shapefiles. - -## Scripted download - -To download the shapefiles you can run the following script from this directory. No further steps should be needed as the data has been processed and placed in the requisite directories. - -``` -./get-shapefiles.sh -``` - -## Manual download - -You can also download them manually at the following paths: - -* `simplified-land-polygons.shp` [download](http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip) -* `land-polygon.shp` [download](http://data.openstreetmapdata.com/land-polygons-split-3857.zip) -* `builtup_area.shp` [download](http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz) -* `ne_110m_admin_0_boundary_lines_land.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip) -* `ne_10m_populated_places_fixed.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip) (and see below) - -Put these shapefiles at path/to/openstreetmap-carto/data - -### Populated places shapefile - -The Natural Earth 2.0 populated places shapefile contains data that triggers a bug in mapnik. As -a workaround we run the shapefile through ogr2ogr to clean up the data. - -``` -ogr2ogr ne_10m_populated_places_fixed.shp ne_10m_populated_places.shp -``` - -See https://github.com/mapnik/mapnik/issues/1605 for more details. - -## Fonts -The stylesheet depends on a number of openly licensed fonts for support of all the languages found on the map. The package which supplies these fonts on Ubuntu is indicated. - -If a font is missing, it will skip to the next available font which contains those characters. If you are not concerned with a particular language, you do not need its fonts. DejaVu Sans and Unifont are the two required fonts, and included on most systems. - -### Global -* DejaVu Sans, for most languages (``ttf-dejavu``) -* Droid Sans Fallback, as a reasonable fallback (``fonts-droid``) -* Unifont, as a last resort fallback (``ttf-unifont``) - -### Southeast Asia -* Arundina Sans, for Thai (``fonts-sipa-arundina``) -* Padauk, for Burmese (``fonts-sil-padauk``) -* Khmer OS Metal Chrieng Regular, for Khmer (``fonts-khmeros``) - -### South Asia - -* Mukti Narrow, for Bangali (``ttf-indic-fonts-core``) -* Gargi Medium, for Devanagari (``ttf-indic-fonts-core``) -* TSCu_Paranar, for Tamil (``ttf-tamil-fonts``) -* Mallige, for Kannada (``ttf-indic-fonts-core`` for normal and bold and ``ttf-kannada-fonts`` for oblique) *The filename uses "Malige" but the font name uses "Mallige"* - -On Ubuntu you can install all the fonts with - -``` -sudo apt-get install ttf-dejavu fonts-droid ttf-unifont fonts-sipa-arundina fonts-sil-padauk fonts-khmeros \ -ttf-indic-fonts-core ttf-tamil-fonts ttf-kannada-fonts -``` - -## Dependencies - -* [TileMill](http://mapbox.com/tilemill) - This is a TileMill project you can copy (or symlink) directly into your Mapbox/project directory - -If you aren't using TileMill, you can compile the CartoCSS stylesheets into Mapnik XML using the command-line `carto` command. - -* [carto](https://github.com/mapbox/carto) >= 0.9.3 (we're using instances with cascading rules) -* [mapnik](https://github.com/mapnik/mapnik/wiki/Mapnik-Installation) >= 2.1.0 - ---- - -* [osm2pgsql](http://wiki.openstreetmap.org/wiki/Osm2pgsql) to import your data into a PostGIS database -* [PostgreSQL](http://www.postgresql.org/) -* [PostGIS](http://postgis.org/) -* [ogr2ogr](http://www.gdal.org/) command line GDAL utility for processing vector data. here we use it to work around a encoding bug in the Nautral Earth data. -* curl, unzip for downloading and decompressing files -* shapeindex (a companion utility to Mapnik found in the mapnik-utils package) for indexing downloaded shapefiles +Contributions to this project are welcome, see [CONTRIBUTING.md](CONTRIBUTING.md) +for full details # Roadmap From 6673e15c840e0a9dae28740eaa23af4efee515bc Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Tue, 9 Sep 2014 17:36:09 +0100 Subject: [PATCH 57/74] Add a description of the versioning system. I didn't know how this would work when we first started, but it's settled down now so worth writing it out. --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index f437453bee..87e2fa4f9b 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,22 @@ osm2pgsql database layout, along with auxillary shapefiles. See [INSTALL.md](INS Contributions to this project are welcome, see [CONTRIBUTING.md](CONTRIBUTING.md) for full details +# Versioning + +This project follows a MAJOR.MINOR.PATCH versioning system. In the context of a +cartographic project you can expect the following: + +* PATCH: When a patch version is released, there would be no reason not to + upgrade. PATCH versions contain only bugfixes e.g. stylesheets won't compile, + features are missing by mistake, etc. +* MINOR: These are routine releases and happen every 1-3 weeks. They will + contain changes to what's shown on the map, how they appear, new features + added and old features removed. They may rarely contain changes to assets i.e. + shapefiles and fonts but will not contain changes that require software or + database upgrades. +* MAJOR: Any change the requires reloading a database, or upgrading software + dependecies will trigger a major version change. + # Roadmap ## Initial Release (v1.0.0, December 2012) From c2ef8170873fe8936ffaa472c6ede0f1b9d02c49 Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Tue, 9 Sep 2014 17:42:40 +0100 Subject: [PATCH 58/74] I always like seeing alternatives when I view other projects. --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 87e2fa4f9b..5f8d07eedf 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,16 @@ judgement. The work done already in v1.0 and v2.0 will make it much easier to pr [issues]: https://github.com/gravitystorm/openstreetmap-carto/issues [cleverness]: https://github.com/openstreetmap/mapnik-stylesheets/blob/master/inc/settings.xml.inc.template#L16 +# Alternatives + +There are many open-source stylesheets written for creating OpenStreetMap-based +maps using mapnik, many based on this project. Some alternatives are: + +* [OSM-Bright](https://github.com/mapbox/osm-bright) +* [XML-based stylesheets](https://trac.openstreetmap.org/browser/subversion/applications/rendering/mapnik) +* [osmfr-cartocss](https://github.com/cquest/osmfr-cartocss) +* [openstreetmap-carto-german](https://github.com/woodpeck/openstreetmap-carto-german) + # Maintainers * Andy Allan [@gravitystorm](https://github.com/gravitystorm/) From 9d9a06d6ee36e0ddd74bd22435cf557bbd8dcab2 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Tue, 9 Sep 2014 16:22:48 -0700 Subject: [PATCH 59/74] Add missing periods --- INSTALL.md | 2 +- README.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 85ef1a6564..4d4c49582f 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -8,7 +8,7 @@ It's probably easiest to grab an PBF of OSM data from [Mapzen](https://mapzen.co osm2pgsql -d gis ~/path/to/data.osm.pbf --style openstreetmap-carto.style ``` -You can find a more detailed guide to setting up a database and loading data with osm2pgsql at [switch2osm.org](http://switch2osm.org/loading-osm-data/) +You can find a more detailed guide to setting up a database and loading data with osm2pgsql at [switch2osm.org](http://switch2osm.org/loading-osm-data/). Additionally you need some shapefiles. diff --git a/README.md b/README.md index 5f8d07eedf..9e8612ed30 100644 --- a/README.md +++ b/README.md @@ -8,17 +8,17 @@ These stylesheets can be used in your own cartography projects, and are designed customised. They work with [TileMill](http://www.mapbox.com/tilemill/) and also with the command-line [CartoCSS](https://github.com/mapbox/carto) processor. Since August 2013 these stylesheets have been used on the OSMF tileservers (tile.openstreetmap.org), and -are updated from each point release. They supersede the previous [XML-based stylesheets](https://trac.openstreetmap.org/browser/subversion/applications/rendering/mapnik) +are updated from each point release. They supersede the previous [XML-based stylesheets](https://trac.openstreetmap.org/browser/subversion/applications/rendering/mapnik). # Installation You need a PostGIS database populated with OpenStreetMap data in the standard -osm2pgsql database layout, along with auxillary shapefiles. See [INSTALL.md](INSTALL.md) +osm2pgsql database layout, along with auxillary shapefiles. See [INSTALL.md](INSTALL.md). # Contributing Contributions to this project are welcome, see [CONTRIBUTING.md](CONTRIBUTING.md) -for full details +for full details. # Versioning From 2670a1b4b4905ccf9c5c8f49bbbcbe170666b1c5 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Tue, 9 Sep 2014 16:26:30 -0700 Subject: [PATCH 60/74] More Markdownification --- INSTALL.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 4d4c49582f..56fa3cb3f9 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -24,13 +24,13 @@ To download the shapefiles you can run the following script from this directory. You can also download them manually at the following paths: -* `simplified-land-polygons.shp` [download](http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip) -* `land-polygon.shp` [download](http://data.openstreetmapdata.com/land-polygons-split-3857.zip) -* `builtup_area.shp` [download](http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz) -* `ne_110m_admin_0_boundary_lines_land.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip) -* `ne_10m_populated_places_fixed.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip) (and see below) +* [``simplified-land-polygons.shp``](http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip) +* [``land-polygon.shp``](http://data.openstreetmapdata.com/land-polygons-split-3857.zip) +* [``builtup_area.shp``](http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz) +* [``ne_110m_admin_0_boundary_lines_land.shp``](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip) +* [``ne_10m_populated_places_fixed.shp``](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip) (and see [below](#populated-places-shapefile)) -Put these shapefiles at path/to/openstreetmap-carto/data +Put these shapefiles at ``path/to/openstreetmap-carto/data``. ### Populated places shapefile From fdc32e1fb9f47de472359c6c419709d22e5dea93 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Tue, 9 Sep 2014 16:30:09 -0700 Subject: [PATCH 61/74] Explain about the shapefiles a bit more --- INSTALL.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 56fa3cb3f9..abc903ac6a 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -24,12 +24,14 @@ To download the shapefiles you can run the following script from this directory. You can also download them manually at the following paths: -* [``simplified-land-polygons.shp``](http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip) -* [``land-polygon.shp``](http://data.openstreetmapdata.com/land-polygons-split-3857.zip) +* [``simplified-land-polygons.shp``](http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip) (updated daily) +* [``land-polygon.shp``](http://data.openstreetmapdata.com/land-polygons-split-3857.zip) (updated daily) * [``builtup_area.shp``](http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz) * [``ne_110m_admin_0_boundary_lines_land.shp``](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip) * [``ne_10m_populated_places_fixed.shp``](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip) (and see [below](#populated-places-shapefile)) +The repeated www.naturalearthdata.com in the Natural Earth shapefiles is correct. + Put these shapefiles at ``path/to/openstreetmap-carto/data``. ### Populated places shapefile From 1be5578626785b09c8936fc1573821d973792873 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Tue, 9 Sep 2014 00:57:40 -0700 Subject: [PATCH 62/74] Add a script that takes a yaml file and converts it to a JSON file Requires PyYAML. If this dependency is an issue on a particular platform, pretty much any language allows you to do this. A ruby example is ruby -ryaml -rjson -e 'puts JSON.pretty_generate(YAML.load(ARGF))' < project.yml > project.json --- scripts/yaml2mml.py | 3 +++ 1 file changed, 3 insertions(+) create mode 100755 scripts/yaml2mml.py diff --git a/scripts/yaml2mml.py b/scripts/yaml2mml.py new file mode 100755 index 0000000000..6fb26c3e41 --- /dev/null +++ b/scripts/yaml2mml.py @@ -0,0 +1,3 @@ +#!/usr/bin/env python +import sys, yaml, json +json.dump(yaml.safe_load(sys.stdin), sys.stdout, indent=2) From 99185367698350366093b3ffbe9465d05fcc7031 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Tue, 9 Sep 2014 18:28:00 -0700 Subject: [PATCH 63/74] Convert the MML file from JSON to YAML This one-time conversion was done with the json2yaml node module, and then substantially reformatted by hand, using mappings and alias to avoid repeating projection and extents information for each layer, and to get consistent ordering of the properties of each layer. The latter does not matter semantically, but makes editing with a text editor cleaner. By using the scripts/yaml2mml.py script, the YAML can be converted back into JSON, which is still what TileMill uses. A JSON-aware diff of the original project.mml and the new generated one shows that the only differences are the new "_parts" property, used for aliases and ignored by TileMill, and layer extents. The script can be invoked with scripts/yaml2mml.py < project.yaml > project.mml The project.mml file remains checked in to git, as TileMill requires it and this allows someone to clone the repo, and immediately have it work. Merge conflicts in project.mml are trivial to solve, as the entire file is just regenerated by running the script again. This does mean that the .MML file should not be edited directly, but this is fine, as editing the JSON by hand is extremely difficult anyways! The HOT OSM style has a similar workflow, making use of cartocc. --- project.mml | 3466 +++++++++++++++++++++++++------------------------- project.yaml | 1003 +++++++++++++++ 2 files changed, 2747 insertions(+), 1722 deletions(-) create mode 100644 project.yaml diff --git a/project.mml b/project.mml index 8f97b7d37e..91a7252592 100644 --- a/project.mml +++ b/project.mml @@ -1,1734 +1,1756 @@ { - "bounds": [ - -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", - "Stylesheet": [ - "style.mss", - "shapefiles.mss", - "landcover.mss", - "water.mss", - "water-features.mss", - "roads.mss", - "power.mss", - "citywalls.mss", - "placenames.mss", - "buildings.mss", - "amenity-symbols.mss", - "stations.mss", - "amenity-points.mss", - "ferry-routes.mss", - "aerialways.mss", - "admin.mss", - "addressing.mss" - ], + "interactivity": false, "Layer": [ { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "id": "world", - "class": "", - "Datasource": { - "file": "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp", - "type": "shape" - }, - "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", - "advanced": {}, - "name": "world" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "id": "coast-poly", - "class": "", - "Datasource": { - "file": "data/land-polygons-split-3857/land_polygons.shp", - "type": "shape" - }, - "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", - "advanced": {}, - "name": "coast-poly" - }, - { - "geometry": "polygon", - "extent": [ - -179.12960815429688, - -52.982724914179855, - 178.4432525634766, - 70.87402746981634 - ], - "id": "builtup", - "class": "", - "Datasource": { - "file": "data/world_boundaries/builtup_area.shp", - "type": "shape" - }, - "srs-name": "mercator", - "srs": "+proj=merc +datum=WGS84 +over", - "advanced": {}, - "name": "builtup" - }, - { - "geometry": "linestring", - "extent": [ - -140.99778, - -54.89681, - 141.03385176001382, - 70.16419 - ], - "id": "necountries", - "class": "", - "Datasource": { - "file": "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp", - "type": "shape" - }, - "srs-name": "WGS84", - "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", - "advanced": {}, - "name": "necountries" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way, name, religion,\ncoalesce (aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) as feature from (\nselect way, COALESCE(name,'') AS name, \n('aeroway_' || (case when aeroway in ('apron', 'aerodrome') then aeroway else null end)) as aeroway,\n('amenity_' || (case when amenity in ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity,\n('landuse_' || (case when landuse in ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') then landuse else null end)) as landuse,\n('leisure_' || (case when leisure in ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') then leisure else null end)) as leisure,\n('military_' || (case when military in ('barracks', 'danger_area') then military else null end)) as military,\n('natural_' || (case when \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') then \"natural\" else null end)) as \"natural\",\n('power_' || (case when power in ('station','sub_station','substation','generator') then power else null end)) as power,\n('tourism_' || (case when tourism in ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') then tourism else null end)) as tourism,\n('highway_' || (case when highway in ('services', 'rest_area') then highway else null end)) as highway,\ncase when religion in ('christian','jewish') then religion else 'INT-generic'::text end as religion\n from planet_osm_polygon\n where landuse is not null\n or leisure is not null\n or aeroway in ('apron','aerodrome')\n or amenity in ('parking','university','college','school','hospital','kindergarten','grave_yard')\n or military in ('barracks','danger_area')\n or \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub')\n or power in ('station','sub_station','substation','generator')\n or tourism in ('attraction','camp_site','caravan_site','picnic_site','zoo')\n or highway in ('services','rest_area')\n order by z_order,way_area desc\n ) as landcover\n) as features", - "extent": "-20037508,-19929239,20037508,19929239", - "key_field": "", - "geometry_field": "", - "dbname": "gis" - }, - "id": "landcover", - "class": "", - "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", - "advanced": {}, - "name": "landcover" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way\nfrom planet_osm_line\nwhere man_made='cutline'\n) as landcover_line", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "landcover-line", - "class": "", - "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", - "advanced": {}, - "name": "landcover-line" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,waterway,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel \n from planet_osm_line\n where waterway in ('stream','drain','ditch')\n and (tunnel is null or tunnel != 'yes')\n ) as water_lines_casing", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "water-lines-casing", - "class": "", - "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", - "advanced": {}, - "name": "water-lines-casing" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,waterway\n from planet_osm_line\n where waterway='river'\n ) as water_lines_low_zoom", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "water-lines-low-zoom", - "class": "", - "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", - "advanced": {}, - "name": "water-lines-low-zoom" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(SELECT\n way, \"natural\", waterway, landuse, name, way_area/(!pixel_width!*!pixel_height!) AS way_pixels\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir','basin')\n OR \"natural\" IN ('lake','water','land','glacier','mud'))\n AND building IS NULL\n AND way_area/(!pixel_width!*!pixel_height!) > 0.01\n ORDER BY z_order, way_area) AS water_areas", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "water-areas", - "class": "", - "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", - "advanced": {}, - "name": "water-areas" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,\"natural\"\n from planet_osm_polygon\n where \"natural\" in ('marsh','wetland') and building is null\n order by z_order,way_area desc\n ) as water_areas_overlay", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "water-areas-overlay", - "class": "", - "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", - "advanced": {}, - "name": "water-areas-overlay" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel, 'no' as bridge\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n and (bridge is null or bridge not in ('yes','aqueduct'))\n order by z_order\n ) as water_lines", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "water-lines", - "class": "water-lines", - "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", - "advanced": {}, - "name": "water-lines" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,name from planet_osm_line where waterway='dam') as dam", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "dam", - "class": "", - "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", - "advanced": {}, - "name": "dam" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way from planet_osm_polygon where leisure ='marina') as marinas_area", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "marinas-area", - "class": "", - "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", - "advanced": {}, - "name": "marinas-area" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,man_made from planet_osm_polygon where man_made in ('pier','breakwater','groyne')) as piers_area", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "piers-area", - "class": "", - "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", - "advanced": {}, - "name": "piers-area" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,man_made from planet_osm_line where man_made in ('pier','breakwater','groyne')) as piers", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "piers", - "class": "", - "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", - "advanced": {}, - "name": "piers" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,waterway from planet_osm_point where waterway='lock_gate') as locks", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "locks", - "class": "", - "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", - "advanced": {}, - "name": "locks" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,building,railway,amenity from planet_osm_polygon\n where railway='station'\n or building in ('station','supermarket')\n or amenity='place_of_worship'\n order by z_order,way_area desc) as buildings_lz", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "buildings-lz", - "class": "", - "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", - "advanced": {}, - "name": "buildings-lz" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,aeroway,\n case\n when building in ('garage','roof','garages','service','shed','shelter','cabin','storage_tank','tank','support','glasshouse','greenhouse','mobile_home','kiosk','silo','canopy','tent') then 'INT-light'::text\n else building\n end as building\n from planet_osm_polygon\n where (building is not null\n and building not in ('no','station','supermarket','planned')\n and (railway is null or railway != 'station')\n and (amenity is null or amenity != 'place_of_worship'))\n or aeroway = 'terminal'\n order by z_order,way_area desc) as buildings", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "buildings", - "class": "", - "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", - "advanced": {}, - "name": "buildings" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes'))) as features order by layernotnull,prio) as tunnels", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "tunnels", - "class": "tunnels-fill tunnels-casing access directions", - "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", - "advanced": {}, - "name": "tunnels", + "name": "world", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "type": "shape", + "file": "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "world", + "advanced": {} + }, + { + "name": "coast-poly", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "type": "shape", + "file": "data/land-polygons-split-3857/land_polygons.shp" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "coast-poly", + "advanced": {} + }, + { + "name": "builtup", + "srs-name": "mercator", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +datum=WGS84 +over", + "Datasource": { + "type": "shape", + "file": "data/world_boundaries/builtup_area.shp" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "builtup", + "advanced": {} + }, + { + "name": "necountries", + "srs-name": "WGS84", + "geometry": "linestring", + "class": "", + "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", + "Datasource": { + "type": "shape", + "file": "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "necountries", + "advanced": {} + }, + { + "name": "landcover", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-19929239,20037508,19929239", + "table": "(select way, name, religion,\ncoalesce (aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) as feature from (\nselect way, COALESCE(name,'') AS name, \n('aeroway_' || (case when aeroway in ('apron', 'aerodrome') then aeroway else null end)) as aeroway,\n('amenity_' || (case when amenity in ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity,\n('landuse_' || (case when landuse in ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') then landuse else null end)) as landuse,\n('leisure_' || (case when leisure in ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') then leisure else null end)) as leisure,\n('military_' || (case when military in ('barracks', 'danger_area') then military else null end)) as military,\n('natural_' || (case when \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') then \"natural\" else null end)) as \"natural\",\n('power_' || (case when power in ('station','sub_station','substation','generator') then power else null end)) as power,\n('tourism_' || (case when tourism in ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') then tourism else null end)) as tourism,\n('highway_' || (case when highway in ('services', 'rest_area') then highway else null end)) as highway,\ncase when religion in ('christian','jewish') then religion else 'INT-generic'::text end as religion\n from planet_osm_polygon\n where landuse is not null\n or leisure is not null\n or aeroway in ('apron','aerodrome')\n or amenity in ('parking','university','college','school','hospital','kindergarten','grave_yard')\n or military in ('barracks','danger_area')\n or \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub')\n or power in ('station','sub_station','substation','generator')\n or tourism in ('attraction','camp_site','caravan_site','picnic_site','zoo')\n or highway in ('services','rest_area')\n order by z_order,way_area desc\n ) as landcover\n) as features", + "geometry_field": "", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "landcover", + "advanced": {} + }, + { + "name": "landcover-line", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way\nfrom planet_osm_line\nwhere man_made='cutline'\n) as landcover_line", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "landcover-line", + "advanced": {} + }, + { + "name": "water-lines-casing", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,waterway,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel \n from planet_osm_line\n where waterway in ('stream','drain','ditch')\n and (tunnel is null or tunnel != 'yes')\n ) as water_lines_casing", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "water-lines-casing", + "advanced": {} + }, + { + "name": "water-lines-low-zoom", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,waterway\n from planet_osm_line\n where waterway='river'\n ) as water_lines_low_zoom", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "water-lines-low-zoom", + "advanced": {} + }, + { + "name": "water-areas", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(SELECT\n way, \"natural\", waterway, landuse, name, way_area/(!pixel_width!*!pixel_height!) AS way_pixels\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir','basin')\n OR \"natural\" IN ('lake','water','land','glacier','mud'))\n AND building IS NULL\n AND way_area/(!pixel_width!*!pixel_height!) > 0.01\n ORDER BY z_order, way_area) AS water_areas", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "water-areas", + "advanced": {} + }, + { + "name": "water-areas-overlay", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,\"natural\"\n from planet_osm_polygon\n where \"natural\" in ('marsh','wetland') and building is null\n order by z_order,way_area desc\n ) as water_areas_overlay", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "water-areas-overlay", + "advanced": {} + }, + { + "name": "water-lines", + "srs-name": "900913", + "geometry": "linestring", + "class": "water-lines", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel, 'no' as bridge\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n and (bridge is null or bridge not in ('yes','aqueduct'))\n order by z_order\n ) as water_lines", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "water-lines", + "advanced": {} + }, + { + "name": "dam", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,name from planet_osm_line where waterway='dam') as dam", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "dam", + "advanced": {} + }, + { + "name": "marinas-area", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way from planet_osm_polygon where leisure ='marina') as marinas_area", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "marinas-area", + "advanced": {} + }, + { + "name": "piers-area", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,man_made from planet_osm_polygon where man_made in ('pier','breakwater','groyne')) as piers_area", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "piers-area", + "advanced": {} + }, + { + "name": "piers", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,man_made from planet_osm_line where man_made in ('pier','breakwater','groyne')) as piers", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "piers", + "advanced": {} + }, + { + "name": "locks", + "srs-name": "900913", + "geometry": "point", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,waterway from planet_osm_point where waterway='lock_gate') as locks", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "locks", + "advanced": {} + }, + { + "name": "buildings-lz", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,building,railway,amenity from planet_osm_polygon\n where railway='station'\n or building in ('station','supermarket')\n or amenity='place_of_worship'\n order by z_order,way_area desc) as buildings_lz", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "buildings-lz", + "advanced": {} + }, + { + "name": "buildings", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,aeroway,\n case\n when building in ('garage','roof','garages','service','shed','shelter','cabin','storage_tank','tank','support','glasshouse','greenhouse','mobile_home','kiosk','silo','canopy','tent') then 'INT-light'::text\n else building\n end as building\n from planet_osm_polygon\n where (building is not null\n and building not in ('no','station','supermarket','planned')\n and (railway is null or railway != 'station')\n and (amenity is null or amenity != 'place_of_worship'))\n or aeroway = 'terminal'\n order by z_order,way_area desc) as buildings", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "buildings", + "advanced": {} + }, + { + "name": "tunnels", + "srs-name": "900913", + "geometry": "linestring", + "class": "tunnels-fill tunnels-casing access directions", + "id": "tunnels", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes'))) as features order by layernotnull,prio) as tunnels", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], "properties": { "group-by": "layernotnull" - } - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way from planet_osm_line where \"historic\"='citywalls') as citywalls", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "citywalls", - "class": "", - "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", - "advanced": {}, - "name": "citywalls" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way from planet_osm_line where \"historic\"='castle_walls') as castlewalls", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "castlewalls", - "class": "castlewalls", - "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", - "advanced": {}, - "name": "castlewalls" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way from planet_osm_polygon where \"historic\"='castle_walls') as castlewalls_poly", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "castlewalls-poly", - "class": "castlewalls", - "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", - "advanced": {}, - "name": "castlewalls-poly" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,landuse,leisure\n from planet_osm_polygon\n where (landuse = 'military') and building is null\n ) as landuse_overlay", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "landuse-overlay", - "class": "", - "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", - "advanced": {}, - "name": "landuse-overlay" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way, barrier from planet_osm_line where barrier is not null) as line_barriers", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "line-barriers", - "class": "barriers", - "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", - "advanced": {}, - "name": "line-barriers" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,\"natural\",man_made from planet_osm_line where \"natural\" = 'cliff' or man_made = 'embankment') as cliffs", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "cliffs", - "class": "", - "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", - "advanced": {}, - "name": "cliffs" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,barrier from planet_osm_polygon where barrier is not null) as area_barriers", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "area-barriers", - "class": "barriers", - "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", - "advanced": {}, - "name": "area-barriers" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,\"natural\" from planet_osm_line where \"natural\" = 'tree_row') as tree_row", - "extent": "-20037508,-19929239,20037508,19929239", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "tree-row", - "class": "", - "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", - "advanced": {}, - "name": "tree-row" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -84.96651228427099, - 179.99999692067183, - 84.96651228427098 - ], - "Datasource": { - "type": "postgis", - "table": "(select way from planet_osm_line where route='ferry' ) as ferry_routes", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "ferry-routes", - "class": "", - "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", - "advanced": {}, - "name": "ferry-routes" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_casing", - "extent": "-20037508,-19929239,20037508,19929239", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "turning-circle-casing", - "class": "", - "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", - "advanced": {}, - "name": "turning-circle-casing" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "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\n where highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform')\n or railway in ('platform')\n order by z_order,way_area desc) as highway_area_casing", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "highway-area-casing", - "class": "", - "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", - "advanced": {}, - "name": "highway-area-casing" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_casing", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "roads-casing", - "class": "roads-casing", - "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", - "advanced": {}, - "name": "roads-casing" - }, - { - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "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\n where highway in ('residential','unclassified','pedestrian','service','footway','living_street','track','path','platform','services')\n or railway in ('platform')\n or aeroway in ('runway','taxiway','helipad')\n order by z_order,way_area desc) as highway_area_fill", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "highway-area-fill", - "class": "", - "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", - "advanced": {}, - "name": "highway-area-fill" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_fill", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "roads-fill", - "class": "roads-fill access directions", - "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", - "advanced": {}, - "name": "roads-fill" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_fill", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "turning-circle-fill", - "class": "", - "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", - "advanced": {}, - "name": "turning-circle-fill" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,aerialway from planet_osm_line where aerialway is not null) as aerialways", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "aerialways", - "class": "", - "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", - "advanced": {}, - "name": "aerialways" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "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,tunnel\n from planet_osm_roads\n where highway is not null\n or (railway is not null and railway!='preserved' and (service is null or service not in ('spur','siding','yard')))\n order by z_order\n ) as roads_low_zoom", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "roads-low-zoom", - "class": "", - "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", - "advanced": {}, - "name": "roads-low-zoom" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,waterway,name,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", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "waterway-bridges", - "class": "water-lines", - "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", - "advanced": {}, - "name": "waterway-bridges" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where bridge in ('yes','viaduct')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct'))) as features order by layernotnull,prio) as bridges", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "bridges", - "class": "bridges-fill bridges-casing access directions", - "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", - "advanced": {}, - "name": "bridges", + }, + "advanced": {} + }, + { + "name": "citywalls", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way from planet_osm_line where \"historic\"='citywalls') as citywalls", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "citywalls", + "advanced": {} + }, + { + "name": "castlewalls", + "srs-name": "900913", + "geometry": "linestring", + "class": "castlewalls", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way from planet_osm_line where \"historic\"='castle_walls') as castlewalls", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "castlewalls", + "advanced": {} + }, + { + "name": "castlewalls-poly", + "srs-name": "900913", + "geometry": "polygon", + "class": "castlewalls", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way from planet_osm_polygon where \"historic\"='castle_walls') as castlewalls_poly", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "castlewalls-poly", + "advanced": {} + }, + { + "name": "landuse-overlay", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,landuse,leisure\n from planet_osm_polygon\n where (landuse = 'military') and building is null\n ) as landuse_overlay", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "landuse-overlay", + "advanced": {} + }, + { + "name": "line-barriers", + "srs-name": "900913", + "geometry": "linestring", + "class": "barriers", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way, barrier from planet_osm_line where barrier is not null) as line_barriers", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "line-barriers", + "advanced": {} + }, + { + "name": "cliffs", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,\"natural\",man_made from planet_osm_line where \"natural\" = 'cliff' or man_made = 'embankment') as cliffs", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "cliffs", + "advanced": {} + }, + { + "name": "area-barriers", + "srs-name": "900913", + "geometry": "polygon", + "class": "barriers", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,barrier from planet_osm_polygon where barrier is not null) as area_barriers", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "area-barriers", + "advanced": {} + }, + { + "name": "tree-row", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-19929239,20037508,19929239", + "table": "(select way,\"natural\" from planet_osm_line where \"natural\" = 'tree_row') as tree_row", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "tree-row", + "advanced": {} + }, + { + "name": "ferry-routes", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way from planet_osm_line where route='ferry' ) as ferry_routes", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "ferry-routes", + "advanced": {} + }, + { + "name": "turning-circle-casing", + "srs-name": "900913", + "geometry": "point", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-19929239,20037508,19929239", + "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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_casing", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "turning-circle-casing", + "advanced": {} + }, + { + "name": "highway-area-casing", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select 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\n where highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform')\n or railway in ('platform')\n order by z_order,way_area desc) as highway_area_casing", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "highway-area-casing", + "advanced": {} + }, + { + "name": "roads-casing", + "srs-name": "900913", + "geometry": "linestring", + "id": "roads-casing", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_casing", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "class": "roads-casing", + "advanced": {} + }, + { + "name": "highway-area-fill", + "srs-name": "900913", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select 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\n where highway in ('residential','unclassified','pedestrian','service','footway','living_street','track','path','platform','services')\n or railway in ('platform')\n or aeroway in ('runway','taxiway','helipad')\n order by z_order,way_area desc) as highway_area_fill", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "highway-area-fill", + "advanced": {} + }, + { + "name": "roads-fill", + "srs-name": "900913", + "geometry": "linestring", + "class": "roads-fill access directions", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_fill", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "roads-fill", + "advanced": {} + }, + { + "name": "turning-circle-fill", + "srs-name": "900913", + "geometry": "point", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select 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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_fill", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "turning-circle-fill", + "advanced": {} + }, + { + "name": "aerialways", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,aerialway from planet_osm_line where aerialway is not null) as aerialways", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "aerialways", + "advanced": {} + }, + { + "name": "roads-low-zoom", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select 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,tunnel\n from planet_osm_roads\n where highway is not null\n or (railway is not null and railway!='preserved' and (service is null or service not in ('spur','siding','yard')))\n order by z_order\n ) as roads_low_zoom", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "roads-low-zoom", + "advanced": {} + }, + { + "name": "waterway-bridges", + "srs-name": "900913", + "geometry": "linestring", + "class": "water-lines", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,waterway,name,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", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "waterway-bridges", + "advanced": {} + }, + { + "name": "bridges", + "srs-name": "900913", + "geometry": "linestring", + "class": "bridges-fill bridges-casing access directions", + "id": "bridges", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where bridge in ('yes','viaduct')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct'))) as features order by layernotnull,prio) as bridges", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], "properties": { "group-by": "layernotnull" - } - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way from planet_osm_line where highway='bus_guideway' and (tunnel is null or tunnel != 'yes')) as guideways", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "guideways", - "class": "", - "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", - "advanced": {}, - "name": "guideways" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('0','1','2','3','4')\n ) as admin_01234", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "admin-01234", - "class": "", - "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", - "advanced": {}, - "name": "admin-01234" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('5','6','7','8')\n ) as admin_5678", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "admin-5678", - "class": "", - "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", - "advanced": {}, - "name": "admin-5678" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('9', '10')\n ) as admin_other", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "admin-other", - "class": "", - "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", - "advanced": {}, - "name": "admin-other" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way from planet_osm_line where \"power\"='minor_line') as power_minorline", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "power-minorline", - "class": "", - "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", - "advanced": {}, - "name": "power-minorline" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way from planet_osm_line where \"power\"='line') as power_line", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "power-line", - "class": "", - "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", - "advanced": {}, - "name": "power-line" - }, - { - "geometry": "point", - "extent": [ - -179.58997888396897, - -85.051, - 179.38330358817018, - 82.48332318035943 - ], - "id": "nepopulated", - "class": "", - "Datasource": { - "file": "data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp", - "type": "shape", + }, + "advanced": {} + }, + { + "name": "guideways", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way from planet_osm_line where highway='bus_guideway' and (tunnel is null or tunnel != 'yes')) as guideways", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "guideways", + "advanced": {} + }, + { + "name": "admin-01234", + "srs-name": "900913", + "geometry": "linestring", + "id": "admin-01234", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('0','1','2','3','4')\n ) as admin_01234", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "class": "", + "advanced": {} + }, + { + "name": "admin-5678", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('5','6','7','8')\n ) as admin_5678", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "admin-5678", + "advanced": {} + }, + { + "name": "admin-other", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('9', '10')\n ) as admin_other", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "admin-other", + "advanced": {} + }, + { + "name": "power-minorline", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way from planet_osm_line where \"power\"='minor_line') as power_minorline", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "power-minorline", + "advanced": {} + }, + { + "name": "power-line", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way from planet_osm_line where \"power\"='line') as power_line", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "power-line", + "advanced": {} + }, + { + "name": "nepopulated", + "srs-name": "WGS84", + "geometry": "point", + "class": "", + "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", + "Datasource": { + "type": "shape", + "file": "data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp", "encoding": "windows-1252" - }, - "srs-name": "WGS84", - "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "nepopulated", "advanced": { "encoding": "windows-1252" - }, - "name": "nepopulated" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,place,name,ref\n from planet_osm_point\n where place in ('country','state')\n ) as placenames_large", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "placenames-large", - "class": "country state", - "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", - "advanced": {}, - "name": "placenames-large" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,place,name,ref\n from planet_osm_point\n where place in ('city','town') and capital='yes'\n ) as placenames_capital", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "placenames-capital", - "class": "", - "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", - "advanced": {}, - "name": "placenames-capital" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,place,name\n from planet_osm_point\n where place in ('city','town')\n and (capital is null or capital != 'yes')\n ) as placenames_medium", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "placenames-medium", - "class": "", - "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", - "advanced": {}, - "name": "placenames-medium" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,place,name\n from planet_osm_point\n where place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n ) as placenames_small", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "placenames-small", - "class": "", - "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", - "advanced": {}, - "name": "placenames-small" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,name,railway,aerialway,disused\n from planet_osm_point\n where railway in ('station','halt','tram_stop','subway_entrance')\n or aerialway='station'\n ) as stations", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "stations", - "class": "stations", - "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", - "advanced": {}, - "name": "stations" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,name,railway,aerialway,disused\n from planet_osm_polygon\n where railway in ('station','halt','tram_stop')\n or aerialway='station'\n ) as stations_poly", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "stations-poly", - "class": "stations", - "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", - "advanced": {}, - "name": "stations-poly" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,name,way_area\n from planet_osm_polygon\n where \"natural\"='glacier' and building is null\n order by way_area desc\n ) as glaciers_text", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "glaciers-text", - "class": "", - "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", - "advanced": {}, - "name": "glaciers-text" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select *\n from planet_osm_point\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n or railway='level_crossing'\n ) as amenity_symbols", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "amenity-symbols", - "class": "symbols", - "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", - "advanced": {}, - "name": "amenity-symbols" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select *\n from planet_osm_polygon\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree')\n or railway='level_crossing'\n ) as amenity_symbols_poly", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "amenity-symbols-poly", - "class": "symbols", - "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", - "advanced": {}, - "name": "amenity-symbols-poly" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "amenity-points-poly", - "class": "points", - "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", - "advanced": {}, - "name": "amenity-points-poly" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "amenity-points", - "class": "points", - "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", - "advanced": {}, - "name": "amenity-points" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way from planet_osm_point where power='tower') as power_towers", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "power-towers", - "class": "", - "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", - "advanced": {}, - "name": "power-towers" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way from planet_osm_point where power='pole') as power_poles", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "power-poles", - "class": "", - "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", - "advanced": {}, - "name": "power-poles" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_roads\n WHERE highway IN ('motorway','trunk','primary','secondary')\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "roads-text-ref-low-zoom", - "class": "", - "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", - "advanced": {}, - "name": "roads-text-ref-low-zoom" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,highway,junction,ref,name\n from planet_osm_point\n where highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes'\n ) as junctions", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "junctions", - "class": "", - "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", - "advanced": {}, - "name": "junctions" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n COALESCE(highway, aeroway) AS highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_line\n WHERE (highway IN ('motorway','trunk','primary','secondary','tertiary','unclassified','residential') OR aeroway IN ('runway','taxiway'))\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "roads-text-ref", - "class": "", - "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", - "advanced": {}, - "name": "roads-text-ref" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way, way_area/(!pixel_width!*!pixel_height!) AS way_pixels, highway, name\n from planet_osm_polygon\n where highway in ('residential','unclassified','pedestrian','service','footway','cycleway','living_street','track','path','platform') or railway in ('platform') and name is not null\n ) as roads_area_text_name", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "roads-area-text-name", - "class": "", - "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", - "advanced": {}, - "name": "roads-area-text-name" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way, case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end, name\n from planet_osm_line\n 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','proposed') \n and name is not null\n ) as roads_text_name", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "roads-text-name", - "class": "", - "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", - "advanced": {}, - "name": "roads-text-name" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way, highway, name\n from planet_osm_line\n where highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n and name is not null\n ) as paths_text_name", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "paths-text-name", - "class": "", - "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", - "advanced": {}, - "name": "paths-text-name" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "text-poly", - "class": "text", - "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", - "advanced": {}, - "name": "text-poly" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "text", - "class": "text", - "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", - "advanced": {}, - "name": "text" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select name, way, way_area from planet_osm_polygon where building is not null and building not in ('no','station','supermarket')) as building_text", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "building-text", - "class": "", - "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", - "advanced": {}, - "name": "building-text" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way from planet_osm_line where \"addr:interpolation\" is not null) as interpolation", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "interpolation", - "class": "", - "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", - "advanced": {}, - "name": "interpolation" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,\"addr:housenumber\" from planet_osm_polygon where \"addr:housenumber\" is not null and building is not null\n union\n select way,\"addr:housenumber\" from planet_osm_point where \"addr:housenumber\" is not null\n ) as housenumbers", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "housenumbers", - "class": "", - "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", - "advanced": {}, - "name": "housenumbers" - }, - { - "geometry": "point", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,\"addr:housename\" from planet_osm_polygon where \"addr:housename\" is not null and building is not null\n union\n select way,\"addr:housename\" from planet_osm_point where \"addr:housename\" is not null\n ) as housenames", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "housenames", - "class": "", - "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", - "advanced": {}, - "name": "housenames" - }, - { - "geometry": "linestring", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n order by z_order\n ) as water_lines_text", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "water-lines-text", - "class": "", - "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", - "advanced": {}, - "name": "water-lines-text" - }, - { - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "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')) as admin_text", - "key_field": "", - "geometry_field": "way", - "extent_cache": "custom", - "extent": "-20037508,-20037508,20037508,20037508", - "dbname": "gis" - }, - "id": "admin-text", - "class": "", - "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", - "advanced": {}, - "name": "admin-text", - "geometry": "linestring" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,way_area,name,boundary from planet_osm_polygon where (boundary='national_park' or leisure='nature_reserve') and building is null) as national_park_boundaries", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "nature-reserve-boundaries", - "class": "", - "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", - "advanced": {}, - "name": "nature-reserve-boundaries" - }, - { - "geometry": "polygon", - "extent": [ - -179.99999692067183, - -85.05112877980659, - 179.99999692067183, - 85.05112877980659 - ], - "Datasource": { - "type": "postgis", - "table": "(select way,name,tourism from planet_osm_polygon where tourism='theme_park') as theme_park", - "extent": "-20037508,-20037508,20037508,20037508", - "key_field": "", - "geometry_field": "way", - "dbname": "gis" - }, - "id": "theme-park", - "class": "", - "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", - "advanced": {}, - "name": "theme-park" + } + }, + { + "name": "placenames-large", + "srs-name": "900913", + "geometry": "point", + "class": "country state", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,place,name,ref\n from planet_osm_point\n where place in ('country','state')\n ) as placenames_large", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "placenames-large", + "advanced": {} + }, + { + "name": "placenames-capital", + "srs-name": "900913", + "geometry": "point", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,place,name,ref\n from planet_osm_point\n where place in ('city','town') and capital='yes'\n ) as placenames_capital", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "placenames-capital", + "advanced": {} + }, + { + "name": "placenames-medium", + "srs-name": "900913", + "geometry": "point", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,place,name\n from planet_osm_point\n where place in ('city','town')\n and (capital is null or capital != 'yes')\n ) as placenames_medium", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "placenames-medium", + "advanced": {} + }, + { + "name": "placenames-small", + "srs-name": "900913", + "geometry": "point", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,place,name\n from planet_osm_point\n where place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n ) as placenames_small", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "placenames-small", + "advanced": {} + }, + { + "name": "stations", + "srs-name": "900913", + "geometry": "point", + "class": "stations", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,name,railway,aerialway,disused\n from planet_osm_point\n where railway in ('station','halt','tram_stop','subway_entrance')\n or aerialway='station'\n ) as stations", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "stations", + "advanced": {} + }, + { + "name": "stations-poly", + "srs-name": "900913", + "geometry": "polygon", + "class": "stations", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,name,railway,aerialway,disused\n from planet_osm_polygon\n where railway in ('station','halt','tram_stop')\n or aerialway='station'\n ) as stations_poly", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "stations-poly", + "advanced": {} + }, + { + "name": "glaciers-text", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,name,way_area\n from planet_osm_polygon\n where \"natural\"='glacier' and building is null\n order by way_area desc\n ) as glaciers_text", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "glaciers-text", + "advanced": {} + }, + { + "name": "amenity-symbols", + "srs-name": "900913", + "geometry": "point", + "class": "symbols", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select *\n from planet_osm_point\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n or railway='level_crossing'\n ) as amenity_symbols", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "amenity-symbols", + "advanced": {} + }, + { + "name": "amenity-symbols-poly", + "srs-name": "900913", + "geometry": "polygon", + "class": "symbols", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select *\n from planet_osm_polygon\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree')\n or railway='level_crossing'\n ) as amenity_symbols_poly", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "amenity-symbols-poly", + "advanced": {} + }, + { + "name": "amenity-points-poly", + "srs-name": "900913", + "geometry": "polygon", + "class": "points", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "amenity-points-poly", + "advanced": {} + }, + { + "name": "amenity-points", + "srs-name": "900913", + "geometry": "point", + "class": "points", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "amenity-points", + "advanced": {} + }, + { + "name": "power-towers", + "srs-name": "900913", + "geometry": "point", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way from planet_osm_point where power='tower') as power_towers", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "power-towers", + "advanced": {} + }, + { + "name": "power-poles", + "srs-name": "900913", + "geometry": "point", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way from planet_osm_point where power='pole') as power_poles", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "power-poles", + "advanced": {} + }, + { + "name": "roads-text-ref-low-zoom", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_roads\n WHERE highway IN ('motorway','trunk','primary','secondary')\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "roads-text-ref-low-zoom", + "advanced": {} + }, + { + "name": "junctions", + "srs-name": "900913", + "geometry": "point", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,highway,junction,ref,name\n from planet_osm_point\n where highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes'\n ) as junctions", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "junctions", + "advanced": {} + }, + { + "name": "roads-text-ref", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n COALESCE(highway, aeroway) AS highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_line\n WHERE (highway IN ('motorway','trunk','primary','secondary','tertiary','unclassified','residential') OR aeroway IN ('runway','taxiway'))\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "roads-text-ref", + "advanced": {} + }, + { + "name": "roads-area-text-name", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way, way_area/(!pixel_width!*!pixel_height!) AS way_pixels, highway, name\n from planet_osm_polygon\n where highway in ('residential','unclassified','pedestrian','service','footway','cycleway','living_street','track','path','platform') or railway in ('platform') and name is not null\n ) as roads_area_text_name", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "roads-area-text-name", + "advanced": {} + }, + { + "name": "roads-text-name", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way, case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end, name\n from planet_osm_line\n 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','proposed') \n and name is not null\n ) as roads_text_name", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "roads-text-name", + "advanced": {} + }, + { + "name": "paths-text-name", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way, highway, name\n from planet_osm_line\n where highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n and name is not null\n ) as paths_text_name", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "paths-text-name", + "advanced": {} + }, + { + "name": "text-poly", + "srs-name": "900913", + "geometry": "polygon", + "class": "text", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "text-poly", + "advanced": {} + }, + { + "name": "text", + "srs-name": "900913", + "geometry": "point", + "class": "text", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "text", + "advanced": {} + }, + { + "name": "building-text", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select name, way, way_area from planet_osm_polygon where building is not null and building not in ('no','station','supermarket')) as building_text", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "building-text", + "advanced": {} + }, + { + "name": "interpolation", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way from planet_osm_line where \"addr:interpolation\" is not null) as interpolation", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "interpolation", + "advanced": {} + }, + { + "name": "housenumbers", + "srs-name": "900913", + "geometry": "point", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,\"addr:housenumber\" from planet_osm_polygon where \"addr:housenumber\" is not null and building is not null\n union\n select way,\"addr:housenumber\" from planet_osm_point where \"addr:housenumber\" is not null\n ) as housenumbers", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "housenumbers", + "advanced": {} + }, + { + "name": "housenames", + "srs-name": "900913", + "geometry": "point", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,\"addr:housename\" from planet_osm_polygon where \"addr:housename\" is not null and building is not null\n union\n select way,\"addr:housename\" from planet_osm_point where \"addr:housename\" is not null\n ) as housenames", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "housenames", + "advanced": {} + }, + { + "name": "water-lines-text", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n order by z_order\n ) as water_lines_text", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "water-lines-text", + "advanced": {} + }, + { + "name": "admin-text", + "srs-name": "900913", + "geometry": "linestring", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent_cache": "custom", + "extent": "-20037508,-20037508,20037508,20037508", + "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')) as admin_text", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "admin-text", + "advanced": {} + }, + { + "name": "nature-reserve-boundaries", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,way_area,name,boundary from planet_osm_polygon where (boundary='national_park' or leisure='nature_reserve') and building is null) as national_park_boundaries", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "nature-reserve-boundaries", + "advanced": {} + }, + { + "name": "theme-park", + "srs-name": "900913", + "geometry": "polygon", + "class": "", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Datasource": { + "extent": "-20037508,-20037508,20037508,20037508", + "table": "(select way,name,tourism from planet_osm_polygon where tourism='theme_park') as theme_park", + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "key_field": "" + }, + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "id": "theme-park", + "advanced": {} + } + ], + "scale": 1, + "center": [ + 0, + 0, + 4 + ], + "format": "png", + "_parts": { + "extents": { + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "srs-name": "900913" + }, + "extents84": { + "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", + "extent": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "srs-name": "WGS84" } - ], - "scale": 1, - "metatile": 2, - "name": "OpenStreetMap Carto", + }, + "metatile": 2, + "bounds": [ + -180, + -85.05112877980659, + 180, + 85.05112877980659 + ], + "name": "OpenStreetMap Carto", + "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", + "Stylesheet": [ + "style.mss", + "shapefiles.mss", + "landcover.mss", + "water.mss", + "water-features.mss", + "roads.mss", + "power.mss", + "citywalls.mss", + "placenames.mss", + "buildings.mss", + "amenity-symbols.mss", + "stations.mss", + "amenity-points.mss", + "ferry-routes.mss", + "aerialways.mss", + "admin.mss", + "addressing.mss" + ], + "minzoom": 0, + "maxzoom": 22, "description": "A faithful reimplementation of the standard OpenStreetMap style" -} +} \ No newline at end of file diff --git a/project.yaml b/project.yaml new file mode 100644 index 0000000000..dd8f5363e6 --- /dev/null +++ b/project.yaml @@ -0,0 +1,1003 @@ +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" + +Stylesheet: + - "style.mss" + - "shapefiles.mss" + - "landcover.mss" + - "water.mss" + - "water-features.mss" + - "roads.mss" + - "power.mss" + - "citywalls.mss" + - "placenames.mss" + - "buildings.mss" + - "amenity-symbols.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: {} + - id: "coast-poly" + name: "coast-poly" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + file: "data/land-polygons-split-3857/land_polygons.shp" + type: "shape" + 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" + 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" + advanced: {} + + - id: "landcover" + name: "landcover" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(select way, name, religion,\ncoalesce (aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) as feature from (\nselect way, COALESCE(name,'') AS name, \n('aeroway_' || (case when aeroway in ('apron', 'aerodrome') then aeroway else null end)) as aeroway,\n('amenity_' || (case when amenity in ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity,\n('landuse_' || (case when landuse in ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') then landuse else null end)) as landuse,\n('leisure_' || (case when leisure in ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') then leisure else null end)) as leisure,\n('military_' || (case when military in ('barracks', 'danger_area') then military else null end)) as military,\n('natural_' || (case when \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') then \"natural\" else null end)) as \"natural\",\n('power_' || (case when power in ('station','sub_station','substation','generator') then power else null end)) as power,\n('tourism_' || (case when tourism in ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') then tourism else null end)) as tourism,\n('highway_' || (case when highway in ('services', 'rest_area') then highway else null end)) as highway,\ncase when religion in ('christian','jewish') then religion else 'INT-generic'::text end as religion\n from planet_osm_polygon\n where landuse is not null\n or leisure is not null\n or aeroway in ('apron','aerodrome')\n or amenity in ('parking','university','college','school','hospital','kindergarten','grave_yard')\n or military in ('barracks','danger_area')\n or \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub')\n or power in ('station','sub_station','substation','generator')\n or tourism in ('attraction','camp_site','caravan_site','picnic_site','zoo')\n or highway in ('services','rest_area')\n order by z_order,way_area desc\n ) as landcover\n) as features" + extent: "-20037508,-19929239,20037508,19929239" + key_field: "" + geometry_field: "" + dbname: "gis" + advanced: {} + - id: "landcover-line" + name: "landcover-line" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way\nfrom planet_osm_line\nwhere man_made='cutline'\n) as landcover_line" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + + advanced: {} + - id: "water-lines-casing" + name: "water-lines-casing" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,waterway,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel \n from planet_osm_line\n where waterway in ('stream','drain','ditch')\n and (tunnel is null or tunnel != 'yes')\n ) as water_lines_casing" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "water-lines-low-zoom" + name: "water-lines-low-zoom" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,waterway\n from planet_osm_line\n where waterway='river'\n ) as water_lines_low_zoom" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "water-areas" + name: "water-areas" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(SELECT\n way, \"natural\", waterway, landuse, name, way_area/(!pixel_width!*!pixel_height!) AS way_pixels\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir','basin')\n OR \"natural\" IN ('lake','water','land','glacier','mud'))\n AND building IS NULL\n AND way_area/(!pixel_width!*!pixel_height!) > 0.01\n ORDER BY z_order, way_area) AS water_areas" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "water-areas-overlay" + name: "water-areas-overlay" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,\"natural\"\n from planet_osm_polygon\n where \"natural\" in ('marsh','wetland') and building is null\n order by z_order,way_area desc\n ) as water_areas_overlay" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "water-lines" + name: "water-lines" + class: "water-lines" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel, 'no' as bridge\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n and (bridge is null or bridge not in ('yes','aqueduct'))\n order by z_order\n ) as water_lines" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "dam" + name: "dam" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,name from planet_osm_line where waterway='dam') as dam" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "marinas-area" + name: "marinas-area" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(select way from planet_osm_polygon where leisure ='marina') as marinas_area" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "piers-area" + name: "piers-area" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,man_made from planet_osm_polygon where man_made in ('pier','breakwater','groyne')) as piers_area" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "piers" + name: "piers" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,man_made from planet_osm_line where man_made in ('pier','breakwater','groyne')) as piers" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "locks" + name: "locks" + class: "" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,waterway from planet_osm_point where waterway='lock_gate') as locks" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "buildings-lz" + name: "buildings-lz" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,building,railway,amenity from planet_osm_polygon\n where railway='station'\n or building in ('station','supermarket')\n or amenity='place_of_worship'\n order by z_order,way_area desc) as buildings_lz" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "buildings" + name: "buildings" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,aeroway,\n case\n when building in ('garage','roof','garages','service','shed','shelter','cabin','storage_tank','tank','support','glasshouse','greenhouse','mobile_home','kiosk','silo','canopy','tent') then 'INT-light'::text\n else building\n end as building\n from planet_osm_polygon\n where (building is not null\n and building not in ('no','station','supermarket','planned')\n and (railway is null or railway != 'station')\n and (amenity is null or amenity != 'place_of_worship'))\n or aeroway = 'terminal'\n order by z_order,way_area desc) as buildings" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "tunnels" + name: "tunnels" + class: "tunnels-fill tunnels-casing access directions" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes'))) as features order by layernotnull,prio) as tunnels" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + properties: + group-by: "layernotnull" + advanced: {} + - id: "citywalls" + name: "citywalls" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way from planet_osm_line where \"historic\"='citywalls') as citywalls" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "castlewalls" + name: "castlewalls" + class: "castlewalls" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way from planet_osm_line where \"historic\"='castle_walls') as castlewalls" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "castlewalls-poly" + name: "castlewalls-poly" + class: "castlewalls" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(select way from planet_osm_polygon where \"historic\"='castle_walls') as castlewalls_poly" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "landuse-overlay" + name: "landuse-overlay" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,landuse,leisure\n from planet_osm_polygon\n where (landuse = 'military') and building is null\n ) as landuse_overlay" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "line-barriers" + name: "line-barriers" + class: "barriers" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way, barrier from planet_osm_line where barrier is not null) as line_barriers" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "cliffs" + name: "cliffs" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,\"natural\",man_made from planet_osm_line where \"natural\" = 'cliff' or man_made = 'embankment') as cliffs" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "area-barriers" + name: "area-barriers" + class: "barriers" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,barrier from planet_osm_polygon where barrier is not null) as area_barriers" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "tree-row" + name: "tree-row" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,\"natural\" from planet_osm_line where \"natural\" = 'tree_row') as tree_row" + extent: "-20037508,-19929239,20037508,19929239" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "ferry-routes" + name: "ferry-routes" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way from planet_osm_line where route='ferry' ) as ferry_routes" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "turning-circle-casing" + name: "turning-circle-casing" + class: "" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + 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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_casing" + extent: "-20037508,-19929239,20037508,19929239" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "highway-area-casing" + name: "highway-area-casing" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + 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\n where highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform')\n or railway in ('platform')\n order by z_order,way_area desc) as highway_area_casing" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - name: "roads-casing" + id: "roads-casing" + class: "roads-casing" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_casing" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "highway-area-fill" + name: "highway-area-fill" + class: "" + # FIXME: No geometry? + <<: *extents + Datasource: + type: "postgis" + 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\n where highway in ('residential','unclassified','pedestrian','service','footway','living_street','track','path','platform','services')\n or railway in ('platform')\n or aeroway in ('runway','taxiway','helipad')\n order by z_order,way_area desc) as highway_area_fill" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "roads-fill" + name: "roads-fill" + class: "roads-fill access directions" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_fill" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "turning-circle-fill" + name: "turning-circle-fill" + class: "" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + 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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_fill" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "aerialways" + name: "aerialways" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,aerialway from planet_osm_line where aerialway is not null) as aerialways" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "roads-low-zoom" + name: "roads-low-zoom" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + 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,tunnel\n from planet_osm_roads\n where highway is not null\n or (railway is not null and railway!='preserved' and (service is null or service not in ('spur','siding','yard')))\n order by z_order\n ) as roads_low_zoom" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "waterway-bridges" + name: "waterway-bridges" + class: "water-lines" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,waterway,name,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" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "bridges" + name: "bridges" + class: "bridges-fill bridges-casing access directions" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where bridge in ('yes','viaduct')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct'))) as features order by layernotnull,prio) as bridges" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + properties: + group-by: "layernotnull" + advanced: {} + - id: "guideways" + name: "guideways" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way from planet_osm_line where highway='bus_guideway' and (tunnel is null or tunnel != 'yes')) as guideways" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - name: "admin-01234" + id: "admin-01234" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('0','1','2','3','4')\n ) as admin_01234" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "admin-5678" + name: "admin-5678" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('5','6','7','8')\n ) as admin_5678" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "admin-other" + name: "admin-other" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('9', '10')\n ) as admin_other" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "power-minorline" + name: "power-minorline" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way from planet_osm_line where \"power\"='minor_line') as power_minorline" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "power-line" + name: "power-line" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way from planet_osm_line where \"power\"='line') as power_line" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "nepopulated" + name: "nepopulated" + class: "" + geometry: "point" + <<: *extents84 + Datasource: + file: "data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp" + type: "shape" + encoding: "windows-1252" + advanced: + encoding: "windows-1252" + - id: "placenames-large" + name: "placenames-large" + class: "country state" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,place,name,ref\n from planet_osm_point\n where place in ('country','state')\n ) as placenames_large" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "placenames-capital" + name: "placenames-capital" + class: "" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,place,name,ref\n from planet_osm_point\n where place in ('city','town') and capital='yes'\n ) as placenames_capital" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "placenames-medium" + name: "placenames-medium" + class: "" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,place,name\n from planet_osm_point\n where place in ('city','town')\n and (capital is null or capital != 'yes')\n ) as placenames_medium" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "placenames-small" + name: "placenames-small" + class: "" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,place,name\n from planet_osm_point\n where place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n ) as placenames_small" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "stations" + class: "stations" + name: "stations" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,name,railway,aerialway,disused\n from planet_osm_point\n where railway in ('station','halt','tram_stop','subway_entrance')\n or aerialway='station'\n ) as stations" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "stations-poly" + name: "stations-poly" + class: "stations" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,name,railway,aerialway,disused\n from planet_osm_polygon\n where railway in ('station','halt','tram_stop')\n or aerialway='station'\n ) as stations_poly" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "glaciers-text" + name: "glaciers-text" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,name,way_area\n from planet_osm_polygon\n where \"natural\"='glacier' and building is null\n order by way_area desc\n ) as glaciers_text" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "amenity-symbols" + name: "amenity-symbols" + class: "symbols" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: "(select *\n from planet_osm_point\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n or railway='level_crossing'\n ) as amenity_symbols" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "amenity-symbols-poly" + name: "amenity-symbols-poly" + class: "symbols" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(select *\n from planet_osm_polygon\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree')\n or railway='level_crossing'\n ) as amenity_symbols_poly" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "amenity-points-poly" + name: "amenity-points-poly" + class: "points" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "amenity-points" + name: "amenity-points" + class: "points" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "power-towers" + name: "power-towers" + class: "" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: "(select way from planet_osm_point where power='tower') as power_towers" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "power-poles" + name: "power-poles" + class: "" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: "(select way from planet_osm_point where power='pole') as power_poles" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "roads-text-ref-low-zoom" + name: "roads-text-ref-low-zoom" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_roads\n WHERE highway IN ('motorway','trunk','primary','secondary')\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "junctions" + name: "junctions" + class: "" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,highway,junction,ref,name\n from planet_osm_point\n where highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes'\n ) as junctions" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "roads-text-ref" + name: "roads-text-ref" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n COALESCE(highway, aeroway) AS highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_line\n WHERE (highway IN ('motorway','trunk','primary','secondary','tertiary','unclassified','residential') OR aeroway IN ('runway','taxiway'))\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "roads-area-text-name" + name: "roads-area-text-name" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: " (select way, way_area/(!pixel_width!*!pixel_height!) AS way_pixels, highway, name\n from planet_osm_polygon\n where highway in ('residential','unclassified','pedestrian','service','footway','cycleway','living_street','track','path','platform') or railway in ('platform') and name is not null\n ) as roads_area_text_name" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "roads-text-name" + name: "roads-text-name" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: " (select way, case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end, name\n from planet_osm_line\n 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','proposed') \n and name is not null\n ) as roads_text_name" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "paths-text-name" + name: "paths-text-name" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: " (select way, highway, name\n from planet_osm_line\n where highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n and name is not null\n ) as paths_text_name" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "text-poly" + name: "text-poly" + class: "text" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "text" + name: "text" + class: "text" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "building-text" + name: "building-text" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(select name, way, way_area from planet_osm_polygon where building is not null and building not in ('no','station','supermarket')) as building_text" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "interpolation" + name: "interpolation" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: "(select way from planet_osm_line where \"addr:interpolation\" is not null) as interpolation" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "housenumbers" + name: "housenumbers" + class: "" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,\"addr:housenumber\" from planet_osm_polygon where \"addr:housenumber\" is not null and building is not null\n union\n select way,\"addr:housenumber\" from planet_osm_point where \"addr:housenumber\" is not null\n ) as housenumbers" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "housenames" + name: "housenames" + class: "" + geometry: "point" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,\"addr:housename\" from planet_osm_polygon where \"addr:housename\" is not null and building is not null\n union\n select way,\"addr:housename\" from planet_osm_point where \"addr:housename\" is not null\n ) as housenames" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "water-lines-text" + name: "water-lines-text" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + table: " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n order by z_order\n ) as water_lines_text" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "admin-text" + name: "admin-text" + class: "" + geometry: "linestring" + <<: *extents + Datasource: + type: "postgis" + 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')) as admin_text" + key_field: "" + geometry_field: "way" + extent_cache: "custom" + extent: "-20037508,-20037508,20037508,20037508" + dbname: "gis" + advanced: {} + - id: "nature-reserve-boundaries" + name: "nature-reserve-boundaries" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,way_area,name,boundary from planet_osm_polygon where (boundary='national_park' or leisure='nature_reserve') and building is null) as national_park_boundaries" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} + - id: "theme-park" + name: "theme-park" + class: "" + geometry: "polygon" + <<: *extents + Datasource: + type: "postgis" + table: "(select way,name,tourism from planet_osm_polygon where tourism='theme_park') as theme_park" + extent: "-20037508,-20037508,20037508,20037508" + key_field: "" + geometry_field: "way" + dbname: "gis" + advanced: {} From 45dbf13127a938226481d73a4ad696582d9073f8 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Tue, 9 Sep 2014 18:51:34 -0700 Subject: [PATCH 64/74] Use alias to avoid duplicating SQL connection information By using aliases, we can avoid having to specify the same information repeatedly, saving lines, avoiding mistakes, and making it easier to use a differently named database. The last is evident in that the landcover extents changed slightly in this, because they were different than all the other layers. --- project.mml | 287 ++++++++++++++++++------------------ project.yaml | 409 ++++++++++----------------------------------------- 2 files changed, 222 insertions(+), 474 deletions(-) diff --git a/project.mml b/project.mml index 91a7252592..15fac5ed6b 100644 --- a/project.mml +++ b/project.mml @@ -84,12 +84,12 @@ "class": "", "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { - "extent": "-20037508,-19929239,20037508,19929239", + "extent": "-20037508,-20037508,20037508,20037508", "table": "(select way, name, religion,\ncoalesce (aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) as feature from (\nselect way, COALESCE(name,'') AS name, \n('aeroway_' || (case when aeroway in ('apron', 'aerodrome') then aeroway else null end)) as aeroway,\n('amenity_' || (case when amenity in ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity,\n('landuse_' || (case when landuse in ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') then landuse else null end)) as landuse,\n('leisure_' || (case when leisure in ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') then leisure else null end)) as leisure,\n('military_' || (case when military in ('barracks', 'danger_area') then military else null end)) as military,\n('natural_' || (case when \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') then \"natural\" else null end)) as \"natural\",\n('power_' || (case when power in ('station','sub_station','substation','generator') then power else null end)) as power,\n('tourism_' || (case when tourism in ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') then tourism else null end)) as tourism,\n('highway_' || (case when highway in ('services', 'rest_area') then highway else null end)) as highway,\ncase when religion in ('christian','jewish') then religion else 'INT-generic'::text end as religion\n from planet_osm_polygon\n where landuse is not null\n or leisure is not null\n or aeroway in ('apron','aerodrome')\n or amenity in ('parking','university','college','school','hospital','kindergarten','grave_yard')\n or military in ('barracks','danger_area')\n or \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub')\n or power in ('station','sub_station','substation','generator')\n or tourism in ('attraction','camp_site','caravan_site','picnic_site','zoo')\n or highway in ('services','rest_area')\n order by z_order,way_area desc\n ) as landcover\n) as features", - "geometry_field": "", + "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -111,8 +111,8 @@ "table": "(select way\nfrom planet_osm_line\nwhere man_made='cutline'\n) as landcover_line", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -134,8 +134,8 @@ "table": " (select way,waterway,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel \n from planet_osm_line\n where waterway in ('stream','drain','ditch')\n and (tunnel is null or tunnel != 'yes')\n ) as water_lines_casing", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -157,8 +157,8 @@ "table": " (select way,waterway\n from planet_osm_line\n where waterway='river'\n ) as water_lines_low_zoom", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -180,8 +180,8 @@ "table": "(SELECT\n way, \"natural\", waterway, landuse, name, way_area/(!pixel_width!*!pixel_height!) AS way_pixels\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir','basin')\n OR \"natural\" IN ('lake','water','land','glacier','mud'))\n AND building IS NULL\n AND way_area/(!pixel_width!*!pixel_height!) > 0.01\n ORDER BY z_order, way_area) AS water_areas", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -203,8 +203,8 @@ "table": " (select way,\"natural\"\n from planet_osm_polygon\n where \"natural\" in ('marsh','wetland') and building is null\n order by z_order,way_area desc\n ) as water_areas_overlay", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -226,8 +226,8 @@ "table": " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel, 'no' as bridge\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n and (bridge is null or bridge not in ('yes','aqueduct'))\n order by z_order\n ) as water_lines", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -249,8 +249,8 @@ "table": "(select way,name from planet_osm_line where waterway='dam') as dam", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -272,8 +272,8 @@ "table": "(select way from planet_osm_polygon where leisure ='marina') as marinas_area", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -295,8 +295,8 @@ "table": "(select way,man_made from planet_osm_polygon where man_made in ('pier','breakwater','groyne')) as piers_area", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -318,8 +318,8 @@ "table": "(select way,man_made from planet_osm_line where man_made in ('pier','breakwater','groyne')) as piers", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -341,8 +341,8 @@ "table": "(select way,waterway from planet_osm_point where waterway='lock_gate') as locks", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -364,8 +364,8 @@ "table": " (select way,building,railway,amenity from planet_osm_polygon\n where railway='station'\n or building in ('station','supermarket')\n or amenity='place_of_worship'\n order by z_order,way_area desc) as buildings_lz", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -387,8 +387,8 @@ "table": " (select way,aeroway,\n case\n when building in ('garage','roof','garages','service','shed','shelter','cabin','storage_tank','tank','support','glasshouse','greenhouse','mobile_home','kiosk','silo','canopy','tent') then 'INT-light'::text\n else building\n end as building\n from planet_osm_polygon\n where (building is not null\n and building not in ('no','station','supermarket','planned')\n and (railway is null or railway != 'station')\n and (amenity is null or amenity != 'place_of_worship'))\n or aeroway = 'terminal'\n order by z_order,way_area desc) as buildings", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -411,8 +411,8 @@ "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes'))) as features order by layernotnull,prio) as tunnels", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -436,8 +436,8 @@ "table": "(select way from planet_osm_line where \"historic\"='citywalls') as citywalls", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -459,8 +459,8 @@ "table": "(select way from planet_osm_line where \"historic\"='castle_walls') as castlewalls", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -482,8 +482,8 @@ "table": "(select way from planet_osm_polygon where \"historic\"='castle_walls') as castlewalls_poly", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -505,8 +505,8 @@ "table": "(select way,landuse,leisure\n from planet_osm_polygon\n where (landuse = 'military') and building is null\n ) as landuse_overlay", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -528,8 +528,8 @@ "table": "(select way, barrier from planet_osm_line where barrier is not null) as line_barriers", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -551,8 +551,8 @@ "table": "(select way,\"natural\",man_made from planet_osm_line where \"natural\" = 'cliff' or man_made = 'embankment') as cliffs", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -574,8 +574,8 @@ "table": "(select way,barrier from planet_osm_polygon where barrier is not null) as area_barriers", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -597,8 +597,8 @@ "table": "(select way,\"natural\" from planet_osm_line where \"natural\" = 'tree_row') as tree_row", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -620,8 +620,8 @@ "table": "(select way from planet_osm_line where route='ferry' ) as ferry_routes", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -643,8 +643,8 @@ "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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_casing", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -666,8 +666,8 @@ "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\n where highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform')\n or railway in ('platform')\n order by z_order,way_area desc) as highway_area_casing", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -689,8 +689,8 @@ "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_casing", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -711,8 +711,8 @@ "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\n where highway in ('residential','unclassified','pedestrian','service','footway','living_street','track','path','platform','services')\n or railway in ('platform')\n or aeroway in ('runway','taxiway','helipad')\n order by z_order,way_area desc) as highway_area_fill", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -734,8 +734,8 @@ "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_fill", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -757,8 +757,8 @@ "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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_fill", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -780,8 +780,8 @@ "table": "(select way,aerialway from planet_osm_line where aerialway is not null) as aerialways", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -803,8 +803,8 @@ "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,tunnel\n from planet_osm_roads\n where highway is not null\n or (railway is not null and railway!='preserved' and (service is null or service not in ('spur','siding','yard')))\n order by z_order\n ) as roads_low_zoom", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -826,8 +826,8 @@ "table": "(select way,waterway,name,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", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -850,8 +850,8 @@ "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where bridge in ('yes','viaduct')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct'))) as features order by layernotnull,prio) as bridges", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -875,8 +875,8 @@ "table": "(select way from planet_osm_line where highway='bus_guideway' and (tunnel is null or tunnel != 'yes')) as guideways", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -898,8 +898,8 @@ "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('0','1','2','3','4')\n ) as admin_01234", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -921,8 +921,8 @@ "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('5','6','7','8')\n ) as admin_5678", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -944,8 +944,8 @@ "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('9', '10')\n ) as admin_other", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -967,8 +967,8 @@ "table": "(select way from planet_osm_line where \"power\"='minor_line') as power_minorline", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -990,8 +990,8 @@ "table": "(select way from planet_osm_line where \"power\"='line') as power_line", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1035,8 +1035,8 @@ "table": "(select way,place,name,ref\n from planet_osm_point\n where place in ('country','state')\n ) as placenames_large", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1058,8 +1058,8 @@ "table": "(select way,place,name,ref\n from planet_osm_point\n where place in ('city','town') and capital='yes'\n ) as placenames_capital", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1081,8 +1081,8 @@ "table": "(select way,place,name\n from planet_osm_point\n where place in ('city','town')\n and (capital is null or capital != 'yes')\n ) as placenames_medium", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1104,8 +1104,8 @@ "table": "(select way,place,name\n from planet_osm_point\n where place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n ) as placenames_small", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1127,8 +1127,8 @@ "table": " (select way,name,railway,aerialway,disused\n from planet_osm_point\n where railway in ('station','halt','tram_stop','subway_entrance')\n or aerialway='station'\n ) as stations", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1150,8 +1150,8 @@ "table": " (select way,name,railway,aerialway,disused\n from planet_osm_polygon\n where railway in ('station','halt','tram_stop')\n or aerialway='station'\n ) as stations_poly", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1173,8 +1173,8 @@ "table": " (select way,name,way_area\n from planet_osm_polygon\n where \"natural\"='glacier' and building is null\n order by way_area desc\n ) as glaciers_text", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1196,8 +1196,8 @@ "table": "(select *\n from planet_osm_point\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n or railway='level_crossing'\n ) as amenity_symbols", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1219,8 +1219,8 @@ "table": "(select *\n from planet_osm_polygon\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree')\n or railway='level_crossing'\n ) as amenity_symbols_poly", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1242,8 +1242,8 @@ "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1265,8 +1265,8 @@ "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1288,8 +1288,8 @@ "table": "(select way from planet_osm_point where power='tower') as power_towers", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1311,8 +1311,8 @@ "table": "(select way from planet_osm_point where power='pole') as power_poles", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1334,8 +1334,8 @@ "table": "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_roads\n WHERE highway IN ('motorway','trunk','primary','secondary')\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1357,8 +1357,8 @@ "table": " (select way,highway,junction,ref,name\n from planet_osm_point\n where highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes'\n ) as junctions", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1380,8 +1380,8 @@ "table": "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n COALESCE(highway, aeroway) AS highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_line\n WHERE (highway IN ('motorway','trunk','primary','secondary','tertiary','unclassified','residential') OR aeroway IN ('runway','taxiway'))\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1403,8 +1403,8 @@ "table": " (select way, way_area/(!pixel_width!*!pixel_height!) AS way_pixels, highway, name\n from planet_osm_polygon\n where highway in ('residential','unclassified','pedestrian','service','footway','cycleway','living_street','track','path','platform') or railway in ('platform') and name is not null\n ) as roads_area_text_name", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1426,8 +1426,8 @@ "table": " (select way, case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end, name\n from planet_osm_line\n 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','proposed') \n and name is not null\n ) as roads_text_name", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1449,8 +1449,8 @@ "table": " (select way, highway, name\n from planet_osm_line\n where highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n and name is not null\n ) as paths_text_name", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1472,8 +1472,8 @@ "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1495,8 +1495,8 @@ "table": " (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1518,8 +1518,8 @@ "table": "(select name, way, way_area from planet_osm_polygon where building is not null and building not in ('no','station','supermarket')) as building_text", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1541,8 +1541,8 @@ "table": "(select way from planet_osm_line where \"addr:interpolation\" is not null) as interpolation", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1564,8 +1564,8 @@ "table": " (select way,\"addr:housenumber\" from planet_osm_polygon where \"addr:housenumber\" is not null and building is not null\n union\n select way,\"addr:housenumber\" from planet_osm_point where \"addr:housenumber\" is not null\n ) as housenumbers", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1587,8 +1587,8 @@ "table": "(select way,\"addr:housename\" from planet_osm_polygon where \"addr:housename\" is not null and building is not null\n union\n select way,\"addr:housename\" from planet_osm_point where \"addr:housename\" is not null\n ) as housenames", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1610,8 +1610,8 @@ "table": " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n order by z_order\n ) as water_lines_text", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1634,8 +1634,8 @@ "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')) as admin_text", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1657,8 +1657,8 @@ "table": "(select way,way_area,name,boundary from planet_osm_polygon where (boundary='national_park' or leisure='nature_reserve') and building is null) as national_park_boundaries", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1680,8 +1680,8 @@ "table": "(select way,name,tourism from planet_osm_polygon where tourism='theme_park') as theme_park", "geometry_field": "way", "type": "postgis", - "dbname": "gis", - "key_field": "" + "key_field": "", + "dbname": "gis" }, "extent": [ -180, @@ -1711,6 +1711,13 @@ ], "srs-name": "900913" }, + "osm2pgsql": { + "geometry_field": "way", + "type": "postgis", + "dbname": "gis", + "extent": "-20037508,-20037508,20037508,20037508", + "key_field": "" + }, "extents84": { "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", "extent": [ diff --git a/project.yaml b/project.yaml index dd8f5363e6..1681667241 100644 --- a/project.yaml +++ b/project.yaml @@ -28,6 +28,12 @@ _parts: 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" @@ -93,12 +99,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way, name, religion,\ncoalesce (aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) as feature from (\nselect way, COALESCE(name,'') AS name, \n('aeroway_' || (case when aeroway in ('apron', 'aerodrome') then aeroway else null end)) as aeroway,\n('amenity_' || (case when amenity in ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity,\n('landuse_' || (case when landuse in ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') then landuse else null end)) as landuse,\n('leisure_' || (case when leisure in ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') then leisure else null end)) as leisure,\n('military_' || (case when military in ('barracks', 'danger_area') then military else null end)) as military,\n('natural_' || (case when \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') then \"natural\" else null end)) as \"natural\",\n('power_' || (case when power in ('station','sub_station','substation','generator') then power else null end)) as power,\n('tourism_' || (case when tourism in ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') then tourism else null end)) as tourism,\n('highway_' || (case when highway in ('services', 'rest_area') then highway else null end)) as highway,\ncase when religion in ('christian','jewish') then religion else 'INT-generic'::text end as religion\n from planet_osm_polygon\n where landuse is not null\n or leisure is not null\n or aeroway in ('apron','aerodrome')\n or amenity in ('parking','university','college','school','hospital','kindergarten','grave_yard')\n or military in ('barracks','danger_area')\n or \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub')\n or power in ('station','sub_station','substation','generator')\n or tourism in ('attraction','camp_site','caravan_site','picnic_site','zoo')\n or highway in ('services','rest_area')\n order by z_order,way_area desc\n ) as landcover\n) as features" - extent: "-20037508,-19929239,20037508,19929239" - key_field: "" - geometry_field: "" - dbname: "gis" advanced: {} - id: "landcover-line" name: "landcover-line" @@ -106,13 +108,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way\nfrom planet_osm_line\nwhere man_made='cutline'\n) as landcover_line" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" - advanced: {} - id: "water-lines-casing" name: "water-lines-casing" @@ -120,12 +117,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,waterway,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel \n from planet_osm_line\n where waterway in ('stream','drain','ditch')\n and (tunnel is null or tunnel != 'yes')\n ) as water_lines_casing" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "water-lines-low-zoom" name: "water-lines-low-zoom" @@ -133,12 +126,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,waterway\n from planet_osm_line\n where waterway='river'\n ) as water_lines_low_zoom" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "water-areas" name: "water-areas" @@ -146,12 +135,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(SELECT\n way, \"natural\", waterway, landuse, name, way_area/(!pixel_width!*!pixel_height!) AS way_pixels\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir','basin')\n OR \"natural\" IN ('lake','water','land','glacier','mud'))\n AND building IS NULL\n AND way_area/(!pixel_width!*!pixel_height!) > 0.01\n ORDER BY z_order, way_area) AS water_areas" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "water-areas-overlay" name: "water-areas-overlay" @@ -159,12 +144,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,\"natural\"\n from planet_osm_polygon\n where \"natural\" in ('marsh','wetland') and building is null\n order by z_order,way_area desc\n ) as water_areas_overlay" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "water-lines" name: "water-lines" @@ -172,12 +153,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel, 'no' as bridge\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n and (bridge is null or bridge not in ('yes','aqueduct'))\n order by z_order\n ) as water_lines" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "dam" name: "dam" @@ -185,12 +162,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,name from planet_osm_line where waterway='dam') as dam" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "marinas-area" name: "marinas-area" @@ -198,12 +171,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way from planet_osm_polygon where leisure ='marina') as marinas_area" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "piers-area" name: "piers-area" @@ -211,12 +180,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,man_made from planet_osm_polygon where man_made in ('pier','breakwater','groyne')) as piers_area" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "piers" name: "piers" @@ -224,12 +189,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,man_made from planet_osm_line where man_made in ('pier','breakwater','groyne')) as piers" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "locks" name: "locks" @@ -237,12 +198,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,waterway from planet_osm_point where waterway='lock_gate') as locks" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "buildings-lz" name: "buildings-lz" @@ -250,12 +207,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,building,railway,amenity from planet_osm_polygon\n where railway='station'\n or building in ('station','supermarket')\n or amenity='place_of_worship'\n order by z_order,way_area desc) as buildings_lz" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "buildings" name: "buildings" @@ -263,12 +216,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,aeroway,\n case\n when building in ('garage','roof','garages','service','shed','shelter','cabin','storage_tank','tank','support','glasshouse','greenhouse','mobile_home','kiosk','silo','canopy','tent') then 'INT-light'::text\n else building\n end as building\n from planet_osm_polygon\n where (building is not null\n and building not in ('no','station','supermarket','planned')\n and (railway is null or railway != 'station')\n and (amenity is null or amenity != 'place_of_worship'))\n or aeroway = 'terminal'\n order by z_order,way_area desc) as buildings" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "tunnels" name: "tunnels" @@ -276,12 +225,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes'))) as features order by layernotnull,prio) as tunnels" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" properties: group-by: "layernotnull" advanced: {} @@ -291,12 +236,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way from planet_osm_line where \"historic\"='citywalls') as citywalls" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "castlewalls" name: "castlewalls" @@ -304,12 +245,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way from planet_osm_line where \"historic\"='castle_walls') as castlewalls" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "castlewalls-poly" name: "castlewalls-poly" @@ -317,12 +254,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way from planet_osm_polygon where \"historic\"='castle_walls') as castlewalls_poly" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "landuse-overlay" name: "landuse-overlay" @@ -330,12 +263,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,landuse,leisure\n from planet_osm_polygon\n where (landuse = 'military') and building is null\n ) as landuse_overlay" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "line-barriers" name: "line-barriers" @@ -343,12 +272,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way, barrier from planet_osm_line where barrier is not null) as line_barriers" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "cliffs" name: "cliffs" @@ -356,12 +281,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,\"natural\",man_made from planet_osm_line where \"natural\" = 'cliff' or man_made = 'embankment') as cliffs" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "area-barriers" name: "area-barriers" @@ -369,12 +290,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,barrier from planet_osm_polygon where barrier is not null) as area_barriers" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "tree-row" name: "tree-row" @@ -382,7 +299,7 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,\"natural\" from planet_osm_line where \"natural\" = 'tree_row') as tree_row" extent: "-20037508,-19929239,20037508,19929239" key_field: "" @@ -395,12 +312,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way from planet_osm_line where route='ferry' ) as ferry_routes" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "turning-circle-casing" name: "turning-circle-casing" @@ -408,7 +321,7 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_casing" extent: "-20037508,-19929239,20037508,19929239" key_field: "" @@ -421,12 +334,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *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\n where highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform')\n or railway in ('platform')\n order by z_order,way_area desc) as highway_area_casing" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - name: "roads-casing" id: "roads-casing" @@ -434,12 +343,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_casing" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "highway-area-fill" name: "highway-area-fill" @@ -447,12 +352,8 @@ Layer: # FIXME: No geometry? <<: *extents Datasource: - type: "postgis" + <<: *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\n where highway in ('residential','unclassified','pedestrian','service','footway','living_street','track','path','platform','services')\n or railway in ('platform')\n or aeroway in ('runway','taxiway','helipad')\n order by z_order,way_area desc) as highway_area_fill" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "roads-fill" name: "roads-fill" @@ -460,12 +361,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_fill" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "turning-circle-fill" name: "turning-circle-fill" @@ -473,12 +370,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_fill" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "aerialways" name: "aerialways" @@ -486,12 +379,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,aerialway from planet_osm_line where aerialway is not null) as aerialways" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "roads-low-zoom" name: "roads-low-zoom" @@ -499,12 +388,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *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,tunnel\n from planet_osm_roads\n where highway is not null\n or (railway is not null and railway!='preserved' and (service is null or service not in ('spur','siding','yard')))\n order by z_order\n ) as roads_low_zoom" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "waterway-bridges" name: "waterway-bridges" @@ -512,12 +397,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,waterway,name,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" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "bridges" name: "bridges" @@ -525,12 +406,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where bridge in ('yes','viaduct')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct'))) as features order by layernotnull,prio) as bridges" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" properties: group-by: "layernotnull" advanced: {} @@ -540,12 +417,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way from planet_osm_line where highway='bus_guideway' and (tunnel is null or tunnel != 'yes')) as guideways" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - name: "admin-01234" id: "admin-01234" @@ -553,12 +426,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('0','1','2','3','4')\n ) as admin_01234" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "admin-5678" name: "admin-5678" @@ -566,12 +435,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('5','6','7','8')\n ) as admin_5678" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "admin-other" name: "admin-other" @@ -579,12 +444,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('9', '10')\n ) as admin_other" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "power-minorline" name: "power-minorline" @@ -592,12 +453,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way from planet_osm_line where \"power\"='minor_line') as power_minorline" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "power-line" name: "power-line" @@ -605,12 +462,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way from planet_osm_line where \"power\"='line') as power_line" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "nepopulated" name: "nepopulated" @@ -629,12 +482,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,place,name,ref\n from planet_osm_point\n where place in ('country','state')\n ) as placenames_large" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "placenames-capital" name: "placenames-capital" @@ -642,12 +491,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,place,name,ref\n from planet_osm_point\n where place in ('city','town') and capital='yes'\n ) as placenames_capital" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "placenames-medium" name: "placenames-medium" @@ -655,12 +500,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,place,name\n from planet_osm_point\n where place in ('city','town')\n and (capital is null or capital != 'yes')\n ) as placenames_medium" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "placenames-small" name: "placenames-small" @@ -668,12 +509,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,place,name\n from planet_osm_point\n where place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n ) as placenames_small" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "stations" class: "stations" @@ -681,12 +518,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,name,railway,aerialway,disused\n from planet_osm_point\n where railway in ('station','halt','tram_stop','subway_entrance')\n or aerialway='station'\n ) as stations" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "stations-poly" name: "stations-poly" @@ -694,12 +527,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,name,railway,aerialway,disused\n from planet_osm_polygon\n where railway in ('station','halt','tram_stop')\n or aerialway='station'\n ) as stations_poly" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "glaciers-text" name: "glaciers-text" @@ -707,12 +536,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,name,way_area\n from planet_osm_polygon\n where \"natural\"='glacier' and building is null\n order by way_area desc\n ) as glaciers_text" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "amenity-symbols" name: "amenity-symbols" @@ -720,12 +545,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select *\n from planet_osm_point\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n or railway='level_crossing'\n ) as amenity_symbols" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "amenity-symbols-poly" name: "amenity-symbols-poly" @@ -733,12 +554,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select *\n from planet_osm_polygon\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree')\n or railway='level_crossing'\n ) as amenity_symbols_poly" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "amenity-points-poly" name: "amenity-points-poly" @@ -746,12 +563,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "amenity-points" name: "amenity-points" @@ -759,12 +572,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "power-towers" name: "power-towers" @@ -772,12 +581,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way from planet_osm_point where power='tower') as power_towers" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "power-poles" name: "power-poles" @@ -785,12 +590,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way from planet_osm_point where power='pole') as power_poles" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "roads-text-ref-low-zoom" name: "roads-text-ref-low-zoom" @@ -798,12 +599,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_roads\n WHERE highway IN ('motorway','trunk','primary','secondary')\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "junctions" name: "junctions" @@ -811,12 +608,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,highway,junction,ref,name\n from planet_osm_point\n where highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes'\n ) as junctions" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "roads-text-ref" name: "roads-text-ref" @@ -824,12 +617,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n COALESCE(highway, aeroway) AS highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_line\n WHERE (highway IN ('motorway','trunk','primary','secondary','tertiary','unclassified','residential') OR aeroway IN ('runway','taxiway'))\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "roads-area-text-name" name: "roads-area-text-name" @@ -837,12 +626,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way, way_area/(!pixel_width!*!pixel_height!) AS way_pixels, highway, name\n from planet_osm_polygon\n where highway in ('residential','unclassified','pedestrian','service','footway','cycleway','living_street','track','path','platform') or railway in ('platform') and name is not null\n ) as roads_area_text_name" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "roads-text-name" name: "roads-text-name" @@ -850,12 +635,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way, case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end, name\n from planet_osm_line\n 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','proposed') \n and name is not null\n ) as roads_text_name" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "paths-text-name" name: "paths-text-name" @@ -863,12 +644,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way, highway, name\n from planet_osm_line\n where highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n and name is not null\n ) as paths_text_name" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "text-poly" name: "text-poly" @@ -876,12 +653,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "text" name: "text" @@ -889,12 +662,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "building-text" name: "building-text" @@ -902,12 +671,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select name, way, way_area from planet_osm_polygon where building is not null and building not in ('no','station','supermarket')) as building_text" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "interpolation" name: "interpolation" @@ -915,12 +680,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way from planet_osm_line where \"addr:interpolation\" is not null) as interpolation" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "housenumbers" name: "housenumbers" @@ -928,12 +689,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,\"addr:housenumber\" from planet_osm_polygon where \"addr:housenumber\" is not null and building is not null\n union\n select way,\"addr:housenumber\" from planet_osm_point where \"addr:housenumber\" is not null\n ) as housenumbers" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "housenames" name: "housenames" @@ -941,12 +698,8 @@ Layer: geometry: "point" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,\"addr:housename\" from planet_osm_polygon where \"addr:housename\" is not null and building is not null\n union\n select way,\"addr:housename\" from planet_osm_point where \"addr:housename\" is not null\n ) as housenames" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "water-lines-text" name: "water-lines-text" @@ -954,12 +707,8 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n order by z_order\n ) as water_lines_text" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "admin-text" name: "admin-text" @@ -967,7 +716,7 @@ Layer: geometry: "linestring" <<: *extents Datasource: - type: "postgis" + <<: *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')) as admin_text" key_field: "" geometry_field: "way" @@ -981,12 +730,8 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,way_area,name,boundary from planet_osm_polygon where (boundary='national_park' or leisure='nature_reserve') and building is null) as national_park_boundaries" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} - id: "theme-park" name: "theme-park" @@ -994,10 +739,6 @@ Layer: geometry: "polygon" <<: *extents Datasource: - type: "postgis" + <<: *osm2pgsql table: "(select way,name,tourism from planet_osm_polygon where tourism='theme_park') as theme_park" - extent: "-20037508,-20037508,20037508,20037508" - key_field: "" - geometry_field: "way" - dbname: "gis" advanced: {} From ba95ac9e0e1cdc57241874793a2b93c91b412bac Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Tue, 9 Sep 2014 19:37:42 -0700 Subject: [PATCH 65/74] Conver SQL from in-line escaped scalars to block scalars Block scalars allow you to use newlines, and are far more readable This commit also catches some extents that were missed previously. --- project.mml | 5 +- project.yaml | 487 ++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 406 insertions(+), 86 deletions(-) diff --git a/project.mml b/project.mml index 15fac5ed6b..41fd41c604 100644 --- a/project.mml +++ b/project.mml @@ -593,7 +593,7 @@ "class": "", "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { - "extent": "-20037508,-19929239,20037508,19929239", + "extent": "-20037508,-20037508,20037508,20037508", "table": "(select way,\"natural\" from planet_osm_line where \"natural\" = 'tree_row') as tree_row", "geometry_field": "way", "type": "postgis", @@ -639,7 +639,7 @@ "class": "", "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { - "extent": "-20037508,-19929239,20037508,19929239", + "extent": "-20037508,-20037508,20037508,20037508", "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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_casing", "geometry_field": "way", "type": "postgis", @@ -1629,7 +1629,6 @@ "class": "", "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { - "extent_cache": "custom", "extent": "-20037508,-20037508,20037508,20037508", "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')) as admin_text", "geometry_field": "way", diff --git a/project.yaml b/project.yaml index 1681667241..b830acad41 100644 --- a/project.yaml +++ b/project.yaml @@ -92,7 +92,6 @@ Layer: file: "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp" type: "shape" advanced: {} - - id: "landcover" name: "landcover" class: "" @@ -100,7 +99,33 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way, name, religion,\ncoalesce (aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) as feature from (\nselect way, COALESCE(name,'') AS name, \n('aeroway_' || (case when aeroway in ('apron', 'aerodrome') then aeroway else null end)) as aeroway,\n('amenity_' || (case when amenity in ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity,\n('landuse_' || (case when landuse in ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') then landuse else null end)) as landuse,\n('leisure_' || (case when leisure in ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') then leisure else null end)) as leisure,\n('military_' || (case when military in ('barracks', 'danger_area') then military else null end)) as military,\n('natural_' || (case when \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') then \"natural\" else null end)) as \"natural\",\n('power_' || (case when power in ('station','sub_station','substation','generator') then power else null end)) as power,\n('tourism_' || (case when tourism in ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') then tourism else null end)) as tourism,\n('highway_' || (case when highway in ('services', 'rest_area') then highway else null end)) as highway,\ncase when religion in ('christian','jewish') then religion else 'INT-generic'::text end as religion\n from planet_osm_polygon\n where landuse is not null\n or leisure is not null\n or aeroway in ('apron','aerodrome')\n or amenity in ('parking','university','college','school','hospital','kindergarten','grave_yard')\n or military in ('barracks','danger_area')\n or \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub')\n or power in ('station','sub_station','substation','generator')\n or tourism in ('attraction','camp_site','caravan_site','picnic_site','zoo')\n or highway in ('services','rest_area')\n order by z_order,way_area desc\n ) as landcover\n) as features" + table: |2- + (select way, name, religion, + coalesce (aeroway, amenity, landuse, leisure, military, "natural", power, tourism, highway) 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', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity, + ('landuse_' || (case when landuse in ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', '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', 'picnic_table','sports_centre','stadium','pitch','track') then leisure else null end)) as leisure, + ('military_' || (case when military in ('barracks', 'danger_area') then military else null end)) as military, + ('natural_' || (case when "natural" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') then "natural" else null end)) as "natural", + ('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', 'zoo') then tourism else null end)) as tourism, + ('highway_' || (case when highway in ('services', 'rest_area') then highway else null end)) as highway, + case when religion in ('christian','jewish') then religion else 'INT-generic'::text end as religion + from planet_osm_polygon + where landuse is not null + or leisure is not null + or aeroway in ('apron','aerodrome') + or amenity in ('parking','university','college','school','hospital','kindergarten','grave_yard') + or military in ('barracks','danger_area') + or "natural" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') + or power in ('station','sub_station','substation','generator') + or tourism in ('attraction','camp_site','caravan_site','picnic_site','zoo') + or highway in ('services','rest_area') + order by z_order,way_area desc + ) as landcover + ) as features advanced: {} - id: "landcover-line" name: "landcover-line" @@ -109,7 +134,11 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way\nfrom planet_osm_line\nwhere man_made='cutline'\n) as landcover_line" + table: |2- + (select way + from planet_osm_line + where man_made='cutline' + ) as landcover_line advanced: {} - id: "water-lines-casing" name: "water-lines-casing" @@ -118,7 +147,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,waterway,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel \n from planet_osm_line\n where waterway in ('stream','drain','ditch')\n and (tunnel is null or tunnel != 'yes')\n ) as water_lines_casing" + table: |2- + (select way,waterway,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel + from planet_osm_line + where waterway in ('stream','drain','ditch') + and (tunnel is null or tunnel != 'yes') + ) as water_lines_casing advanced: {} - id: "water-lines-low-zoom" name: "water-lines-low-zoom" @@ -127,7 +161,11 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,waterway\n from planet_osm_line\n where waterway='river'\n ) as water_lines_low_zoom" + table: |2- + (select way,waterway + from planet_osm_line + where waterway='river' + ) as water_lines_low_zoom advanced: {} - id: "water-areas" name: "water-areas" @@ -136,7 +174,17 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(SELECT\n way, \"natural\", waterway, landuse, name, way_area/(!pixel_width!*!pixel_height!) AS way_pixels\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir','basin')\n OR \"natural\" IN ('lake','water','land','glacier','mud'))\n AND building IS NULL\n AND way_area/(!pixel_width!*!pixel_height!) > 0.01\n ORDER BY z_order, way_area) AS water_areas" + table: |2- + (SELECT + way, "natural", waterway, landuse, name, way_area/(!pixel_width!*!pixel_height!) AS way_pixels + FROM planet_osm_polygon + WHERE + (waterway IN ('dock', 'riverbank', 'canal') + OR landuse IN ('reservoir','basin') + OR "natural" IN ('lake','water','land','glacier','mud')) + AND building IS NULL + AND way_area/(!pixel_width!*!pixel_height!) > 0.01 + ORDER BY z_order, way_area) AS water_areas advanced: {} - id: "water-areas-overlay" name: "water-areas-overlay" @@ -145,7 +193,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,\"natural\"\n from planet_osm_polygon\n where \"natural\" in ('marsh','wetland') and building is null\n order by z_order,way_area desc\n ) as water_areas_overlay" + table: |2- + (select way,"natural" + from planet_osm_polygon + where "natural" in ('marsh','wetland') and building is null + order by z_order,way_area desc + ) as water_areas_overlay advanced: {} - id: "water-lines" name: "water-lines" @@ -154,7 +207,13 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel, 'no' as bridge\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n and (bridge is null or bridge not in ('yes','aqueduct'))\n order by z_order\n ) as water_lines" + table: |2- + (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel, 'no' as bridge + from planet_osm_line + where waterway in ('weir','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 advanced: {} - id: "dam" name: "dam" @@ -163,7 +222,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,name from planet_osm_line where waterway='dam') as dam" + table: |2- + (select way,name from planet_osm_line where waterway='dam') as dam advanced: {} - id: "marinas-area" name: "marinas-area" @@ -172,7 +232,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way from planet_osm_polygon where leisure ='marina') as marinas_area" + table: |2- + (select way from planet_osm_polygon where leisure ='marina') as marinas_area advanced: {} - id: "piers-area" name: "piers-area" @@ -181,7 +242,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,man_made from planet_osm_polygon where man_made in ('pier','breakwater','groyne')) as piers_area" + table: |2- + (select way,man_made from planet_osm_polygon where man_made in ('pier','breakwater','groyne')) as piers_area advanced: {} - id: "piers" name: "piers" @@ -190,7 +252,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,man_made from planet_osm_line where man_made in ('pier','breakwater','groyne')) as piers" + table: |2- + (select way,man_made from planet_osm_line where man_made in ('pier','breakwater','groyne')) as piers advanced: {} - id: "locks" name: "locks" @@ -199,7 +262,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,waterway from planet_osm_point where waterway='lock_gate') as locks" + table: |2- + (select way,waterway from planet_osm_point where waterway='lock_gate') as locks advanced: {} - id: "buildings-lz" name: "buildings-lz" @@ -208,7 +272,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,building,railway,amenity from planet_osm_polygon\n where railway='station'\n or building in ('station','supermarket')\n or amenity='place_of_worship'\n order by z_order,way_area desc) as buildings_lz" + table: |2- + (select way,building,railway,amenity from planet_osm_polygon + where railway='station' + or building in ('station','supermarket') + or amenity='place_of_worship' + order by z_order,way_area desc) as buildings_lz advanced: {} - id: "buildings" name: "buildings" @@ -217,7 +286,19 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,aeroway,\n case\n when building in ('garage','roof','garages','service','shed','shelter','cabin','storage_tank','tank','support','glasshouse','greenhouse','mobile_home','kiosk','silo','canopy','tent') then 'INT-light'::text\n else building\n end as building\n from planet_osm_polygon\n where (building is not null\n and building not in ('no','station','supermarket','planned')\n and (railway is null or railway != 'station')\n and (amenity is null or amenity != 'place_of_worship'))\n or aeroway = 'terminal'\n order by z_order,way_area desc) as buildings" + table: |2- + (select way,aeroway, + case + when building in ('garage','roof','garages','service','shed','shelter','cabin','storage_tank','tank','support','glasshouse','greenhouse','mobile_home','kiosk','silo','canopy','tent') then 'INT-light'::text + else building + end as building + from planet_osm_polygon + where (building is not null + and building not in ('no','station','supermarket','planned') + and (railway is null or railway != 'station') + and (amenity is null or amenity != 'place_of_worship')) + or aeroway = 'terminal' + order by z_order,way_area desc) as buildings advanced: {} - id: "tunnels" name: "tunnels" @@ -226,7 +307,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes'))) as features order by layernotnull,prio) as tunnels" + table: |2- + (select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes'))) as features order by layernotnull,prio) as tunnels properties: group-by: "layernotnull" advanced: {} @@ -237,7 +319,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way from planet_osm_line where \"historic\"='citywalls') as citywalls" + table: |2- + (select way from planet_osm_line where "historic"='citywalls') as citywalls advanced: {} - id: "castlewalls" name: "castlewalls" @@ -246,7 +329,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way from planet_osm_line where \"historic\"='castle_walls') as castlewalls" + table: |2- + (select way from planet_osm_line where "historic"='castle_walls') as castlewalls advanced: {} - id: "castlewalls-poly" name: "castlewalls-poly" @@ -255,7 +339,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way from planet_osm_polygon where \"historic\"='castle_walls') as castlewalls_poly" + table: |2- + (select way from planet_osm_polygon where "historic"='castle_walls') as castlewalls_poly advanced: {} - id: "landuse-overlay" name: "landuse-overlay" @@ -264,7 +349,11 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,landuse,leisure\n from planet_osm_polygon\n where (landuse = 'military') and building is null\n ) as landuse_overlay" + table: |2- + (select way,landuse,leisure + from planet_osm_polygon + where (landuse = 'military') and building is null + ) as landuse_overlay advanced: {} - id: "line-barriers" name: "line-barriers" @@ -273,7 +362,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way, barrier from planet_osm_line where barrier is not null) as line_barriers" + table: |2- + (select way, barrier from planet_osm_line where barrier is not null) as line_barriers advanced: {} - id: "cliffs" name: "cliffs" @@ -282,7 +372,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,\"natural\",man_made from planet_osm_line where \"natural\" = 'cliff' or man_made = 'embankment') as cliffs" + table: |2- + (select way,"natural",man_made from planet_osm_line where "natural" = 'cliff' or man_made = 'embankment') as cliffs advanced: {} - id: "area-barriers" name: "area-barriers" @@ -291,7 +382,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,barrier from planet_osm_polygon where barrier is not null) as area_barriers" + table: |2- + (select way,barrier from planet_osm_polygon where barrier is not null) as area_barriers advanced: {} - id: "tree-row" name: "tree-row" @@ -300,11 +392,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,\"natural\" from planet_osm_line where \"natural\" = 'tree_row') as tree_row" - extent: "-20037508,-19929239,20037508,19929239" - key_field: "" - geometry_field: "way" - dbname: "gis" + table: |2- + (select way,"natural" from planet_osm_line where "natural" = 'tree_row') as tree_row advanced: {} - id: "ferry-routes" name: "ferry-routes" @@ -313,7 +402,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way from planet_osm_line where route='ferry' ) as ferry_routes" + table: |2- + (select way from planet_osm_line where route='ferry' ) as ferry_routes advanced: {} - id: "turning-circle-casing" name: "turning-circle-casing" @@ -322,11 +412,22 @@ Layer: <<: *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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_casing" - extent: "-20037508,-19929239,20037508,19929239" - key_field: "" - geometry_field: "way" - dbname: "gis" + table: |2- + (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) + ) 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 advanced: {} - id: "highway-area-casing" name: "highway-area-casing" @@ -335,7 +436,11 @@ Layer: <<: *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\n where highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform')\n or railway in ('platform')\n order by z_order,way_area desc) as highway_area_casing" + table: |2- + (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 advanced: {} - name: "roads-casing" id: "roads-casing" @@ -344,7 +449,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_casing" + table: |2- + (select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_casing advanced: {} - id: "highway-area-fill" name: "highway-area-fill" @@ -353,7 +459,12 @@ Layer: <<: *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\n where highway in ('residential','unclassified','pedestrian','service','footway','living_street','track','path','platform','services')\n or railway in ('platform')\n or aeroway in ('runway','taxiway','helipad')\n order by z_order,way_area desc) as highway_area_fill" + table: |2- + (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 advanced: {} - id: "roads-fill" name: "roads-fill" @@ -362,7 +473,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_fill" + table: |2- + (select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_fill advanced: {} - id: "turning-circle-fill" name: "turning-circle-fill" @@ -371,7 +483,22 @@ Layer: <<: *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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_fill" + table: |2- + (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) + ) 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 advanced: {} - id: "aerialways" name: "aerialways" @@ -380,7 +507,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,aerialway from planet_osm_line where aerialway is not null) as aerialways" + table: |2- + (select way,aerialway from planet_osm_line where aerialway is not null) as aerialways advanced: {} - id: "roads-low-zoom" name: "roads-low-zoom" @@ -389,7 +517,13 @@ Layer: <<: *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,tunnel\n from planet_osm_roads\n where highway is not null\n or (railway is not null and railway!='preserved' and (service is null or service not in ('spur','siding','yard')))\n order by z_order\n ) as roads_low_zoom" + table: |2- + (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,tunnel + 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 advanced: {} - id: "waterway-bridges" name: "waterway-bridges" @@ -398,7 +532,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,waterway,name,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" + table: |2- + (select way,waterway,name,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 advanced: {} - id: "bridges" name: "bridges" @@ -407,7 +542,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where bridge in ('yes','viaduct')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct'))) as features order by layernotnull,prio) as bridges" + table: |2- + (select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where bridge in ('yes','viaduct')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct'))) as features order by layernotnull,prio) as bridges properties: group-by: "layernotnull" advanced: {} @@ -418,7 +554,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way from planet_osm_line where highway='bus_guideway' and (tunnel is null or tunnel != 'yes')) as guideways" + table: |2- + (select way from planet_osm_line where highway='bus_guideway' and (tunnel is null or tunnel != 'yes')) as guideways advanced: {} - name: "admin-01234" id: "admin-01234" @@ -427,7 +564,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('0','1','2','3','4')\n ) as admin_01234" + table: |2- + (select way,admin_level + from planet_osm_roads + where "boundary"='administrative' + and admin_level in ('0','1','2','3','4') + ) as admin_01234 advanced: {} - id: "admin-5678" name: "admin-5678" @@ -436,7 +578,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('5','6','7','8')\n ) as admin_5678" + table: |2- + (select way,admin_level + from planet_osm_roads + where "boundary"='administrative' + and admin_level in ('5','6','7','8') + ) as admin_5678 advanced: {} - id: "admin-other" name: "admin-other" @@ -445,7 +592,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('9', '10')\n ) as admin_other" + table: |2- + (select way,admin_level + from planet_osm_roads + where "boundary"='administrative' + and admin_level in ('9', '10') + ) as admin_other advanced: {} - id: "power-minorline" name: "power-minorline" @@ -454,7 +606,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way from planet_osm_line where \"power\"='minor_line') as power_minorline" + table: |2- + (select way from planet_osm_line where "power"='minor_line') as power_minorline advanced: {} - id: "power-line" name: "power-line" @@ -463,7 +616,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way from planet_osm_line where \"power\"='line') as power_line" + table: |2- + (select way from planet_osm_line where "power"='line') as power_line advanced: {} - id: "nepopulated" name: "nepopulated" @@ -483,7 +637,11 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,place,name,ref\n from planet_osm_point\n where place in ('country','state')\n ) as placenames_large" + table: |2- + (select way,place,name,ref + from planet_osm_point + where place in ('country','state') + ) as placenames_large advanced: {} - id: "placenames-capital" name: "placenames-capital" @@ -492,7 +650,11 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,place,name,ref\n from planet_osm_point\n where place in ('city','town') and capital='yes'\n ) as placenames_capital" + table: |2- + (select way,place,name,ref + from planet_osm_point + where place in ('city','town') and capital='yes' + ) as placenames_capital advanced: {} - id: "placenames-medium" name: "placenames-medium" @@ -501,7 +663,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,place,name\n from planet_osm_point\n where place in ('city','town')\n and (capital is null or capital != 'yes')\n ) as placenames_medium" + table: |2- + (select way,place,name + from planet_osm_point + where place in ('city','town') + and (capital is null or capital != 'yes') + ) as placenames_medium advanced: {} - id: "placenames-small" name: "placenames-small" @@ -510,7 +677,11 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,place,name\n from planet_osm_point\n where place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n ) as placenames_small" + table: |2- + (select way,place,name + from planet_osm_point + where place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm') + ) as placenames_small advanced: {} - id: "stations" class: "stations" @@ -519,7 +690,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,name,railway,aerialway,disused\n from planet_osm_point\n where railway in ('station','halt','tram_stop','subway_entrance')\n or aerialway='station'\n ) as stations" + table: |2- + (select way,name,railway,aerialway,disused + from planet_osm_point + where railway in ('station','halt','tram_stop','subway_entrance') + or aerialway='station' + ) as stations advanced: {} - id: "stations-poly" name: "stations-poly" @@ -528,7 +704,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,name,railway,aerialway,disused\n from planet_osm_polygon\n where railway in ('station','halt','tram_stop')\n or aerialway='station'\n ) as stations_poly" + table: |2- + (select way,name,railway,aerialway,disused + from planet_osm_polygon + where railway in ('station','halt','tram_stop') + or aerialway='station' + ) as stations_poly advanced: {} - id: "glaciers-text" name: "glaciers-text" @@ -537,7 +718,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,name,way_area\n from planet_osm_polygon\n where \"natural\"='glacier' and building is null\n order by way_area desc\n ) as glaciers_text" + table: |2- + (select way,name,way_area + from planet_osm_polygon + where "natural"='glacier' and building is null + order by way_area desc + ) as glaciers_text advanced: {} - id: "amenity-symbols" name: "amenity-symbols" @@ -546,7 +732,17 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select *\n from planet_osm_point\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n or railway='level_crossing'\n ) as amenity_symbols" + table: |2- + (select * + from planet_osm_point + where aeroway in ('aerodrome','helipad') + or barrier in ('bollard','gate','lift_gate','block') + or highway in ('mini_roundabout','gate') + or man_made in ('lighthouse','power_wind','windmill','mast') + or (power='generator' and ("generator:source"='wind' or power_source='wind')) + or "natural" in ('peak','volcano','spring','tree','cave_entrance') + or railway='level_crossing' + ) as amenity_symbols advanced: {} - id: "amenity-symbols-poly" name: "amenity-symbols-poly" @@ -555,7 +751,17 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select *\n from planet_osm_polygon\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree')\n or railway='level_crossing'\n ) as amenity_symbols_poly" + table: |2- + (select * + from planet_osm_polygon + where aeroway in ('aerodrome','helipad') + or barrier in ('bollard','gate','lift_gate','block') + or highway in ('mini_roundabout','gate') + or man_made in ('lighthouse','power_wind','windmill','mast') + or (power='generator' and ("generator:source"='wind' or power_source='wind')) + or "natural" in ('peak','volcano','spring','tree') + or railway='level_crossing' + ) as amenity_symbols_poly advanced: {} - id: "amenity-points-poly" name: "amenity-points-poly" @@ -564,7 +770,17 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly" + table: |2- + (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion + from planet_osm_polygon + where amenity is not null + or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') + or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet') + or highway in ('bus_stop','traffic_signals') + or man_made in ('mast','water_tower') + or historic in ('memorial','archaeological_site') + or leisure in ('playground', 'picnic_table') + order by way_area desc ) as amenity_points_poly advanced: {} - id: "amenity-points" name: "amenity-points" @@ -573,7 +789,19 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points" + table: |2- + (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion + from planet_osm_point + where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') + or amenity is not null + or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet') + or highway in ('bus_stop','traffic_signals','ford') + or man_made in ('mast','water_tower') + or historic in ('memorial','archaeological_site') + or waterway='lock' + or lock='yes' + or leisure in ('playground','slipway','picnic_table') + ) as amenity_points advanced: {} - id: "power-towers" name: "power-towers" @@ -582,7 +810,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way from planet_osm_point where power='tower') as power_towers" + table: |2- + (select way from planet_osm_point where power='tower') as power_towers advanced: {} - id: "power-poles" name: "power-poles" @@ -591,7 +820,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way from planet_osm_point where power='pole') as power_poles" + table: |2- + (select way from planet_osm_point where power='pole') as power_poles advanced: {} - id: "roads-text-ref-low-zoom" name: "roads-text-ref-low-zoom" @@ -600,7 +830,23 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_roads\n WHERE highway IN ('motorway','trunk','primary','secondary')\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom" + table: |2- + (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 advanced: {} - id: "junctions" name: "junctions" @@ -609,7 +855,11 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,highway,junction,ref,name\n from planet_osm_point\n where highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes'\n ) as junctions" + table: |2- + (select way,highway,junction,ref,name + from planet_osm_point + where highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes' + ) as junctions advanced: {} - id: "roads-text-ref" name: "roads-text-ref" @@ -618,7 +868,23 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(SELECT way, highway, height, width, refs FROM\n (SELECT \n way, highway, \n array_length(refs,1) AS height, \n (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width, \n array_to_string(refs,E'\\n') AS refs\n FROM (\n SELECT \n way, \n COALESCE(highway, aeroway) AS highway, \n string_to_array(ref,';') AS refs\n FROM planet_osm_line\n WHERE (highway IN ('motorway','trunk','primary','secondary','tertiary','unclassified','residential') OR aeroway IN ('runway','taxiway'))\n AND ref IS NOT NULL\n ) AS p) AS q\n WHERE height <= 4 AND width <= 11) AS roads_text_ref" + table: |2- + (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(highway, aeroway) 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 advanced: {} - id: "roads-area-text-name" name: "roads-area-text-name" @@ -627,7 +893,11 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way, way_area/(!pixel_width!*!pixel_height!) AS way_pixels, highway, name\n from planet_osm_polygon\n where highway in ('residential','unclassified','pedestrian','service','footway','cycleway','living_street','track','path','platform') or railway in ('platform') and name is not null\n ) as roads_area_text_name" + table: |2- + (select way, way_area/(!pixel_width!*!pixel_height!) 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 advanced: {} - id: "roads-text-name" name: "roads-text-name" @@ -636,7 +906,12 @@ Layer: <<: *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, name\n from planet_osm_line\n 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','proposed') \n and name is not null\n ) as roads_text_name" + table: |2- + (select way, case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end, 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','proposed') + and name is not null + ) as roads_text_name advanced: {} - id: "paths-text-name" name: "paths-text-name" @@ -645,7 +920,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way, highway, name\n from planet_osm_line\n where highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n and name is not null\n ) as paths_text_name" + table: |2- + (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 advanced: {} - id: "text-poly" name: "text-poly" @@ -654,7 +934,20 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly" + table: |2- + (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area + from planet_osm_polygon + where amenity is not null + or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') + or leisure is not null + or landuse is not null + or tourism is not null + or "natural" is not null + or man_made in ('lighthouse','windmill') + or place='island' + or military='danger_area' + or historic in ('memorial','archaeological_site') + order by way_area desc ) as text_poly advanced: {} - id: "text" name: "text" @@ -663,7 +956,22 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text" + table: |2- + (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area + from planet_osm_point + where amenity is not null + or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') + or leisure is not null + or landuse is not null + or tourism is not null + or "natural" is not null + or man_made in ('lighthouse','windmill') + or place='island' + or military='danger_area' + or aeroway='gate' + or waterway='lock' + or historic in ('memorial','archaeological_site') + ) as text advanced: {} - id: "building-text" name: "building-text" @@ -672,7 +980,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select name, way, way_area from planet_osm_polygon where building is not null and building not in ('no','station','supermarket')) as building_text" + table: |2- + (select name, way, way_area from planet_osm_polygon where building is not null and building not in ('no','station','supermarket')) as building_text advanced: {} - id: "interpolation" name: "interpolation" @@ -681,7 +990,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way from planet_osm_line where \"addr:interpolation\" is not null) as interpolation" + table: |2- + (select way from planet_osm_line where "addr:interpolation" is not null) as interpolation advanced: {} - id: "housenumbers" name: "housenumbers" @@ -690,7 +1000,11 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,\"addr:housenumber\" from planet_osm_polygon where \"addr:housenumber\" is not null and building is not null\n union\n select way,\"addr:housenumber\" from planet_osm_point where \"addr:housenumber\" is not null\n ) as housenumbers" + table: |2- + (select way,"addr:housenumber" from planet_osm_polygon where "addr:housenumber" is not null and building is not null + union + select way,"addr:housenumber" from planet_osm_point where "addr:housenumber" is not null + ) as housenumbers advanced: {} - id: "housenames" name: "housenames" @@ -699,7 +1013,11 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,\"addr:housename\" from planet_osm_polygon where \"addr:housename\" is not null and building is not null\n union\n select way,\"addr:housename\" from planet_osm_point where \"addr:housename\" is not null\n ) as housenames" + table: |2- + (select way,"addr:housename" from planet_osm_polygon where "addr:housename" is not null and building is not null + union + select way,"addr:housename" from planet_osm_point where "addr:housename" is not null + ) as housenames advanced: {} - id: "water-lines-text" name: "water-lines-text" @@ -708,7 +1026,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n order by z_order\n ) as water_lines_text" + table: |2- + (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel + from planet_osm_line + where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi') + order by z_order + ) as water_lines_text advanced: {} - id: "admin-text" name: "admin-text" @@ -717,12 +1040,8 @@ Layer: <<: *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')) as admin_text" - key_field: "" - geometry_field: "way" - extent_cache: "custom" - extent: "-20037508,-20037508,20037508,20037508" - dbname: "gis" + table: |2- + (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')) as admin_text advanced: {} - id: "nature-reserve-boundaries" name: "nature-reserve-boundaries" @@ -731,7 +1050,8 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,way_area,name,boundary from planet_osm_polygon where (boundary='national_park' or leisure='nature_reserve') and building is null) as national_park_boundaries" + table: |2- + (select way,way_area,name,boundary from planet_osm_polygon where (boundary='national_park' or leisure='nature_reserve') and building is null) as national_park_boundaries advanced: {} - id: "theme-park" name: "theme-park" @@ -740,5 +1060,6 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: "(select way,name,tourism from planet_osm_polygon where tourism='theme_park') as theme_park" + table: |2- + (select way,name,tourism from planet_osm_polygon where tourism='theme_park') as theme_park advanced: {} From 95a56f08c0b02fd045515d5cb4e2f7c9756bc3c7 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Sat, 13 Sep 2014 14:50:11 -0700 Subject: [PATCH 66/74] Clean up SQL in the YAML file A lot of the SQL was badly formatted, with random tabs, caps, and lines of 5000 characters. This commit cleans up about half of them but is not complete. --- project.mml | 134 ++++---- project.yaml | 860 ++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 677 insertions(+), 317 deletions(-) diff --git a/project.mml b/project.mml index 41fd41c604..65c25400cd 100644 --- a/project.mml +++ b/project.mml @@ -85,7 +85,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way, name, religion,\ncoalesce (aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) as feature from (\nselect way, COALESCE(name,'') AS name, \n('aeroway_' || (case when aeroway in ('apron', 'aerodrome') then aeroway else null end)) as aeroway,\n('amenity_' || (case when amenity in ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity,\n('landuse_' || (case when landuse in ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') then landuse else null end)) as landuse,\n('leisure_' || (case when leisure in ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') then leisure else null end)) as leisure,\n('military_' || (case when military in ('barracks', 'danger_area') then military else null end)) as military,\n('natural_' || (case when \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') then \"natural\" else null end)) as \"natural\",\n('power_' || (case when power in ('station','sub_station','substation','generator') then power else null end)) as power,\n('tourism_' || (case when tourism in ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') then tourism else null end)) as tourism,\n('highway_' || (case when highway in ('services', 'rest_area') then highway else null end)) as highway,\ncase when religion in ('christian','jewish') then religion else 'INT-generic'::text end as religion\n from planet_osm_polygon\n where landuse is not null\n or leisure is not null\n or aeroway in ('apron','aerodrome')\n or amenity in ('parking','university','college','school','hospital','kindergarten','grave_yard')\n or military in ('barracks','danger_area')\n or \"natural\" in ('beach','desert','heath','mud','grassland','wood','sand','scrub')\n or power in ('station','sub_station','substation','generator')\n or tourism in ('attraction','camp_site','caravan_site','picnic_site','zoo')\n or highway in ('services','rest_area')\n order by z_order,way_area desc\n ) as landcover\n) as features", + "table": "(SELECT \n way, name, religion,\n COALESCE(aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) AS feature \n FROM (SELECT \n way, COALESCE(name,'') AS name, \n ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway ELSE NULL END)) AS aeroway,\n ('amenity_' || (CASE WHEN amenity IN ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') THEN amenity ELSE NULL END)) AS amenity,\n ('landuse_' || (CASE WHEN landuse IN ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') THEN landuse ELSE NULL END)) AS landuse,\n ('leisure_' || (CASE WHEN leisure IN ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') THEN leisure ELSE NULL END)) AS leisure,\n ('military_' || (CASE WHEN military IN ('barracks', 'danger_area') THEN military ELSE NULL END)) AS military,\n ('natural_' || (CASE WHEN \"natural\" IN ('beach','desert','heath','mud','grassland','wood','sand','scrub') THEN \"natural\" ELSE NULL END)) AS \"natural\",\n ('power_' || (CASE WHEN power IN ('station','sub_station','substation','generator') THEN power ELSE NULL END)) as power,\n ('tourism_' || (CASE WHEN tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') THEN tourism ELSE NULL END)) AS tourism,\n ('highway_' || (CASE WHEN highway IN ('services', 'rest_area') THEN highway ELSE NULL END)) AS highway,\n CASE WHEN religion IN ('christian','jewish') THEN religion ELSE 'INT-generic'::text end AS religion\n FROM planet_osm_polygon\n WHERE landuse IS NOT NULL\n OR leisure IS NOT NULL\n OR aeroway IN ('apron','aerodrome')\n OR amenity IN ('parking','university','college','school','hospital','kindergarten','grave_yard')\n OR military IN ('barracks','danger_area')\n OR \"natural\" IN ('beach','desert','heath','mud','grassland','wood','sand','scrub')\n OR power IN ('station','sub_station','substation','generator')\n OR tourism IN ('attraction','camp_site','caravan_site','picnic_site','zoo')\n OR highway IN ('services','rest_area')\n ORDER BY z_order, way_area DESC\n ) AS landcover\n) AS features", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -108,7 +108,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way\nfrom planet_osm_line\nwhere man_made='cutline'\n) as landcover_line", + "table": "(SELECT \n way\n FROM planet_osm_line\n WHERE man_made='cutline'\n) AS landcover_line", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -131,7 +131,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,waterway,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel \n from planet_osm_line\n where waterway in ('stream','drain','ditch')\n and (tunnel is null or tunnel != 'yes')\n ) as water_lines_casing", + "table": "(SELECT \n way, waterway,\n CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel \n FROM planet_osm_line\n WHERE waterway IN ('stream', 'drain', 'ditch')\n AND (tunnel IS NULL OR tunnel != 'yes')\n) AS water_lines_casing", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -154,7 +154,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,waterway\n from planet_osm_line\n where waterway='river'\n ) as water_lines_low_zoom", + "table": "(SELECT way, waterway\n FROM planet_osm_line\n WHERE waterway='river'\n) AS water_lines_low_zoom", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -177,7 +177,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, \"natural\", waterway, landuse, name, way_area/(!pixel_width!*!pixel_height!) AS way_pixels\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir','basin')\n OR \"natural\" IN ('lake','water','land','glacier','mud'))\n AND building IS NULL\n AND way_area/(!pixel_width!*!pixel_height!) > 0.01\n ORDER BY z_order, way_area) AS water_areas", + "table": "(SELECT \n way, \"natural\", waterway, landuse, name, way_area/(!pixel_width!*!pixel_height!) AS way_pixels\n FROM planet_osm_polygon\n WHERE\n (waterway IN ('dock', 'riverbank', 'canal')\n OR landuse IN ('reservoir', 'basin')\n OR \"natural\" IN ('lake', 'water', 'land', 'glacier', 'mud'))\n AND building IS NULL\n AND way_area/(!pixel_width!*!pixel_height!) > 0.01\n ORDER BY z_order, way_area\n) AS water_areas", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -200,7 +200,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,\"natural\"\n from planet_osm_polygon\n where \"natural\" in ('marsh','wetland') and building is null\n order by z_order,way_area desc\n ) as water_areas_overlay", + "table": "(SELECT \n way, \"natural\"\n FROM planet_osm_polygon\n WHERE \"natural\" IN ('marsh', 'wetland') AND building IS NULL\n ORDER BY z_order,way_area DESC\n) AS water_areas_overlay", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -223,7 +223,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel, 'no' as bridge\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n and (bridge is null or bridge not in ('yes','aqueduct'))\n order by z_order\n ) as water_lines", + "table": "(SELECT \n way, waterway, lock, name,\n CASE WHEN tunnel IN ('yes','culvert') THEN 'yes' ELSE 'no' END AS int_tunnel, \n 'no' as bridge\n FROM planet_osm_line\n WHERE waterway in ('weir', 'river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')\n and (bridge IS NULL or bridge not in ('yes','aqueduct'))\n ORDER BY z_order\n) AS water_lines", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -246,7 +246,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,name from planet_osm_line where waterway='dam') as dam", + "table": "(SELECT way, name \n FROM planet_osm_line \n WHERE waterway = 'dam'\n) AS dam", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -269,7 +269,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way from planet_osm_polygon where leisure ='marina') as marinas_area", + "table": "(SELECT \n way \n FROM planet_osm_polygon \n WHERE leisure = 'marina'\n) AS marinas_area", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -292,7 +292,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,man_made from planet_osm_polygon where man_made in ('pier','breakwater','groyne')) as piers_area", + "table": "(SELECT \n way, man_made \n FROM planet_osm_polygon \n WHERE man_made IN ('pier', 'breakwater', 'groyne')\n) AS piers_area", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -315,7 +315,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,man_made from planet_osm_line where man_made in ('pier','breakwater','groyne')) as piers", + "table": "(SELECT \n way, man_made \n FROM planet_osm_line \n WHERE man_made IN ('pier', 'breakwater', 'groyne')\n) as piers", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -338,7 +338,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,waterway from planet_osm_point where waterway='lock_gate') as locks", + "table": "(SELECT \n way, waterway \n FROM planet_osm_point \n WHERE waterway = 'lock_gate'\n) as locks", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -361,7 +361,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,building,railway,amenity from planet_osm_polygon\n where railway='station'\n or building in ('station','supermarket')\n or amenity='place_of_worship'\n order by z_order,way_area desc) as buildings_lz", + "table": "(SELECT\n way, building, railway, amenity FROM planet_osm_polygon\n WHERE railway='station'\n OR building IN ('station', 'supermarket')\n OR amenity = 'place_of_worship'\n ORDER BY z_order, way_area DESC\n) as buildings_lz", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -384,7 +384,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,aeroway,\n case\n when building in ('garage','roof','garages','service','shed','shelter','cabin','storage_tank','tank','support','glasshouse','greenhouse','mobile_home','kiosk','silo','canopy','tent') then 'INT-light'::text\n else building\n end as building\n from planet_osm_polygon\n where (building is not null\n and building not in ('no','station','supermarket','planned')\n and (railway is null or railway != 'station')\n and (amenity is null or amenity != 'place_of_worship'))\n or aeroway = 'terminal'\n order by z_order,way_area desc) as buildings", + "table": "(SELECT \n way,aeroway,\n CASE\n WHEN building IN ('garage','roof','garages','service','shed','shelter','cabin','storage_tank','tank','support','glasshouse','greenhouse','mobile_home','kiosk','silo','canopy','tent') THEN 'INT-light'::text\n ELSE building\n END AS building\n FROM planet_osm_polygon\n WHERE (building IS NOT null\n AND building NOT IN ('no','station','supermarket','planned')\n AND (railway IS null OR railway != 'station')\n AND (amenity IS null OR amenity != 'place_of_worship'))\n OR aeroway = 'terminal'\n ORDER BY z_order, way_area DESC\n) AS buildings", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -408,7 +408,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes'))) as features order by layernotnull,prio) as tunnels", + "table": "(SELECT * \n FROM (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) ELSE highway END)) AS feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access IN ('destination') THEN 'destination'::text \n WHEN access IN ('no', 'private') THEN 'no'::text \n ELSE NULL \n END AS access, \n construction, \n CASE WHEN service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text \n END AS service, \n CASE WHEN oneway in ('yes', '-1') AND 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') THEN oneway \n ELSE NULL \n END AS oneway,\n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' \n ELSE 'no' END AS link, \n CASE WHEN layer IS NULL THEN '0' \n ELSE layer \n END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('highway_motorway', 380), \n ('highway_trunk', 370), \n ('highway_primary', 360), \n ('highway_secondary', 350), \n ('highway_tertiary', 340), \n ('highway_residential', 330), \n ('highway_unclassified', 330), \n ('highway_road', 330), \n ('highway_living_street', 320), \n ('highway_pedestrian', 310), \n ('highway_raceway', 300), \n ('highway_motorway_link', 240), \n ('highway_trunk_link', 230), \n ('highway_primary_link', 220), \n ('highway_secondary_link', 210), \n ('highway_tertiary_link', 200),\n ('highway_service', 150), \n ('highway_track', 110), \n ('highway_path', 100), \n ('highway_footway', 100), \n ('highway_bridleway', 100), \n ('highway_cycleway', 100),\n ('highway_steps', 100), \n ('highway_platform', 90), \n ('highway_proposed', 20), \n ('highway_construction', 10)\n ) AS ordertable (feature, prio) \n ON ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel='yes' or tunnel='building_passage' or covered='yes')) \n UNION ALL\n (SELECT \n way, prio, \n 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' else railway END)),\n ('aeroway_' || aeroway)) AS feature,\n horse, foot, bicycle, tracktype,\n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access in ('no', 'private') THEN 'no'::text \n ELSE NULL END as access,\n construction,\n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text END as service, \n null AS oneway, \n 'no' AS link,\n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('railway_rail', 430), \n ('railway_spur', 430), \n ('railway_siding', 430), \n ('railway_subway', 420), \n ('railway_narrow_gauge', 420), \n ('railway_light_rail', 420), \n ('railway_preserved', 420), \n ('railway_funicular', 420), \n ('railway_monorail', 420), \n ('railway_miniature', 420), \n ('railway_turntable', 420), \n ('railway_tram', 410), \n ('railway_disused', 400), \n ('railway_construction', 400), \n ('aeroway_runway', 60), \n ('aeroway_taxiway', 50), \n ('railway_platform', 90)\n ) AS ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature\n WHERE (tunnel='yes' or tunnel='building_passage' or covered='yes'))\n ) AS features \n ORDER BY layernotnull, prio\n) AS tunnels", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -433,7 +433,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way from planet_osm_line where \"historic\"='citywalls') as citywalls", + "table": "(SELECT \n way \n FROM planet_osm_line \n WHERE historic = 'citywalls')\nAS citywalls", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -456,7 +456,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way from planet_osm_line where \"historic\"='castle_walls') as castlewalls", + "table": "(SELECT\n way \n FROM planet_osm_line \n WHERE \"historic\"='castle_walls'\n) AS castlewalls", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -479,7 +479,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way from planet_osm_polygon where \"historic\"='castle_walls') as castlewalls_poly", + "table": "(SELECT \n way \n FROM planet_osm_polygon \n WHERE \"historic\"='castle_walls'\n) AS castlewalls_poly", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -502,7 +502,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,landuse,leisure\n from planet_osm_polygon\n where (landuse = 'military') and building is null\n ) as landuse_overlay", + "table": "(SELECT \n way, landuse, leisure\n FROM planet_osm_polygon\n WHERE (landuse = 'military') AND building IS NULL\n) AS landuse_overlay", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -525,7 +525,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way, barrier from planet_osm_line where barrier is not null) as line_barriers", + "table": "(SELECT \n way, barrier \n FROM planet_osm_line \n WHERE barrier is not null\n) AS line_barriers", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -548,7 +548,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,\"natural\",man_made from planet_osm_line where \"natural\" = 'cliff' or man_made = 'embankment') as cliffs", + "table": "(SELECT \n way,\"natural\",man_made\n FROM planet_osm_line \n WHERE \"natural\" = 'cliff' OR man_made = 'embankment'\n) AS cliffs", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -571,7 +571,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,barrier from planet_osm_polygon where barrier is not null) as area_barriers", + "table": "(SELECT\n way,barrier \n FROM planet_osm_polygon \n WHERE barrier IS NOT NULL\n) AS area_barriers", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -594,7 +594,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,\"natural\" from planet_osm_line where \"natural\" = 'tree_row') as tree_row", + "table": "(SELECT \n way,\"natural\" \n FROM planet_osm_line \n WHERE \"natural\" = 'tree_row'\n) AS tree_row", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -617,7 +617,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way from planet_osm_line where route='ferry' ) as ferry_routes", + "table": "(SELECT \n way \n FROM planet_osm_line \n WHERE route='ferry' \n) AS ferry_routes", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -640,7 +640,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select distinct on (p.way) 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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_casing", + "table": "(SELECT DISTINCT ON (p.way) \n p.way AS way, l.highway AS int_tc_type,\n CASE WHEN l.service IN ('parking_aisle','drive-through','driveway') \n THEN 'INT-minor'::text \n ELSE 'INT-normal'::text \n END AS int_tc_service\n FROM planet_osm_point p\n JOIN planet_osm_line l ON ST_DWithin(p.way,l.way,0.1) -- Assumes Mercator\n JOIN (VALUES\n ('tertiary', 1),\n ('unclassified', 2),\n ('residential', 3),\n ('living_street', 4),\n ('service', 5)\n ) AS v (highway, prio)\n ON v.highway=l.highway\n WHERE p.highway = 'turning_circle'\n OR p.highway = 'turning_loop' \n ORDER BY p.way, v.prio\n) AS turning_circle_casing", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -663,7 +663,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select 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\n where highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform')\n or railway in ('platform')\n order by z_order,way_area desc) as highway_area_casing", + "table": "(SELECT \n way,\n COALESCE((\n 'highway_' || (CASE WHEN highway IN ('residential','unclassified','pedestrian','service','footway','cycleway','track','path','platform') THEN highway ELSE NULL END)), \n ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END))\n ) as feature \n FROM planet_osm_polygon\n WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform')\n OR railway IN ('platform')\n ORDER BY z_order, way_area DESC\n) AS highway_area_casing", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -686,7 +686,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_casing", + "table": "(SELECT\n * \n FROM \n (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) ELSE highway END)) AS feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access IN ('destination') THEN 'destination'::text when access IN ('no', 'private') THEN 'no'::text ELSE NULL END as access, construction, \n CASE WHEN service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text end as service, \n CASE WHEN oneway IN ('yes', '-1') \n AND 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') THEN oneway \n ELSE NULL \n END as oneway, \n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' ELSE 'no' end as link, \n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES\n ('highway_motorway',380), \n ('highway_trunk',370), \n ('highway_primary',360), \n ('highway_secondary',350), \n ('highway_tertiary',340), \n ('highway_residential',330), \n ('highway_unclassified',330), \n ('highway_road',330), \n ('highway_living_street',320), \n ('highway_pedestrian',310), \n ('highway_raceway',300), \n ('highway_motorway_link',240), \n ('highway_trunk_link',230), \n ('highway_primary_link',220), \n ('highway_secondary_link',210), \n ('highway_tertiary_link',200), \n ('highway_service',150), \n ('highway_track',110), \n ('highway_path',100), \n ('highway_footway',100), \n ('highway_bridleway',100), \n ('highway_cycleway',100), \n ('highway_steps',100), \n ('highway_platform',90), \n ('highway_proposed',20), \n ('highway_construction',10)\n ) AS ordertable (feature, prio) \n ON ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) \n AND (covered IS NULL OR NOT covered='yes') \n AND (bridge IS NULL OR NOT bridge IN ('yes', 'viaduct'))\n ) \n UNION ALL \n (SELECT \n way, prio, \n 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' else railway end)), ('aeroway_' || aeroway)) as feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access in ('destination') THEN 'destination'::text when access in ('no', 'private') THEN 'no'::text ELSE NULL END as access, \n construction, CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text end as service, \n null as oneway, 'no' as link, \n CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('railway_rail', 430),\n ('railway_spur', 430),\n ('railway_siding', 430),\n ('railway_subway', 420),\n ('railway_narrow_gauge', 420),\n ('railway_light_rail', 420),\n ('railway_preserved', 420),\n ('railway_funicular', 420),\n ('railway_monorail', 420),\n ('railway_miniature', 420),\n ('railway_turntable', 420),\n ('railway_tram', 410),\n ('railway_disused', 400),\n ('railway_construction', 400),\n ('aeroway_runway', 60),\n ('aeroway_taxiway', 50),\n ('railway_platform', 90)\n ) AS ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature\n WHERE (tunnel IS NULL or not tunnel in ('yes','building_passage'))\n and (covered IS NULL or not covered='yes') \n and (bridge IS NULL or not bridge in ('yes','viaduct'))\n )\n ) AS features \n ORDER BY prio\n) AS roads_casing", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -708,7 +708,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select 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\n where highway in ('residential','unclassified','pedestrian','service','footway','living_street','track','path','platform','services')\n or railway in ('platform')\n or aeroway in ('runway','taxiway','helipad')\n order by z_order,way_area desc) as highway_area_fill", + "table": "(SELECT \n way,\n COALESCE(\n ('highway_' || (CASE WHEN highway in ('residential','unclassified','pedestrian','service','footway','cycleway','living_street','track','path','platform','services') THEN highway ELSE NULL END)), \n ('railway_' || (CASE WHEN railway in ('platform') THEN railway ELSE NULL END)),\n (('aeroway_' || CASE WHEN aeroway in ('runway','taxiway','helipad') THEN aeroway ELSE NULL END))\n ) AS feature \n FROM planet_osm_polygon\n WHERE highway in ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'living_street', 'track', 'path', 'platform', 'services')\n OR railway IN ('platform')\n OR aeroway IN ('runway', 'taxiway', 'helipad')\n ORDER BY z_order, way_area desc\n) AS highway_area_fill", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -731,7 +731,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_fill", + "table": "(SELECT \n * \n FROM \n (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) as feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access in ('no', 'private') THEN 'no'::text \n ELSE NULL \n END AS access,\n construction, \n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text end as service, \n CASE WHEN oneway in ('yes', '-1') and 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') THEN oneway ELSE NULL END as oneway, \n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('highway_motorway',380), \n ('highway_trunk',370), \n ('highway_primary',360), \n ('highway_secondary',350), \n ('highway_tertiary',340), \n ('highway_residential',330),\n ('highway_unclassified',330),\n ('highway_road',330),\n ('highway_living_street',320),\n ('highway_pedestrian',310),\n ('highway_raceway',300),\n ('highway_motorway_link',240),\n ('highway_trunk_link',230),\n ('highway_primary_link',220),\n ('highway_secondary_link',210),\n ('highway_tertiary_link',200),\n ('highway_service',150),\n ('highway_track',110),\n ('highway_path',100),\n ('highway_footway',100),\n ('highway_bridleway',100),\n ('highway_cycleway',100),\n ('highway_steps',100),\n ('highway_platform',90),\n ('highway_proposed',20),\n ('highway_construction',10)\n ) AS ordertable (feature, prio) \n on ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel IS NULL or not tunnel in ('yes','building_passage')) \n and (covered IS NULL or not covered='yes') \n and (bridge IS NULL or not bridge in ('yes','viaduct'))) \n union all \n (SELECT \n way, prio, \n COALESCE(\n ('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' ELSE railway END)),\n ('aeroway_' || aeroway)\n ) AS feature,\n horse, foot, bicycle, tracktype,\n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access IN ('no', 'private') THEN 'no'::text \n ELSE NULL \n END as access,\n construction,\n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text \n END as service,\n NULL as oneway, \n 'no' as link,\n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES\n ('railway_rail',430),\n ('railway_spur',430),\n ('railway_siding',430),\n ('railway_subway',420),\n ('railway_narrow_gauge',420),\n ('railway_light_rail',420),\n ('railway_preserved',420),\n ('railway_funicular',420),\n ('railway_monorail',420), \n ('railway_miniature',420),\n ('railway_turntable',420),\n ('railway_tram',410),\n ('railway_disused',400),\n ('railway_construction',400),\n ('aeroway_runway',60),\n ('aeroway_taxiway',50),\n ('railway_platform',90)) as ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature \n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes','building_passage')) \n AND (covered IS NULL OR NOT covered='yes') \n AND (bridge IS NULL OR NOT bridge IN ('yes','viaduct'))\n )\n ) AS features ORDER BY prio\n) AS roads_fill", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -754,7 +754,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select distinct on (p.way) 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\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle' or p.highway='turning_loop' \n order by p.way,v.prio\n ) as turning_circle_fill", + "table": "(SELECT \n DISTINCT on (p.way) \n p.way as way, l.highway as int_tc_type,\n CASE WHEN l.service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text end AS int_tc_service\n FROM planet_osm_point p\n JOIN planet_osm_line l\n ON ST_DWithin(p.way, l.way, 0.1)\n JOIN (VALUES\n ('tertiary', 1),\n ('unclassified', 2),\n ('residential', 3),\n ('living_street', 4),\n ('service', 5)\n ) AS v (highway,prio)\n ON v.highway=l.highway\n WHERE p.highway='turning_circle' or p.highway='turning_loop' \n ORDER BY p.way,v.prio\n) as turning_circle_fill", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -777,7 +777,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,aerialway from planet_osm_line where aerialway is not null) as aerialways", + "table": "(SELECT way,aerialway FROM planet_osm_line WHERE aerialway is not null) as aerialways", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -800,7 +800,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select 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,tunnel\n from planet_osm_roads\n where highway is not null\n or (railway is not null and railway!='preserved' and (service is null or service not in ('spur','siding','yard')))\n order by z_order\n ) as roads_low_zoom", + "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,tunnel\n FROM planet_osm_roads\n WHERE highway is not null\n or (railway is not null and railway!='preserved' and (service IS NULL or service not in ('spur','siding','yard')))\n ORDER BY z_order\n ) as roads_low_zoom", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -823,7 +823,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,waterway,name,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", + "table": "(SELECT way,waterway,name,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", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -847,7 +847,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where bridge in ('yes','viaduct')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct'))) as features order by layernotnull,prio) as bridges", + "table": "(SELECT * FROM ((SELECT way, prio, ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') THEN oneway ELSE NULL END as oneway, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature WHERE bridge in ('yes','viaduct')) union all (SELECT way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature WHERE bridge in ('yes','viaduct'))) as features ORDER BY layernotnull,prio) as bridges", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -872,7 +872,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way from planet_osm_line where highway='bus_guideway' and (tunnel is null or tunnel != 'yes')) as guideways", + "table": "(SELECT way FROM planet_osm_line WHERE highway='bus_guideway' and (tunnel IS NULL or tunnel != 'yes')) as guideways", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -895,7 +895,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('0','1','2','3','4')\n ) as admin_01234", + "table": "(SELECT way,admin_level\n FROM planet_osm_roads\n WHERE \"boundary\"='administrative'\n and admin_level in ('0','1','2','3','4')\n ) as admin_01234", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -918,7 +918,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('5','6','7','8')\n ) as admin_5678", + "table": "(SELECT way,admin_level\n FROM planet_osm_roads\n WHERE \"boundary\"='administrative'\n and admin_level in ('5','6','7','8')\n ) as admin_5678", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -941,7 +941,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('9', '10')\n ) as admin_other", + "table": "(SELECT way,admin_level\n FROM planet_osm_roads\n WHERE \"boundary\"='administrative'\n and admin_level in ('9', '10')\n ) as admin_other", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -964,7 +964,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way from planet_osm_line where \"power\"='minor_line') as power_minorline", + "table": "(SELECT way FROM planet_osm_line WHERE \"power\"='minor_line') as power_minorline", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -987,7 +987,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way from planet_osm_line where \"power\"='line') as power_line", + "table": "(SELECT way FROM planet_osm_line WHERE \"power\"='line') as power_line", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1032,7 +1032,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,place,name,ref\n from planet_osm_point\n where place in ('country','state')\n ) as placenames_large", + "table": "(SELECT way,place,name,ref\n FROM planet_osm_point\n WHERE place in ('country','state')\n ) as placenames_large", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1055,7 +1055,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,place,name,ref\n from planet_osm_point\n where place in ('city','town') and capital='yes'\n ) as placenames_capital", + "table": "(SELECT way,place,name,ref\n FROM planet_osm_point\n WHERE place in ('city','town') and capital='yes'\n ) as placenames_capital", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1078,7 +1078,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,place,name\n from planet_osm_point\n where place in ('city','town')\n and (capital is null or capital != 'yes')\n ) as placenames_medium", + "table": "(SELECT way,place,name\n FROM planet_osm_point\n WHERE place in ('city','town')\n and (capital IS NULL or capital != 'yes')\n ) as placenames_medium", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1101,7 +1101,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,place,name\n from planet_osm_point\n where place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n ) as placenames_small", + "table": "(SELECT way,place,name\n FROM planet_osm_point\n WHERE place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n ) as placenames_small", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1124,7 +1124,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,name,railway,aerialway,disused\n from planet_osm_point\n where railway in ('station','halt','tram_stop','subway_entrance')\n or aerialway='station'\n ) as stations", + "table": " (SELECT way,name,railway,aerialway,disused\n FROM planet_osm_point\n WHERE railway in ('station','halt','tram_stop','subway_entrance')\n or aerialway='station'\n ) as stations", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1147,7 +1147,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,name,railway,aerialway,disused\n from planet_osm_polygon\n where railway in ('station','halt','tram_stop')\n or aerialway='station'\n ) as stations_poly", + "table": " (SELECT way,name,railway,aerialway,disused\n FROM planet_osm_polygon\n WHERE railway in ('station','halt','tram_stop')\n or aerialway='station'\n ) as stations_poly", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1170,7 +1170,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,name,way_area\n from planet_osm_polygon\n where \"natural\"='glacier' and building is null\n order by way_area desc\n ) as glaciers_text", + "table": " (SELECT way,name,way_area\n FROM planet_osm_polygon\n WHERE \"natural\"='glacier' and building IS NULL\n ORDER BY way_area desc\n ) as glaciers_text", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1193,7 +1193,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select *\n from planet_osm_point\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n or railway='level_crossing'\n ) as amenity_symbols", + "table": "(SELECT *\n FROM planet_osm_point\n WHERE aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n or railway='level_crossing'\n ) as amenity_symbols", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1216,7 +1216,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select *\n from planet_osm_polygon\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree')\n or railway='level_crossing'\n ) as amenity_symbols_poly", + "table": "(SELECT *\n FROM planet_osm_polygon\n WHERE aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree')\n or railway='level_crossing'\n ) as amenity_symbols_poly", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1239,7 +1239,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n order by way_area desc ) as amenity_points_poly", + "table": "(SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n FROM planet_osm_polygon\n WHERE amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n ORDER BY way_area desc ) as amenity_points_poly", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1262,7 +1262,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n from planet_osm_point\n where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", + "table": "(SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n FROM planet_osm_point\n WHERE shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1285,7 +1285,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way from planet_osm_point where power='tower') as power_towers", + "table": "(SELECT way FROM planet_osm_point WHERE power='tower') as power_towers", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1308,7 +1308,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way from planet_osm_point where power='pole') as power_poles", + "table": "(SELECT way FROM planet_osm_point WHERE power='pole') as power_poles", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1354,7 +1354,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,highway,junction,ref,name\n from planet_osm_point\n where highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes'\n ) as junctions", + "table": " (SELECT way,highway,junction,ref,name\n FROM planet_osm_point\n WHERE highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes'\n ) as junctions", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1400,7 +1400,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way, way_area/(!pixel_width!*!pixel_height!) AS way_pixels, highway, name\n from planet_osm_polygon\n where highway in ('residential','unclassified','pedestrian','service','footway','cycleway','living_street','track','path','platform') or railway in ('platform') and name is not null\n ) as roads_area_text_name", + "table": " (SELECT way, way_area/(!pixel_width!*!pixel_height!) AS way_pixels, highway, name\n FROM planet_osm_polygon\n WHERE highway in ('residential','unclassified','pedestrian','service','footway','cycleway','living_street','track','path','platform') or railway in ('platform') and name is not null\n ) as roads_area_text_name", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1423,7 +1423,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way, case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end, name\n from planet_osm_line\n 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','proposed') \n and name is not null\n ) as roads_text_name", + "table": " (SELECT way, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end, name\n FROM planet_osm_line\n 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','proposed') \n and name is not null\n ) as roads_text_name", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1446,7 +1446,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way, highway, name\n from planet_osm_line\n where highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n and name is not null\n ) as paths_text_name", + "table": " (SELECT way, highway, name\n FROM planet_osm_line\n WHERE highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n and name is not null\n ) as paths_text_name", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1469,7 +1469,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n order by way_area desc ) as text_poly", + "table": "(SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area\n FROM planet_osm_polygon\n WHERE amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n ORDER BY way_area desc ) as text_poly", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1492,7 +1492,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", + "table": " (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area\n FROM planet_osm_point\n WHERE amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1515,7 +1515,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select name, way, way_area from planet_osm_polygon where building is not null and building not in ('no','station','supermarket')) as building_text", + "table": "(SELECT name, way, way_area FROM planet_osm_polygon WHERE building is not null and building not in ('no','station','supermarket')) as building_text", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1538,7 +1538,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way from planet_osm_line where \"addr:interpolation\" is not null) as interpolation", + "table": "(SELECT way FROM planet_osm_line WHERE \"addr:interpolation\" is not null) as interpolation", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1561,7 +1561,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,\"addr:housenumber\" from planet_osm_polygon where \"addr:housenumber\" is not null and building is not null\n union\n select way,\"addr:housenumber\" from planet_osm_point where \"addr:housenumber\" is not null\n ) as housenumbers", + "table": " (SELECT way,\"addr:housenumber\" FROM planet_osm_polygon WHERE \"addr:housenumber\" is not null and building is not null\n union\n select way,\"addr:housenumber\" FROM planet_osm_point WHERE \"addr:housenumber\" is not null\n ) as housenumbers", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1584,7 +1584,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,\"addr:housename\" from planet_osm_polygon where \"addr:housename\" is not null and building is not null\n union\n select way,\"addr:housename\" from planet_osm_point where \"addr:housename\" is not null\n ) as housenames", + "table": "(SELECT way,\"addr:housename\" FROM planet_osm_polygon WHERE \"addr:housename\" is not null and building is not null\n union\n select way,\"addr:housename\" FROM planet_osm_point WHERE \"addr:housename\" is not null\n ) as housenames", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1607,7 +1607,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n order by z_order\n ) as water_lines_text", + "table": " (SELECT way,waterway,lock,name,CASE WHEN tunnel in ('yes','culvert') THEN 'yes' else 'no' end as int_tunnel\n FROM planet_osm_line\n WHERE waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n ORDER BY z_order\n ) as water_lines_text", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1630,7 +1630,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select 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')) as admin_text", + "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')) as admin_text", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1653,7 +1653,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,way_area,name,boundary from planet_osm_polygon where (boundary='national_park' or leisure='nature_reserve') and building is null) as national_park_boundaries", + "table": "(SELECT way,way_area,name,boundary FROM planet_osm_polygon WHERE (boundary='national_park' or leisure='nature_reserve') and building IS NULL) as national_park_boundaries", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1676,7 +1676,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(select way,name,tourism from planet_osm_polygon where tourism='theme_park') as theme_park", + "table": "(SELECT way,name,tourism FROM planet_osm_polygon WHERE tourism='theme_park') as theme_park", "geometry_field": "way", "type": "postgis", "key_field": "", diff --git a/project.yaml b/project.yaml index b830acad41..06c4a42fde 100644 --- a/project.yaml +++ b/project.yaml @@ -99,33 +99,35 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way, name, religion, - coalesce (aeroway, amenity, landuse, leisure, military, "natural", power, tourism, highway) 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', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity, - ('landuse_' || (case when landuse in ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', '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', 'picnic_table','sports_centre','stadium','pitch','track') then leisure else null end)) as leisure, - ('military_' || (case when military in ('barracks', 'danger_area') then military else null end)) as military, - ('natural_' || (case when "natural" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') then "natural" else null end)) as "natural", - ('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', 'zoo') then tourism else null end)) as tourism, - ('highway_' || (case when highway in ('services', 'rest_area') then highway else null end)) as highway, - case when religion in ('christian','jewish') then religion else 'INT-generic'::text end as religion - from planet_osm_polygon - where landuse is not null - or leisure is not null - or aeroway in ('apron','aerodrome') - or amenity in ('parking','university','college','school','hospital','kindergarten','grave_yard') - or military in ('barracks','danger_area') - or "natural" in ('beach','desert','heath','mud','grassland','wood','sand','scrub') - or power in ('station','sub_station','substation','generator') - or tourism in ('attraction','camp_site','caravan_site','picnic_site','zoo') - or highway in ('services','rest_area') - order by z_order,way_area desc - ) as landcover - ) as features + table: |- + (SELECT + way, name, religion, + COALESCE(aeroway, amenity, landuse, leisure, military, "natural", power, tourism, highway) 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', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') THEN amenity ELSE NULL END)) AS amenity, + ('landuse_' || (CASE WHEN landuse IN ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', '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', 'picnic_table','sports_centre','stadium','pitch','track') THEN leisure ELSE NULL END)) AS leisure, + ('military_' || (CASE WHEN military IN ('barracks', 'danger_area') THEN military ELSE NULL END)) AS military, + ('natural_' || (CASE WHEN "natural" IN ('beach','desert','heath','mud','grassland','wood','sand','scrub') THEN "natural" ELSE NULL END)) AS "natural", + ('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', 'zoo') THEN tourism ELSE NULL END)) AS tourism, + ('highway_' || (CASE WHEN highway IN ('services', 'rest_area') THEN highway ELSE NULL END)) AS highway, + CASE WHEN religion IN ('christian','jewish') THEN religion ELSE 'INT-generic'::text end AS religion + FROM planet_osm_polygon + WHERE landuse IS NOT NULL + OR leisure IS NOT NULL + OR aeroway IN ('apron','aerodrome') + OR amenity IN ('parking','university','college','school','hospital','kindergarten','grave_yard') + OR military IN ('barracks','danger_area') + OR "natural" IN ('beach','desert','heath','mud','grassland','wood','sand','scrub') + OR power IN ('station','sub_station','substation','generator') + OR tourism IN ('attraction','camp_site','caravan_site','picnic_site','zoo') + OR highway IN ('services','rest_area') + ORDER BY z_order, way_area DESC + ) AS landcover + ) AS features advanced: {} - id: "landcover-line" name: "landcover-line" @@ -134,11 +136,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way - from planet_osm_line - where man_made='cutline' - ) as landcover_line + table: |- + (SELECT + way + FROM planet_osm_line + WHERE man_made='cutline' + ) AS landcover_line advanced: {} - id: "water-lines-casing" name: "water-lines-casing" @@ -147,12 +150,14 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,waterway,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel - from planet_osm_line - where waterway in ('stream','drain','ditch') - and (tunnel is null or tunnel != 'yes') - ) as water_lines_casing + table: |- + (SELECT + way, waterway, + CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel + FROM planet_osm_line + WHERE waterway IN ('stream', 'drain', 'ditch') + AND (tunnel IS NULL OR tunnel != 'yes') + ) AS water_lines_casing advanced: {} - id: "water-lines-low-zoom" name: "water-lines-low-zoom" @@ -161,11 +166,11 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,waterway - from planet_osm_line - where waterway='river' - ) as water_lines_low_zoom + table: |- + (SELECT way, waterway + FROM planet_osm_line + WHERE waterway='river' + ) AS water_lines_low_zoom advanced: {} - id: "water-areas" name: "water-areas" @@ -174,17 +179,18 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (SELECT + table: |- + (SELECT way, "natural", waterway, landuse, name, way_area/(!pixel_width!*!pixel_height!) AS way_pixels FROM planet_osm_polygon WHERE (waterway IN ('dock', 'riverbank', 'canal') - OR landuse IN ('reservoir','basin') - OR "natural" IN ('lake','water','land','glacier','mud')) + OR landuse IN ('reservoir', 'basin') + OR "natural" IN ('lake', 'water', 'land', 'glacier', 'mud')) AND building IS NULL AND way_area/(!pixel_width!*!pixel_height!) > 0.01 - ORDER BY z_order, way_area) AS water_areas + ORDER BY z_order, way_area + ) AS water_areas advanced: {} - id: "water-areas-overlay" name: "water-areas-overlay" @@ -193,12 +199,13 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,"natural" - from planet_osm_polygon - where "natural" in ('marsh','wetland') and building is null - order by z_order,way_area desc - ) as water_areas_overlay + table: |- + (SELECT + way, "natural" + FROM planet_osm_polygon + WHERE "natural" IN ('marsh', 'wetland') AND building IS NULL + ORDER BY z_order,way_area DESC + ) AS water_areas_overlay advanced: {} - id: "water-lines" name: "water-lines" @@ -207,13 +214,16 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel, 'no' as bridge - from planet_osm_line - where waterway in ('weir','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 + table: |- + (SELECT + way, waterway, lock, name, + CASE WHEN tunnel IN ('yes','culvert') THEN 'yes' ELSE 'no' END AS int_tunnel, + 'no' as bridge + FROM planet_osm_line + WHERE waterway in ('weir', '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 advanced: {} - id: "dam" name: "dam" @@ -222,8 +232,11 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,name from planet_osm_line where waterway='dam') as dam + table: |- + (SELECT way, name + FROM planet_osm_line + WHERE waterway = 'dam' + ) AS dam advanced: {} - id: "marinas-area" name: "marinas-area" @@ -232,8 +245,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way from planet_osm_polygon where leisure ='marina') as marinas_area + table: |- + (SELECT + way + FROM planet_osm_polygon + WHERE leisure = 'marina' + ) AS marinas_area advanced: {} - id: "piers-area" name: "piers-area" @@ -242,8 +259,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,man_made from planet_osm_polygon where man_made in ('pier','breakwater','groyne')) as piers_area + table: |- + (SELECT + way, man_made + FROM planet_osm_polygon + WHERE man_made IN ('pier', 'breakwater', 'groyne') + ) AS piers_area advanced: {} - id: "piers" name: "piers" @@ -252,8 +273,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,man_made from planet_osm_line where man_made in ('pier','breakwater','groyne')) as piers + table: |- + (SELECT + way, man_made + FROM planet_osm_line + WHERE man_made IN ('pier', 'breakwater', 'groyne') + ) as piers advanced: {} - id: "locks" name: "locks" @@ -262,8 +287,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,waterway from planet_osm_point where waterway='lock_gate') as locks + table: |- + (SELECT + way, waterway + FROM planet_osm_point + WHERE waterway = 'lock_gate' + ) as locks advanced: {} - id: "buildings-lz" name: "buildings-lz" @@ -272,12 +301,14 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,building,railway,amenity from planet_osm_polygon - where railway='station' - or building in ('station','supermarket') - or amenity='place_of_worship' - order by z_order,way_area desc) as buildings_lz + table: |- + (SELECT + way, building, railway, amenity FROM planet_osm_polygon + WHERE railway='station' + OR building IN ('station', 'supermarket') + OR amenity = 'place_of_worship' + ORDER BY z_order, way_area DESC + ) as buildings_lz advanced: {} - id: "buildings" name: "buildings" @@ -286,19 +317,21 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,aeroway, - case - when building in ('garage','roof','garages','service','shed','shelter','cabin','storage_tank','tank','support','glasshouse','greenhouse','mobile_home','kiosk','silo','canopy','tent') then 'INT-light'::text - else building - end as building - from planet_osm_polygon - where (building is not null - and building not in ('no','station','supermarket','planned') - and (railway is null or railway != 'station') - and (amenity is null or amenity != 'place_of_worship')) - or aeroway = 'terminal' - order by z_order,way_area desc) as buildings + table: |- + (SELECT + way,aeroway, + CASE + WHEN building IN ('garage','roof','garages','service','shed','shelter','cabin','storage_tank','tank','support','glasshouse','greenhouse','mobile_home','kiosk','silo','canopy','tent') THEN 'INT-light'::text + ELSE building + END AS building + FROM planet_osm_polygon + WHERE (building IS NOT null + AND building NOT IN ('no','station','supermarket','planned') + AND (railway IS null OR railway != 'station') + AND (amenity IS null OR amenity != 'place_of_worship')) + OR aeroway = 'terminal' + ORDER BY z_order, way_area DESC + ) AS buildings advanced: {} - id: "tunnels" name: "tunnels" @@ -307,8 +340,99 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where (tunnel='yes' or tunnel='building_passage' or covered='yes'))) as features order by layernotnull,prio) as tunnels + table: |- + (SELECT * + FROM ( + (SELECT + way, prio, + ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) ELSE highway END)) AS feature, + horse, foot, bicycle, tracktype, + 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') AND 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') THEN oneway + ELSE NULL + END AS oneway, + CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' + ELSE 'no' END AS link, + CASE WHEN layer IS NULL THEN '0' + ELSE layer + END AS layernotnull + FROM planet_osm_line + JOIN (VALUES + ('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), + ('highway_proposed', 20), + ('highway_construction', 10) + ) AS ordertable (feature, prio) + ON ('highway_' || planet_osm_line.highway) = ordertable.feature + WHERE (tunnel='yes' or tunnel='building_passage' or covered='yes')) + UNION ALL + (SELECT + way, prio, + 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' else railway END)), + ('aeroway_' || aeroway)) AS feature, + horse, foot, bicycle, tracktype, + 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 IS NULL THEN '0' ELSE layer END AS layernotnull + FROM planet_osm_line + JOIN (VALUES + ('railway_rail', 430), + ('railway_spur', 430), + ('railway_siding', 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_disused', 400), + ('railway_construction', 400), + ('aeroway_runway', 60), + ('aeroway_taxiway', 50), + ('railway_platform', 90) + ) AS ordertable (feature, prio) + ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature + WHERE (tunnel='yes' or tunnel='building_passage' or covered='yes')) + ) AS features + ORDER BY layernotnull, prio + ) AS tunnels properties: group-by: "layernotnull" advanced: {} @@ -319,8 +443,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way from planet_osm_line where "historic"='citywalls') as citywalls + table: |- + (SELECT + way + FROM planet_osm_line + WHERE historic = 'citywalls') + AS citywalls advanced: {} - id: "castlewalls" name: "castlewalls" @@ -329,8 +457,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way from planet_osm_line where "historic"='castle_walls') as castlewalls + table: |- + (SELECT + way + FROM planet_osm_line + WHERE "historic"='castle_walls' + ) AS castlewalls advanced: {} - id: "castlewalls-poly" name: "castlewalls-poly" @@ -339,8 +471,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way from planet_osm_polygon where "historic"='castle_walls') as castlewalls_poly + table: |- + (SELECT + way + FROM planet_osm_polygon + WHERE "historic"='castle_walls' + ) AS castlewalls_poly advanced: {} - id: "landuse-overlay" name: "landuse-overlay" @@ -349,11 +485,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,landuse,leisure - from planet_osm_polygon - where (landuse = 'military') and building is null - ) as landuse_overlay + table: |- + (SELECT + way, landuse, leisure + FROM planet_osm_polygon + WHERE (landuse = 'military') AND building IS NULL + ) AS landuse_overlay advanced: {} - id: "line-barriers" name: "line-barriers" @@ -362,8 +499,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way, barrier from planet_osm_line where barrier is not null) as line_barriers + table: |- + (SELECT + way, barrier + FROM planet_osm_line + WHERE barrier is not null + ) AS line_barriers advanced: {} - id: "cliffs" name: "cliffs" @@ -372,8 +513,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,"natural",man_made from planet_osm_line where "natural" = 'cliff' or man_made = 'embankment') as cliffs + table: |- + (SELECT + way,"natural",man_made + FROM planet_osm_line + WHERE "natural" = 'cliff' OR man_made = 'embankment' + ) AS cliffs advanced: {} - id: "area-barriers" name: "area-barriers" @@ -382,8 +527,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,barrier from planet_osm_polygon where barrier is not null) as area_barriers + table: |- + (SELECT + way,barrier + FROM planet_osm_polygon + WHERE barrier IS NOT NULL + ) AS area_barriers advanced: {} - id: "tree-row" name: "tree-row" @@ -392,8 +541,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way,"natural" from planet_osm_line where "natural" = 'tree_row') as tree_row + table: |- + (SELECT + way,"natural" + FROM planet_osm_line + WHERE "natural" = 'tree_row' + ) AS tree_row advanced: {} - id: "ferry-routes" name: "ferry-routes" @@ -402,8 +555,12 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select way from planet_osm_line where route='ferry' ) as ferry_routes + table: |- + (SELECT + way + FROM planet_osm_line + WHERE route='ferry' + ) AS ferry_routes advanced: {} - id: "turning-circle-casing" name: "turning-circle-casing" @@ -412,22 +569,27 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (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) - ) 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 + 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 advanced: {} - id: "highway-area-casing" name: "highway-area-casing" @@ -436,11 +598,18 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (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 + 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 advanced: {} - name: "roads-casing" id: "roads-casing" @@ -449,8 +618,94 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_casing + table: |- + (SELECT + * + FROM + ( + (SELECT + way, prio, + ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) ELSE highway END)) AS feature, + horse, foot, bicycle, tracktype, + 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') + AND 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') THEN oneway + ELSE NULL + END as oneway, + CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' ELSE 'no' end as link, + CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull + FROM planet_osm_line + JOIN (VALUES + ('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), + ('highway_proposed',20), + ('highway_construction',10) + ) AS ordertable (feature, prio) + ON ('highway_' || planet_osm_line.highway) = ordertable.feature + 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', 'viaduct')) + ) + UNION ALL + (SELECT + way, prio, + 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' else railway end)), ('aeroway_' || aeroway)) as feature, + horse, foot, bicycle, tracktype, + 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 IS NULL THEN '0' else layer end as layernotnull + FROM planet_osm_line + JOIN (VALUES + ('railway_rail', 430), + ('railway_spur', 430), + ('railway_siding', 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_disused', 400), + ('railway_construction', 400), + ('aeroway_runway', 60), + ('aeroway_taxiway', 50), + ('railway_platform', 90) + ) AS ordertable (feature, prio) + ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature + 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','viaduct')) + ) + ) AS features + ORDER BY prio + ) AS roads_casing advanced: {} - id: "highway-area-fill" name: "highway-area-fill" @@ -459,12 +714,20 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (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 + 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 advanced: {} - id: "roads-fill" name: "roads-fill" @@ -473,8 +736,101 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')))) as features order by prio) as roads_fill + table: |- + (SELECT + * + FROM + ( + (SELECT + way, prio, + ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) as feature, + horse, foot, bicycle, tracktype, + 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') and 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') THEN oneway ELSE NULL END as oneway, + CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull + FROM planet_osm_line + JOIN (VALUES + ('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), + ('highway_proposed',20), + ('highway_construction',10) + ) AS ordertable (feature, prio) + on ('highway_' || planet_osm_line.highway) = ordertable.feature + 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','viaduct'))) + union all + (SELECT + way, prio, + 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' ELSE railway END)), + ('aeroway_' || aeroway) + ) AS feature, + horse, foot, bicycle, tracktype, + 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 IS NULL THEN '0' ELSE layer END AS layernotnull + FROM planet_osm_line + JOIN (VALUES + ('railway_rail',430), + ('railway_spur',430), + ('railway_siding',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_disused',400), + ('railway_construction',400), + ('aeroway_runway',60), + ('aeroway_taxiway',50), + ('railway_platform',90)) as ordertable (feature, prio) + ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature + 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','viaduct')) + ) + ) AS features ORDER BY prio + ) AS roads_fill advanced: {} - id: "turning-circle-fill" name: "turning-circle-fill" @@ -483,22 +839,26 @@ Layer: <<: *extents Datasource: <<: *osm2pgsql - table: |2- - (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) - ) 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 + 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) + ) 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 advanced: {} - id: "aerialways" name: "aerialways" @@ -508,7 +868,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,aerialway from planet_osm_line where aerialway is not null) as aerialways + (SELECT way,aerialway FROM planet_osm_line WHERE aerialway is not null) as aerialways advanced: {} - id: "roads-low-zoom" name: "roads-low-zoom" @@ -518,11 +878,11 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (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,tunnel - 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 + (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,tunnel + 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 advanced: {} - id: "waterway-bridges" @@ -533,7 +893,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,waterway,name,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 + (SELECT way,waterway,name,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 advanced: {} - id: "bridges" name: "bridges" @@ -543,7 +903,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select * from ((select way, prio, ('highway_' || (case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') then oneway else null end as oneway, case when substr(highway, length(highway)-3, 4) = 'link' then 'yes' else 'no' end as link, case when layer is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature where bridge in ('yes','viaduct')) union all (select way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 is null then '0' else layer end as layernotnull from planet_osm_line join ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature where bridge in ('yes','viaduct'))) as features order by layernotnull,prio) as bridges + (SELECT * FROM ((SELECT way, prio, ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') THEN oneway ELSE NULL END as oneway, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature WHERE bridge in ('yes','viaduct')) union all (SELECT way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature WHERE bridge in ('yes','viaduct'))) as features ORDER BY layernotnull,prio) as bridges properties: group-by: "layernotnull" advanced: {} @@ -555,7 +915,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way from planet_osm_line where highway='bus_guideway' and (tunnel is null or tunnel != 'yes')) as guideways + (SELECT way FROM planet_osm_line WHERE highway='bus_guideway' and (tunnel IS NULL or tunnel != 'yes')) as guideways advanced: {} - name: "admin-01234" id: "admin-01234" @@ -565,9 +925,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,admin_level - from planet_osm_roads - where "boundary"='administrative' + (SELECT way,admin_level + FROM planet_osm_roads + WHERE "boundary"='administrative' and admin_level in ('0','1','2','3','4') ) as admin_01234 advanced: {} @@ -579,9 +939,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,admin_level - from planet_osm_roads - where "boundary"='administrative' + (SELECT way,admin_level + FROM planet_osm_roads + WHERE "boundary"='administrative' and admin_level in ('5','6','7','8') ) as admin_5678 advanced: {} @@ -593,9 +953,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,admin_level - from planet_osm_roads - where "boundary"='administrative' + (SELECT way,admin_level + FROM planet_osm_roads + WHERE "boundary"='administrative' and admin_level in ('9', '10') ) as admin_other advanced: {} @@ -607,7 +967,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way from planet_osm_line where "power"='minor_line') as power_minorline + (SELECT way FROM planet_osm_line WHERE "power"='minor_line') as power_minorline advanced: {} - id: "power-line" name: "power-line" @@ -617,7 +977,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way from planet_osm_line where "power"='line') as power_line + (SELECT way FROM planet_osm_line WHERE "power"='line') as power_line advanced: {} - id: "nepopulated" name: "nepopulated" @@ -638,9 +998,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,place,name,ref - from planet_osm_point - where place in ('country','state') + (SELECT way,place,name,ref + FROM planet_osm_point + WHERE place in ('country','state') ) as placenames_large advanced: {} - id: "placenames-capital" @@ -651,9 +1011,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,place,name,ref - from planet_osm_point - where place in ('city','town') and capital='yes' + (SELECT way,place,name,ref + FROM planet_osm_point + WHERE place in ('city','town') and capital='yes' ) as placenames_capital advanced: {} - id: "placenames-medium" @@ -664,10 +1024,10 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,place,name - from planet_osm_point - where place in ('city','town') - and (capital is null or capital != 'yes') + (SELECT way,place,name + FROM planet_osm_point + WHERE place in ('city','town') + and (capital IS NULL or capital != 'yes') ) as placenames_medium advanced: {} - id: "placenames-small" @@ -678,9 +1038,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,place,name - from planet_osm_point - where place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm') + (SELECT way,place,name + FROM planet_osm_point + WHERE place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm') ) as placenames_small advanced: {} - id: "stations" @@ -691,9 +1051,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,name,railway,aerialway,disused - from planet_osm_point - where railway in ('station','halt','tram_stop','subway_entrance') + (SELECT way,name,railway,aerialway,disused + FROM planet_osm_point + WHERE railway in ('station','halt','tram_stop','subway_entrance') or aerialway='station' ) as stations advanced: {} @@ -705,9 +1065,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,name,railway,aerialway,disused - from planet_osm_polygon - where railway in ('station','halt','tram_stop') + (SELECT way,name,railway,aerialway,disused + FROM planet_osm_polygon + WHERE railway in ('station','halt','tram_stop') or aerialway='station' ) as stations_poly advanced: {} @@ -719,10 +1079,10 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,name,way_area - from planet_osm_polygon - where "natural"='glacier' and building is null - order by way_area desc + (SELECT way,name,way_area + FROM planet_osm_polygon + WHERE "natural"='glacier' and building IS NULL + ORDER BY way_area desc ) as glaciers_text advanced: {} - id: "amenity-symbols" @@ -733,9 +1093,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select * - from planet_osm_point - where aeroway in ('aerodrome','helipad') + (SELECT * + FROM planet_osm_point + WHERE aeroway in ('aerodrome','helipad') or barrier in ('bollard','gate','lift_gate','block') or highway in ('mini_roundabout','gate') or man_made in ('lighthouse','power_wind','windmill','mast') @@ -752,9 +1112,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select * - from planet_osm_polygon - where aeroway in ('aerodrome','helipad') + (SELECT * + FROM planet_osm_polygon + WHERE aeroway in ('aerodrome','helipad') or barrier in ('bollard','gate','lift_gate','block') or highway in ('mini_roundabout','gate') or man_made in ('lighthouse','power_wind','windmill','mast') @@ -771,16 +1131,16 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion - from planet_osm_polygon - where amenity is not null + (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion + FROM planet_osm_polygon + WHERE amenity is not null or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet') or highway in ('bus_stop','traffic_signals') or man_made in ('mast','water_tower') or historic in ('memorial','archaeological_site') or leisure in ('playground', 'picnic_table') - order by way_area desc ) as amenity_points_poly + ORDER BY way_area desc ) as amenity_points_poly advanced: {} - id: "amenity-points" name: "amenity-points" @@ -790,9 +1150,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion - from planet_osm_point - where shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') + (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion + FROM planet_osm_point + WHERE shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') or amenity is not null or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet') or highway in ('bus_stop','traffic_signals','ford') @@ -811,7 +1171,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way from planet_osm_point where power='tower') as power_towers + (SELECT way FROM planet_osm_point WHERE power='tower') as power_towers advanced: {} - id: "power-poles" name: "power-poles" @@ -821,7 +1181,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way from planet_osm_point where power='pole') as power_poles + (SELECT way FROM planet_osm_point WHERE power='pole') as power_poles advanced: {} - id: "roads-text-ref-low-zoom" name: "roads-text-ref-low-zoom" @@ -856,9 +1216,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,highway,junction,ref,name - from planet_osm_point - where highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes' + (SELECT way,highway,junction,ref,name + FROM planet_osm_point + WHERE highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes' ) as junctions advanced: {} - id: "roads-text-ref" @@ -894,9 +1254,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way, way_area/(!pixel_width!*!pixel_height!) 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 + (SELECT way, way_area/(!pixel_width!*!pixel_height!) 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 advanced: {} - id: "roads-text-name" @@ -907,9 +1267,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way, case when substr(highway, length(highway)-3, 4) = 'link' then substr(highway,0,length(highway)-4) else highway end, 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','proposed') + (SELECT way, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end, 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','proposed') and name is not null ) as roads_text_name advanced: {} @@ -921,9 +1281,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way, highway, name - from planet_osm_line - where highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') + (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 advanced: {} @@ -935,9 +1295,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area - from planet_osm_polygon - where amenity is not null + (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area + FROM planet_osm_polygon + WHERE amenity is not null or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') or leisure is not null or landuse is not null @@ -947,7 +1307,7 @@ Layer: or place='island' or military='danger_area' or historic in ('memorial','archaeological_site') - order by way_area desc ) as text_poly + ORDER BY way_area desc ) as text_poly advanced: {} - id: "text" name: "text" @@ -957,9 +1317,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,coalesce('aeroway_' || aeroway, 'shop_' || case when shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') then shop when not shop is null then 'other' else null end, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area - from planet_osm_point - where amenity is not null + (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area + FROM planet_osm_point + WHERE amenity is not null or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') or leisure is not null or landuse is not null @@ -981,7 +1341,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select name, way, way_area from planet_osm_polygon where building is not null and building not in ('no','station','supermarket')) as building_text + (SELECT name, way, way_area FROM planet_osm_polygon WHERE building is not null and building not in ('no','station','supermarket')) as building_text advanced: {} - id: "interpolation" name: "interpolation" @@ -991,7 +1351,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way from planet_osm_line where "addr:interpolation" is not null) as interpolation + (SELECT way FROM planet_osm_line WHERE "addr:interpolation" is not null) as interpolation advanced: {} - id: "housenumbers" name: "housenumbers" @@ -1001,9 +1361,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,"addr:housenumber" from planet_osm_polygon where "addr:housenumber" is not null and building is not null + (SELECT way,"addr:housenumber" FROM planet_osm_polygon WHERE "addr:housenumber" is not null and building is not null union - select way,"addr:housenumber" from planet_osm_point where "addr:housenumber" is not null + select way,"addr:housenumber" FROM planet_osm_point WHERE "addr:housenumber" is not null ) as housenumbers advanced: {} - id: "housenames" @@ -1014,9 +1374,9 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,"addr:housename" from planet_osm_polygon where "addr:housename" is not null and building is not null + (SELECT way,"addr:housename" FROM planet_osm_polygon WHERE "addr:housename" is not null and building is not null union - select way,"addr:housename" from planet_osm_point where "addr:housename" is not null + select way,"addr:housename" FROM planet_osm_point WHERE "addr:housename" is not null ) as housenames advanced: {} - id: "water-lines-text" @@ -1027,10 +1387,10 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,waterway,lock,name,case when tunnel in ('yes','culvert') then 'yes' else 'no' end as int_tunnel - from planet_osm_line - where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi') - order by z_order + (SELECT way,waterway,lock,name,CASE WHEN tunnel in ('yes','culvert') THEN 'yes' else 'no' end as int_tunnel + FROM planet_osm_line + WHERE waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi') + ORDER BY z_order ) as water_lines_text advanced: {} - id: "admin-text" @@ -1041,7 +1401,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (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')) as admin_text + (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')) as admin_text advanced: {} - id: "nature-reserve-boundaries" name: "nature-reserve-boundaries" @@ -1051,7 +1411,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,way_area,name,boundary from planet_osm_polygon where (boundary='national_park' or leisure='nature_reserve') and building is null) as national_park_boundaries + (SELECT way,way_area,name,boundary FROM planet_osm_polygon WHERE (boundary='national_park' or leisure='nature_reserve') and building IS NULL) as national_park_boundaries advanced: {} - id: "theme-park" name: "theme-park" @@ -1061,5 +1421,5 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (select way,name,tourism from planet_osm_polygon where tourism='theme_park') as theme_park + (SELECT way,name,tourism FROM planet_osm_polygon WHERE tourism='theme_park') as theme_park advanced: {} From d31bd93a4a2184ba197cf075053e951d70dd735c Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Sat, 13 Sep 2014 14:51:36 -0700 Subject: [PATCH 67/74] Add documentation on YAML and SQL to CONTRIBUTING.md --- CONTRIBUTING.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 448edcb33f..519b417fa7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,6 +10,16 @@ You should fork the project into your own repo, create a topic branch there and then make one or more pull requests back to the gravitystorm repository. Your pull requests will then be reviewed and discussed. +## Editing Layers + +OpenStreetMap Carto uses a YAML file for defining layers. Some of the rationale is outlined in [a GitHub issue](https://github.com/gravitystorm/openstreetmap-carto/issues/711). Editing SQL in a YAML file is much friendlier than editing escaped SQL in a JSON file. + +This requires a preprocessing step to convert the YAML to JSON. A script is provided at ``scripts/yaml2mml.py``, which depends on PyYAML, available through ``pip install pyyaml`` or packaged on Ubuntu as ``python-yaml``. + +After editing the YAML file, run ``./scripts/yaml2mml.py < project.yaml > project.mml && touch project.mml`` to update the file and force TileMill to reload it. + +When committing changes, add the entire project.mml file with ``git add project.mml``. One of the big advantages of this system is that to resolve any layer merge conflicts, they only need to be resolved in the YAML file where they are easier to handle, then the JSON file can be regenerated. + ## CartoCSS Style Guidelines * Always specify zoom levels as either >= or < . Don't use = or =< or > @@ -18,7 +28,6 @@ Your pull requests will then be reviewed and discussed. * Two space indents. No tabs. * space after : but not before * Dashes, not underscores, in layer names -* Name SQL subqueries after the layer name (but use underscores) * Avoid restating defaults, e.g. don't add `point-allow-overlap = false` * Avoid repeating the layer name for layers with mutiple attachments, i.e., prefer @@ -48,6 +57,20 @@ instead of ``` * Order the selectors in a style-sheet in rough order of importance (i.e., highway=primary, then highway=secondary) and beyond that, add layers that are rendered later (i.e., higher) lower in the file. +## SQL Style Guidelines +Because SQL within JSON or YAML will not generally be syntax highlighted, indentation and caps are particularly important. + +* SQL keywords in caps, as in PostgreSQL documentation +* Two space indents. No tabs. +* Start with ``(SELECT`` and start the columns on the next line. +* Two indents for columns, to bring them to the same indent level as later clause contents +* Add indentation after ``SELECT``s until the end of the sub-select. +* Add indentation for contents of ``FROM``, ``WHERE``, ``ORDER BY`` and other clauses +* Put content with WHERE, etc if it's short +* Add indentation if necessary for complex function calls, WHERE parenthesis, and CASE statements +* One space before and after = etc +* Name SQL subqueries after the layer name (but use underscores) + ## Previews Some changes benefit from a review from a wider audience. In most cases some static images are sufficient, but sometimes a demo layer is necessary. pnorman has a private server which can host layers and has some data from parts of the world loaded. Before requesting this in a pull request, make sure that you don't anticipate any more changes to it. From 72d5baabe4a770397dc335b8c3aec073eb27167e Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Sat, 13 Sep 2014 18:03:24 -0700 Subject: [PATCH 68/74] Add PyYAML to dependencies, but only if editing the MML file --- INSTALL.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/INSTALL.md b/INSTALL.md index 85ef1a6564..224d96a58b 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -89,3 +89,5 @@ If you aren't using TileMill, you can compile the CartoCSS stylesheets into Mapn * [ogr2ogr](http://www.gdal.org/) command line GDAL utility for processing vector data. here we use it to work around a encoding bug in the Nautral Earth data. * curl, unzip for downloading and decompressing files * shapeindex (a companion utility to Mapnik found in the mapnik-utils package) for indexing downloaded shapefiles + +* [PyYAML] (http://pyyaml.org/wiki/PyYAML) if editing the MML (layer definition) file (packaged as ``python-yaml`` on Ubuntu, or installed with ``pip install pyyaml``) From 08d3fb838ae43676099a1e8315de693264326357 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Sat, 13 Sep 2014 18:10:15 -0700 Subject: [PATCH 69/74] Fix typo and missed caps/quotes --- project.mml | 16 ++++++++-------- project.yaml | 18 +++++++++--------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/project.mml b/project.mml index 65c25400cd..533542bef8 100644 --- a/project.mml +++ b/project.mml @@ -108,7 +108,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT \n way\n FROM planet_osm_line\n WHERE man_made='cutline'\n) AS landcover_line", + "table": "(SELECT \n way\n FROM planet_osm_line\n WHERE man_made = 'cutline'\n) AS landcover_line", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -154,7 +154,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way, waterway\n FROM planet_osm_line\n WHERE waterway='river'\n) AS water_lines_low_zoom", + "table": "(SELECT way, waterway\n FROM planet_osm_line\n WHERE waterway = 'river'\n) AS water_lines_low_zoom", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -338,7 +338,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT \n way, waterway \n FROM planet_osm_point \n WHERE waterway = 'lock_gate'\n) as locks", + "table": "(SELECT \n way, waterway \n FROM planet_osm_point \n WHERE waterway = 'lock_gate'\n) AS locks", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -361,7 +361,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way, building, railway, amenity FROM planet_osm_polygon\n WHERE railway='station'\n OR building IN ('station', 'supermarket')\n OR amenity = 'place_of_worship'\n ORDER BY z_order, way_area DESC\n) as buildings_lz", + "table": "(SELECT\n way, building, railway, amenity FROM planet_osm_polygon\n WHERE railway = 'station'\n OR building IN ('station', 'supermarket')\n OR amenity = 'place_of_worship'\n ORDER BY z_order, way_area DESC\n) AS buildings_lz", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -456,7 +456,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n way \n FROM planet_osm_line \n WHERE \"historic\"='castle_walls'\n) AS castlewalls", + "table": "(SELECT\n way \n FROM planet_osm_line \n WHERE historic = 'castle_walls'\n) AS castlewalls", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -479,7 +479,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT \n way \n FROM planet_osm_polygon \n WHERE \"historic\"='castle_walls'\n) AS castlewalls_poly", + "table": "(SELECT \n way \n FROM planet_osm_polygon \n WHERE historic = 'castle_walls'\n) AS castlewalls_poly", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -617,7 +617,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT \n way \n FROM planet_osm_line \n WHERE route='ferry' \n) AS ferry_routes", + "table": "(SELECT \n way \n FROM planet_osm_line \n WHERE route = 'ferry' \n) AS ferry_routes", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -731,7 +731,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT \n * \n FROM \n (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) as feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access in ('no', 'private') THEN 'no'::text \n ELSE NULL \n END AS access,\n construction, \n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text end as service, \n CASE WHEN oneway in ('yes', '-1') and 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') THEN oneway ELSE NULL END as oneway, \n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('highway_motorway',380), \n ('highway_trunk',370), \n ('highway_primary',360), \n ('highway_secondary',350), \n ('highway_tertiary',340), \n ('highway_residential',330),\n ('highway_unclassified',330),\n ('highway_road',330),\n ('highway_living_street',320),\n ('highway_pedestrian',310),\n ('highway_raceway',300),\n ('highway_motorway_link',240),\n ('highway_trunk_link',230),\n ('highway_primary_link',220),\n ('highway_secondary_link',210),\n ('highway_tertiary_link',200),\n ('highway_service',150),\n ('highway_track',110),\n ('highway_path',100),\n ('highway_footway',100),\n ('highway_bridleway',100),\n ('highway_cycleway',100),\n ('highway_steps',100),\n ('highway_platform',90),\n ('highway_proposed',20),\n ('highway_construction',10)\n ) AS ordertable (feature, prio) \n on ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel IS NULL or not tunnel in ('yes','building_passage')) \n and (covered IS NULL or not covered='yes') \n and (bridge IS NULL or not bridge in ('yes','viaduct'))) \n union all \n (SELECT \n way, prio, \n COALESCE(\n ('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' ELSE railway END)),\n ('aeroway_' || aeroway)\n ) AS feature,\n horse, foot, bicycle, tracktype,\n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access IN ('no', 'private') THEN 'no'::text \n ELSE NULL \n END as access,\n construction,\n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text \n END as service,\n NULL as oneway, \n 'no' as link,\n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES\n ('railway_rail',430),\n ('railway_spur',430),\n ('railway_siding',430),\n ('railway_subway',420),\n ('railway_narrow_gauge',420),\n ('railway_light_rail',420),\n ('railway_preserved',420),\n ('railway_funicular',420),\n ('railway_monorail',420), \n ('railway_miniature',420),\n ('railway_turntable',420),\n ('railway_tram',410),\n ('railway_disused',400),\n ('railway_construction',400),\n ('aeroway_runway',60),\n ('aeroway_taxiway',50),\n ('railway_platform',90)) as ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature \n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes','building_passage')) \n AND (covered IS NULL OR NOT covered='yes') \n AND (bridge IS NULL OR NOT bridge IN ('yes','viaduct'))\n )\n ) AS features ORDER BY prio\n) AS roads_fill", + "table": "(SELECT \n * \n FROM \n (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) as feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access in ('no', 'private') THEN 'no'::text \n ELSE NULL \n END AS access,\n construction, \n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text end as service, \n CASE WHEN oneway in ('yes', '-1') and 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') THEN oneway ELSE NULL END as oneway, \n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('highway_motorway',380), \n ('highway_trunk',370), \n ('highway_primary',360), \n ('highway_secondary',350), \n ('highway_tertiary',340), \n ('highway_residential',330),\n ('highway_unclassified',330),\n ('highway_road',330),\n ('highway_living_street',320),\n ('highway_pedestrian',310),\n ('highway_raceway',300),\n ('highway_motorway_link',240),\n ('highway_trunk_link',230),\n ('highway_primary_link',220),\n ('highway_secondary_link',210),\n ('highway_tertiary_link',200),\n ('highway_service',150),\n ('highway_track',110),\n ('highway_path',100),\n ('highway_footway',100),\n ('highway_bridleway',100),\n ('highway_cycleway',100),\n ('highway_steps',100),\n ('highway_platform',90),\n ('highway_proposed',20),\n ('highway_construction',10)\n ) AS ordertable (feature, prio) \n on ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel IS NULL or not tunnel in ('yes','building_passage')) \n and (covered IS NULL or not covered='yes') \n and (bridge IS NULL or not bridge in ('yes','viaduct'))) \n union all \n (SELECT \n way, prio, \n COALESCE(\n ('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' ELSE railway END)),\n ('aeroway_' || aeroway)\n ) AS feature,\n horse, foot, bicycle, tracktype,\n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access IN ('no', 'private') THEN 'no'::text \n ELSE NULL \n END as access,\n construction,\n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text \n END as service,\n NULL as oneway, \n 'no' as link,\n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES\n ('railway_rail',430),\n ('railway_spur',430),\n ('railway_siding',430),\n ('railway_subway',420),\n ('railway_narrow_gauge',420),\n ('railway_light_rail',420),\n ('railway_preserved',420),\n ('railway_funicular',420),\n ('railway_monorail',420), \n ('railway_miniature',420),\n ('railway_turntable',420),\n ('railway_tram',410),\n ('railway_disused',400),\n ('railway_construction',400),\n ('aeroway_runway',60),\n ('aeroway_taxiway',50),\n ('railway_platform',90)) as ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature \n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes','building_passage')) \n AND (covered IS NULL OR NOT covered='yes') \n AND (bridge IS NULL OR NOT bridge IN ('yes','viaduct'))\n )\n ) AS features ORDER BY prio\n) AS roads_fill", "geometry_field": "way", "type": "postgis", "key_field": "", diff --git a/project.yaml b/project.yaml index 06c4a42fde..8b3d44ad27 100644 --- a/project.yaml +++ b/project.yaml @@ -140,7 +140,7 @@ Layer: (SELECT way FROM planet_osm_line - WHERE man_made='cutline' + WHERE man_made = 'cutline' ) AS landcover_line advanced: {} - id: "water-lines-casing" @@ -169,7 +169,7 @@ Layer: table: |- (SELECT way, waterway FROM planet_osm_line - WHERE waterway='river' + WHERE waterway = 'river' ) AS water_lines_low_zoom advanced: {} - id: "water-areas" @@ -292,7 +292,7 @@ Layer: way, waterway FROM planet_osm_point WHERE waterway = 'lock_gate' - ) as locks + ) AS locks advanced: {} - id: "buildings-lz" name: "buildings-lz" @@ -304,11 +304,11 @@ Layer: table: |- (SELECT way, building, railway, amenity FROM planet_osm_polygon - WHERE railway='station' + WHERE railway = 'station' OR building IN ('station', 'supermarket') OR amenity = 'place_of_worship' ORDER BY z_order, way_area DESC - ) as buildings_lz + ) AS buildings_lz advanced: {} - id: "buildings" name: "buildings" @@ -461,7 +461,7 @@ Layer: (SELECT way FROM planet_osm_line - WHERE "historic"='castle_walls' + WHERE historic = 'castle_walls' ) AS castlewalls advanced: {} - id: "castlewalls-poly" @@ -475,7 +475,7 @@ Layer: (SELECT way FROM planet_osm_polygon - WHERE "historic"='castle_walls' + WHERE historic = 'castle_walls' ) AS castlewalls_poly advanced: {} - id: "landuse-overlay" @@ -559,7 +559,7 @@ Layer: (SELECT way FROM planet_osm_line - WHERE route='ferry' + WHERE route = 'ferry' ) AS ferry_routes advanced: {} - id: "turning-circle-casing" @@ -751,7 +751,7 @@ Layer: 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') and 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') THEN oneway ELSE NULL END as oneway, + CASE WHEN oneway in ('yes', '-1') and 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') THEN oneway ELSE NULL END as oneway, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN (VALUES From dcbdae6a6b8584e399b6f8d14f26f15911d3109d Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Sat, 13 Sep 2014 20:11:14 -0700 Subject: [PATCH 70/74] Whitespace fixes --- project.mml | 4 ++-- project.yaml | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/project.mml b/project.mml index 533542bef8..af3668fac9 100644 --- a/project.mml +++ b/project.mml @@ -408,7 +408,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT * \n FROM (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) ELSE highway END)) AS feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access IN ('destination') THEN 'destination'::text \n WHEN access IN ('no', 'private') THEN 'no'::text \n ELSE NULL \n END AS access, \n construction, \n CASE WHEN service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text \n END AS service, \n CASE WHEN oneway in ('yes', '-1') AND 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') THEN oneway \n ELSE NULL \n END AS oneway,\n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' \n ELSE 'no' END AS link, \n CASE WHEN layer IS NULL THEN '0' \n ELSE layer \n END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('highway_motorway', 380), \n ('highway_trunk', 370), \n ('highway_primary', 360), \n ('highway_secondary', 350), \n ('highway_tertiary', 340), \n ('highway_residential', 330), \n ('highway_unclassified', 330), \n ('highway_road', 330), \n ('highway_living_street', 320), \n ('highway_pedestrian', 310), \n ('highway_raceway', 300), \n ('highway_motorway_link', 240), \n ('highway_trunk_link', 230), \n ('highway_primary_link', 220), \n ('highway_secondary_link', 210), \n ('highway_tertiary_link', 200),\n ('highway_service', 150), \n ('highway_track', 110), \n ('highway_path', 100), \n ('highway_footway', 100), \n ('highway_bridleway', 100), \n ('highway_cycleway', 100),\n ('highway_steps', 100), \n ('highway_platform', 90), \n ('highway_proposed', 20), \n ('highway_construction', 10)\n ) AS ordertable (feature, prio) \n ON ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel='yes' or tunnel='building_passage' or covered='yes')) \n UNION ALL\n (SELECT \n way, prio, \n 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' else railway END)),\n ('aeroway_' || aeroway)) AS feature,\n horse, foot, bicycle, tracktype,\n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access in ('no', 'private') THEN 'no'::text \n ELSE NULL END as access,\n construction,\n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text END as service, \n null AS oneway, \n 'no' AS link,\n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('railway_rail', 430), \n ('railway_spur', 430), \n ('railway_siding', 430), \n ('railway_subway', 420), \n ('railway_narrow_gauge', 420), \n ('railway_light_rail', 420), \n ('railway_preserved', 420), \n ('railway_funicular', 420), \n ('railway_monorail', 420), \n ('railway_miniature', 420), \n ('railway_turntable', 420), \n ('railway_tram', 410), \n ('railway_disused', 400), \n ('railway_construction', 400), \n ('aeroway_runway', 60), \n ('aeroway_taxiway', 50), \n ('railway_platform', 90)\n ) AS ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature\n WHERE (tunnel='yes' or tunnel='building_passage' or covered='yes'))\n ) AS features \n ORDER BY layernotnull, prio\n) AS tunnels", + "table": "(SELECT * \n FROM (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) ELSE highway END)) AS feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access IN ('destination') THEN 'destination'::text \n WHEN access IN ('no', 'private') THEN 'no'::text \n ELSE NULL \n END AS access, \n construction, \n CASE WHEN service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text \n END AS service, \n CASE WHEN oneway in ('yes', '-1') AND 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') THEN oneway \n ELSE NULL \n END AS oneway,\n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' \n ELSE 'no' END AS link, \n CASE WHEN layer IS NULL THEN '0' \n ELSE layer \n END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('highway_motorway', 380), \n ('highway_trunk', 370), \n ('highway_primary', 360), \n ('highway_secondary', 350), \n ('highway_tertiary', 340), \n ('highway_residential', 330), \n ('highway_unclassified', 330), \n ('highway_road', 330), \n ('highway_living_street', 320), \n ('highway_pedestrian', 310), \n ('highway_raceway', 300), \n ('highway_motorway_link', 240), \n ('highway_trunk_link', 230), \n ('highway_primary_link', 220), \n ('highway_secondary_link', 210), \n ('highway_tertiary_link', 200),\n ('highway_service', 150), \n ('highway_track', 110), \n ('highway_path', 100), \n ('highway_footway', 100), \n ('highway_bridleway', 100), \n ('highway_cycleway', 100),\n ('highway_steps', 100), \n ('highway_platform', 90), \n ('highway_proposed', 20), \n ('highway_construction', 10)\n ) AS ordertable (feature, prio) \n ON ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel='yes' OR tunnel = 'building_passage' OR covered='yes')) \n UNION ALL\n (SELECT \n way, prio, \n 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' else railway END)),\n ('aeroway_' || aeroway)) AS feature,\n horse, foot, bicycle, tracktype,\n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access in ('no', 'private') THEN 'no'::text \n ELSE NULL END as access,\n construction,\n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text END as service, \n null AS oneway, \n 'no' AS link,\n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('railway_rail', 430), \n ('railway_spur', 430), \n ('railway_siding', 430), \n ('railway_subway', 420), \n ('railway_narrow_gauge', 420), \n ('railway_light_rail', 420), \n ('railway_preserved', 420), \n ('railway_funicular', 420), \n ('railway_monorail', 420), \n ('railway_miniature', 420), \n ('railway_turntable', 420), \n ('railway_tram', 410), \n ('railway_disused', 400), \n ('railway_construction', 400), \n ('aeroway_runway', 60), \n ('aeroway_taxiway', 50), \n ('railway_platform', 90)\n ) AS ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature\n WHERE (tunnel='yes' or tunnel='building_passage' or covered='yes'))\n ) AS features \n ORDER BY layernotnull, prio\n) AS tunnels", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -686,7 +686,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n * \n FROM \n (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) ELSE highway END)) AS feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access IN ('destination') THEN 'destination'::text when access IN ('no', 'private') THEN 'no'::text ELSE NULL END as access, construction, \n CASE WHEN service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text end as service, \n CASE WHEN oneway IN ('yes', '-1') \n AND 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') THEN oneway \n ELSE NULL \n END as oneway, \n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' ELSE 'no' end as link, \n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES\n ('highway_motorway',380), \n ('highway_trunk',370), \n ('highway_primary',360), \n ('highway_secondary',350), \n ('highway_tertiary',340), \n ('highway_residential',330), \n ('highway_unclassified',330), \n ('highway_road',330), \n ('highway_living_street',320), \n ('highway_pedestrian',310), \n ('highway_raceway',300), \n ('highway_motorway_link',240), \n ('highway_trunk_link',230), \n ('highway_primary_link',220), \n ('highway_secondary_link',210), \n ('highway_tertiary_link',200), \n ('highway_service',150), \n ('highway_track',110), \n ('highway_path',100), \n ('highway_footway',100), \n ('highway_bridleway',100), \n ('highway_cycleway',100), \n ('highway_steps',100), \n ('highway_platform',90), \n ('highway_proposed',20), \n ('highway_construction',10)\n ) AS ordertable (feature, prio) \n ON ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) \n AND (covered IS NULL OR NOT covered='yes') \n AND (bridge IS NULL OR NOT bridge IN ('yes', 'viaduct'))\n ) \n UNION ALL \n (SELECT \n way, prio, \n 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' else railway end)), ('aeroway_' || aeroway)) as feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access in ('destination') THEN 'destination'::text when access in ('no', 'private') THEN 'no'::text ELSE NULL END as access, \n construction, CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text end as service, \n null as oneway, 'no' as link, \n CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('railway_rail', 430),\n ('railway_spur', 430),\n ('railway_siding', 430),\n ('railway_subway', 420),\n ('railway_narrow_gauge', 420),\n ('railway_light_rail', 420),\n ('railway_preserved', 420),\n ('railway_funicular', 420),\n ('railway_monorail', 420),\n ('railway_miniature', 420),\n ('railway_turntable', 420),\n ('railway_tram', 410),\n ('railway_disused', 400),\n ('railway_construction', 400),\n ('aeroway_runway', 60),\n ('aeroway_taxiway', 50),\n ('railway_platform', 90)\n ) AS ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature\n WHERE (tunnel IS NULL or not tunnel in ('yes','building_passage'))\n and (covered IS NULL or not covered='yes') \n and (bridge IS NULL or not bridge in ('yes','viaduct'))\n )\n ) AS features \n ORDER BY prio\n) AS roads_casing", + "table": "(SELECT\n * \n FROM \n (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) ELSE highway END)) AS feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access IN ('destination') THEN 'destination'::text when access IN ('no', 'private') THEN 'no'::text ELSE NULL END as access, construction, \n CASE WHEN service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text end as service, \n CASE WHEN oneway IN ('yes', '-1') \n AND 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') THEN oneway \n ELSE NULL \n END as oneway, \n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' ELSE 'no' end as link, \n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES\n ('highway_motorway',380), \n ('highway_trunk',370), \n ('highway_primary',360), \n ('highway_secondary',350), \n ('highway_tertiary',340), \n ('highway_residential',330), \n ('highway_unclassified',330), \n ('highway_road',330), \n ('highway_living_street',320), \n ('highway_pedestrian',310), \n ('highway_raceway',300), \n ('highway_motorway_link',240), \n ('highway_trunk_link',230), \n ('highway_primary_link',220), \n ('highway_secondary_link',210), \n ('highway_tertiary_link',200), \n ('highway_service',150), \n ('highway_track',110), \n ('highway_path',100), \n ('highway_footway',100), \n ('highway_bridleway',100), \n ('highway_cycleway',100), \n ('highway_steps',100), \n ('highway_platform',90), \n ('highway_proposed',20), \n ('highway_construction',10)\n ) AS ordertable (feature, prio) \n ON ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) \n AND (covered IS NULL OR NOT covered='yes') \n AND (bridge IS NULL OR NOT bridge IN ('yes', 'viaduct'))) \n UNION ALL \n (SELECT \n way, prio, \n 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' else railway end)), ('aeroway_' || aeroway)) as feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access in ('destination') THEN 'destination'::text when access in ('no', 'private') THEN 'no'::text ELSE NULL END as access, \n construction, CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text end as service, \n null as oneway, 'no' as link, \n CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('railway_rail', 430),\n ('railway_spur', 430),\n ('railway_siding', 430),\n ('railway_subway', 420),\n ('railway_narrow_gauge', 420),\n ('railway_light_rail', 420),\n ('railway_preserved', 420),\n ('railway_funicular', 420),\n ('railway_monorail', 420),\n ('railway_miniature', 420),\n ('railway_turntable', 420),\n ('railway_tram', 410),\n ('railway_disused', 400),\n ('railway_construction', 400),\n ('aeroway_runway', 60),\n ('aeroway_taxiway', 50),\n ('railway_platform', 90)\n ) AS ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature\n WHERE (tunnel IS NULL or not tunnel in ('yes','building_passage'))\n and (covered IS NULL or not covered='yes') \n and (bridge IS NULL or not bridge in ('yes','viaduct'))\n )\n ) AS features \n ORDER BY prio\n) AS roads_casing", "geometry_field": "way", "type": "postgis", "key_field": "", diff --git a/project.yaml b/project.yaml index 8b3d44ad27..c276c77003 100644 --- a/project.yaml +++ b/project.yaml @@ -393,7 +393,7 @@ Layer: ('highway_construction', 10) ) AS ordertable (feature, prio) ON ('highway_' || planet_osm_line.highway) = ordertable.feature - WHERE (tunnel='yes' or tunnel='building_passage' or covered='yes')) + WHERE (tunnel='yes' OR tunnel = 'building_passage' OR covered='yes')) UNION ALL (SELECT way, prio, @@ -667,8 +667,7 @@ Layer: ON ('highway_' || planet_osm_line.highway) = ordertable.feature 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', 'viaduct')) - ) + AND (bridge IS NULL OR NOT bridge IN ('yes', 'viaduct'))) UNION ALL (SELECT way, prio, From 56cd8e0f801af69bc3cfa6ceeb16dcc9ec0e6885 Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Sat, 13 Sep 2014 21:37:06 -0700 Subject: [PATCH 71/74] More caps fixes --- project.mml | 90 +++++++++++++-------------- project.yaml | 172 +++++++++++++++++++++++++-------------------------- 2 files changed, 131 insertions(+), 131 deletions(-) diff --git a/project.mml b/project.mml index af3668fac9..cca4782e31 100644 --- a/project.mml +++ b/project.mml @@ -223,7 +223,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT \n way, waterway, lock, name,\n CASE WHEN tunnel IN ('yes','culvert') THEN 'yes' ELSE 'no' END AS int_tunnel, \n 'no' as bridge\n FROM planet_osm_line\n WHERE waterway in ('weir', 'river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')\n and (bridge IS NULL or bridge not in ('yes','aqueduct'))\n ORDER BY z_order\n) AS water_lines", + "table": "(SELECT \n way, waterway, lock, name,\n CASE WHEN tunnel IN ('yes','culvert') THEN 'yes' ELSE 'no' END AS int_tunnel, \n 'no' as bridge\n FROM planet_osm_line\n WHERE waterway in ('weir', 'river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')\n AND (bridge IS NULL or bridge not in ('yes','aqueduct'))\n ORDER BY z_order\n) AS water_lines", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -315,7 +315,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT \n way, man_made \n FROM planet_osm_line \n WHERE man_made IN ('pier', 'breakwater', 'groyne')\n) as piers", + "table": "(SELECT \n way, man_made \n FROM planet_osm_line \n WHERE man_made IN ('pier', 'breakwater', 'groyne')\n) AS piers", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -408,7 +408,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT * \n FROM (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) ELSE highway END)) AS feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access IN ('destination') THEN 'destination'::text \n WHEN access IN ('no', 'private') THEN 'no'::text \n ELSE NULL \n END AS access, \n construction, \n CASE WHEN service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text \n END AS service, \n CASE WHEN oneway in ('yes', '-1') AND 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') THEN oneway \n ELSE NULL \n END AS oneway,\n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' \n ELSE 'no' END AS link, \n CASE WHEN layer IS NULL THEN '0' \n ELSE layer \n END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('highway_motorway', 380), \n ('highway_trunk', 370), \n ('highway_primary', 360), \n ('highway_secondary', 350), \n ('highway_tertiary', 340), \n ('highway_residential', 330), \n ('highway_unclassified', 330), \n ('highway_road', 330), \n ('highway_living_street', 320), \n ('highway_pedestrian', 310), \n ('highway_raceway', 300), \n ('highway_motorway_link', 240), \n ('highway_trunk_link', 230), \n ('highway_primary_link', 220), \n ('highway_secondary_link', 210), \n ('highway_tertiary_link', 200),\n ('highway_service', 150), \n ('highway_track', 110), \n ('highway_path', 100), \n ('highway_footway', 100), \n ('highway_bridleway', 100), \n ('highway_cycleway', 100),\n ('highway_steps', 100), \n ('highway_platform', 90), \n ('highway_proposed', 20), \n ('highway_construction', 10)\n ) AS ordertable (feature, prio) \n ON ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel='yes' OR tunnel = 'building_passage' OR covered='yes')) \n UNION ALL\n (SELECT \n way, prio, \n 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' else railway END)),\n ('aeroway_' || aeroway)) AS feature,\n horse, foot, bicycle, tracktype,\n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access in ('no', 'private') THEN 'no'::text \n ELSE NULL END as access,\n construction,\n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text END as service, \n null AS oneway, \n 'no' AS link,\n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('railway_rail', 430), \n ('railway_spur', 430), \n ('railway_siding', 430), \n ('railway_subway', 420), \n ('railway_narrow_gauge', 420), \n ('railway_light_rail', 420), \n ('railway_preserved', 420), \n ('railway_funicular', 420), \n ('railway_monorail', 420), \n ('railway_miniature', 420), \n ('railway_turntable', 420), \n ('railway_tram', 410), \n ('railway_disused', 400), \n ('railway_construction', 400), \n ('aeroway_runway', 60), \n ('aeroway_taxiway', 50), \n ('railway_platform', 90)\n ) AS ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature\n WHERE (tunnel='yes' or tunnel='building_passage' or covered='yes'))\n ) AS features \n ORDER BY layernotnull, prio\n) AS tunnels", + "table": "(SELECT * \n FROM (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) ELSE highway END)) AS feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access IN ('destination') THEN 'destination'::text \n WHEN access IN ('no', 'private') THEN 'no'::text \n ELSE NULL \n END AS access, \n construction, \n CASE WHEN service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text \n END AS service, \n CASE WHEN oneway in ('yes', '-1') AND 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') THEN oneway \n ELSE NULL \n END AS oneway,\n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' \n ELSE 'no' END AS link, \n CASE WHEN layer IS NULL THEN '0' \n ELSE layer \n END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('highway_motorway', 380), \n ('highway_trunk', 370), \n ('highway_primary', 360), \n ('highway_secondary', 350), \n ('highway_tertiary', 340), \n ('highway_residential', 330), \n ('highway_unclassified', 330), \n ('highway_road', 330), \n ('highway_living_street', 320), \n ('highway_pedestrian', 310), \n ('highway_raceway', 300), \n ('highway_motorway_link', 240), \n ('highway_trunk_link', 230), \n ('highway_primary_link', 220), \n ('highway_secondary_link', 210), \n ('highway_tertiary_link', 200),\n ('highway_service', 150), \n ('highway_track', 110), \n ('highway_path', 100), \n ('highway_footway', 100), \n ('highway_bridleway', 100), \n ('highway_cycleway', 100),\n ('highway_steps', 100), \n ('highway_platform', 90), \n ('highway_proposed', 20), \n ('highway_construction', 10)\n ) AS ordertable (feature, prio) \n ON ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel='yes' OR tunnel = 'building_passage' OR covered='yes')) \n UNION ALL\n (SELECT \n way, prio, \n 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' else railway END)),\n ('aeroway_' || aeroway)) AS feature,\n horse, foot, bicycle, tracktype,\n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access in ('no', 'private') THEN 'no'::text \n ELSE NULL END as access,\n construction,\n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text END as service, \n null AS oneway, \n 'no' AS link,\n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('railway_rail', 430), \n ('railway_spur', 430), \n ('railway_siding', 430), \n ('railway_subway', 420), \n ('railway_narrow_gauge', 420), \n ('railway_light_rail', 420), \n ('railway_preserved', 420), \n ('railway_funicular', 420), \n ('railway_monorail', 420), \n ('railway_miniature', 420), \n ('railway_turntable', 420), \n ('railway_tram', 410), \n ('railway_disused', 400), \n ('railway_construction', 400), \n ('aeroway_runway', 60), \n ('aeroway_taxiway', 50), \n ('railway_platform', 90)\n ) AS ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature\n WHERE (tunnel='yes' or tunnel='building_passage' or covered='yes'))\n ) AS features \n ORDER BY layernotnull, prio\n) AS tunnels", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -525,7 +525,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT \n way, barrier \n FROM planet_osm_line \n WHERE barrier is not null\n) AS line_barriers", + "table": "(SELECT \n way, barrier \n FROM planet_osm_line \n WHERE barrier IS NOT NULL\n) AS line_barriers", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -663,7 +663,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT \n way,\n COALESCE((\n 'highway_' || (CASE WHEN highway IN ('residential','unclassified','pedestrian','service','footway','cycleway','track','path','platform') THEN highway ELSE NULL END)), \n ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END))\n ) as feature \n FROM planet_osm_polygon\n WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform')\n OR railway IN ('platform')\n ORDER BY z_order, way_area DESC\n) AS highway_area_casing", + "table": "(SELECT \n way,\n COALESCE((\n 'highway_' || (CASE WHEN highway IN ('residential','unclassified','pedestrian','service','footway','cycleway','track','path','platform') THEN highway ELSE NULL END)), \n ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END))\n ) AS feature \n FROM planet_osm_polygon\n WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform')\n OR railway IN ('platform')\n ORDER BY z_order, way_area DESC\n) AS highway_area_casing", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -686,7 +686,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT\n * \n FROM \n (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) ELSE highway END)) AS feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access IN ('destination') THEN 'destination'::text when access IN ('no', 'private') THEN 'no'::text ELSE NULL END as access, construction, \n CASE WHEN service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text end as service, \n CASE WHEN oneway IN ('yes', '-1') \n AND 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') THEN oneway \n ELSE NULL \n END as oneway, \n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' ELSE 'no' end as link, \n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES\n ('highway_motorway',380), \n ('highway_trunk',370), \n ('highway_primary',360), \n ('highway_secondary',350), \n ('highway_tertiary',340), \n ('highway_residential',330), \n ('highway_unclassified',330), \n ('highway_road',330), \n ('highway_living_street',320), \n ('highway_pedestrian',310), \n ('highway_raceway',300), \n ('highway_motorway_link',240), \n ('highway_trunk_link',230), \n ('highway_primary_link',220), \n ('highway_secondary_link',210), \n ('highway_tertiary_link',200), \n ('highway_service',150), \n ('highway_track',110), \n ('highway_path',100), \n ('highway_footway',100), \n ('highway_bridleway',100), \n ('highway_cycleway',100), \n ('highway_steps',100), \n ('highway_platform',90), \n ('highway_proposed',20), \n ('highway_construction',10)\n ) AS ordertable (feature, prio) \n ON ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) \n AND (covered IS NULL OR NOT covered='yes') \n AND (bridge IS NULL OR NOT bridge IN ('yes', 'viaduct'))) \n UNION ALL \n (SELECT \n way, prio, \n 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' else railway end)), ('aeroway_' || aeroway)) as feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access in ('destination') THEN 'destination'::text when access in ('no', 'private') THEN 'no'::text ELSE NULL END as access, \n construction, CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text end as service, \n null as oneway, 'no' as link, \n CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('railway_rail', 430),\n ('railway_spur', 430),\n ('railway_siding', 430),\n ('railway_subway', 420),\n ('railway_narrow_gauge', 420),\n ('railway_light_rail', 420),\n ('railway_preserved', 420),\n ('railway_funicular', 420),\n ('railway_monorail', 420),\n ('railway_miniature', 420),\n ('railway_turntable', 420),\n ('railway_tram', 410),\n ('railway_disused', 400),\n ('railway_construction', 400),\n ('aeroway_runway', 60),\n ('aeroway_taxiway', 50),\n ('railway_platform', 90)\n ) AS ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature\n WHERE (tunnel IS NULL or not tunnel in ('yes','building_passage'))\n and (covered IS NULL or not covered='yes') \n and (bridge IS NULL or not bridge in ('yes','viaduct'))\n )\n ) AS features \n ORDER BY prio\n) AS roads_casing", + "table": "(SELECT\n * \n FROM \n (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) ELSE highway END)) AS feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access IN ('destination') THEN 'destination'::text when access IN ('no', 'private') THEN 'no'::text ELSE NULL END as access, construction, \n CASE WHEN service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text end as service, \n CASE WHEN oneway IN ('yes', '-1') \n AND 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') THEN oneway \n ELSE NULL \n END as oneway, \n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' ELSE 'no' end as link, \n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES\n ('highway_motorway',380), \n ('highway_trunk',370), \n ('highway_primary',360), \n ('highway_secondary',350), \n ('highway_tertiary',340), \n ('highway_residential',330), \n ('highway_unclassified',330), \n ('highway_road',330), \n ('highway_living_street',320), \n ('highway_pedestrian',310), \n ('highway_raceway',300), \n ('highway_motorway_link',240), \n ('highway_trunk_link',230), \n ('highway_primary_link',220), \n ('highway_secondary_link',210), \n ('highway_tertiary_link',200), \n ('highway_service',150), \n ('highway_track',110), \n ('highway_path',100), \n ('highway_footway',100), \n ('highway_bridleway',100), \n ('highway_cycleway',100), \n ('highway_steps',100), \n ('highway_platform',90), \n ('highway_proposed',20), \n ('highway_construction',10)\n ) AS ordertable (feature, prio) \n ON ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage')) \n AND (covered IS NULL OR NOT covered='yes') \n AND (bridge IS NULL OR NOT bridge IN ('yes', 'viaduct'))) \n UNION ALL \n (SELECT \n way, prio, \n 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' else railway end)), ('aeroway_' || aeroway)) AS feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access in ('destination') THEN 'destination'::text when access in ('no', 'private') THEN 'no'::text ELSE NULL END as access, \n construction, CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text end as service, \n null as oneway, 'no' as link, \n CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('railway_rail', 430),\n ('railway_spur', 430),\n ('railway_siding', 430),\n ('railway_subway', 420),\n ('railway_narrow_gauge', 420),\n ('railway_light_rail', 420),\n ('railway_preserved', 420),\n ('railway_funicular', 420),\n ('railway_monorail', 420),\n ('railway_miniature', 420),\n ('railway_turntable', 420),\n ('railway_tram', 410),\n ('railway_disused', 400),\n ('railway_construction', 400),\n ('aeroway_runway', 60),\n ('aeroway_taxiway', 50),\n ('railway_platform', 90)\n ) AS ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature\n WHERE (tunnel IS NULL or not tunnel in ('yes','building_passage'))\n AND (covered IS NULL or not covered='yes') \n AND (bridge IS NULL or not bridge in ('yes','viaduct'))\n )\n ) AS features \n ORDER BY prio\n) AS roads_casing", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -731,7 +731,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT \n * \n FROM \n (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) as feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access in ('no', 'private') THEN 'no'::text \n ELSE NULL \n END AS access,\n construction, \n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text end as service, \n CASE WHEN oneway in ('yes', '-1') and 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') THEN oneway ELSE NULL END as oneway, \n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('highway_motorway',380), \n ('highway_trunk',370), \n ('highway_primary',360), \n ('highway_secondary',350), \n ('highway_tertiary',340), \n ('highway_residential',330),\n ('highway_unclassified',330),\n ('highway_road',330),\n ('highway_living_street',320),\n ('highway_pedestrian',310),\n ('highway_raceway',300),\n ('highway_motorway_link',240),\n ('highway_trunk_link',230),\n ('highway_primary_link',220),\n ('highway_secondary_link',210),\n ('highway_tertiary_link',200),\n ('highway_service',150),\n ('highway_track',110),\n ('highway_path',100),\n ('highway_footway',100),\n ('highway_bridleway',100),\n ('highway_cycleway',100),\n ('highway_steps',100),\n ('highway_platform',90),\n ('highway_proposed',20),\n ('highway_construction',10)\n ) AS ordertable (feature, prio) \n on ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel IS NULL or not tunnel in ('yes','building_passage')) \n and (covered IS NULL or not covered='yes') \n and (bridge IS NULL or not bridge in ('yes','viaduct'))) \n union all \n (SELECT \n way, prio, \n COALESCE(\n ('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' ELSE railway END)),\n ('aeroway_' || aeroway)\n ) AS feature,\n horse, foot, bicycle, tracktype,\n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access IN ('no', 'private') THEN 'no'::text \n ELSE NULL \n END as access,\n construction,\n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text \n END as service,\n NULL as oneway, \n 'no' as link,\n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES\n ('railway_rail',430),\n ('railway_spur',430),\n ('railway_siding',430),\n ('railway_subway',420),\n ('railway_narrow_gauge',420),\n ('railway_light_rail',420),\n ('railway_preserved',420),\n ('railway_funicular',420),\n ('railway_monorail',420), \n ('railway_miniature',420),\n ('railway_turntable',420),\n ('railway_tram',410),\n ('railway_disused',400),\n ('railway_construction',400),\n ('aeroway_runway',60),\n ('aeroway_taxiway',50),\n ('railway_platform',90)) as ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature \n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes','building_passage')) \n AND (covered IS NULL OR NOT covered='yes') \n AND (bridge IS NULL OR NOT bridge IN ('yes','viaduct'))\n )\n ) AS features ORDER BY prio\n) AS roads_fill", + "table": "(SELECT \n * \n FROM \n (\n (SELECT \n way, prio, \n ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) AS feature, \n horse, foot, bicycle, tracktype, \n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access in ('no', 'private') THEN 'no'::text \n ELSE NULL \n END AS access,\n construction, \n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text else 'INT-normal'::text end as service, \n CASE WHEN oneway in ('yes', '-1') AND 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') THEN oneway ELSE NULL END as oneway, \n CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull \n FROM planet_osm_line \n JOIN (VALUES \n ('highway_motorway',380), \n ('highway_trunk',370), \n ('highway_primary',360), \n ('highway_secondary',350), \n ('highway_tertiary',340), \n ('highway_residential',330),\n ('highway_unclassified',330),\n ('highway_road',330),\n ('highway_living_street',320),\n ('highway_pedestrian',310),\n ('highway_raceway',300),\n ('highway_motorway_link',240),\n ('highway_trunk_link',230),\n ('highway_primary_link',220),\n ('highway_secondary_link',210),\n ('highway_tertiary_link',200),\n ('highway_service',150),\n ('highway_track',110),\n ('highway_path',100),\n ('highway_footway',100),\n ('highway_bridleway',100),\n ('highway_cycleway',100),\n ('highway_steps',100),\n ('highway_platform',90),\n ('highway_proposed',20),\n ('highway_construction',10)\n ) AS ordertable (feature, prio) \n on ('highway_' || planet_osm_line.highway) = ordertable.feature \n WHERE (tunnel IS NULL or not tunnel in ('yes','building_passage')) \n AND (covered IS NULL or not covered='yes') \n AND (bridge IS NULL or not bridge in ('yes','viaduct'))) \n union all \n (SELECT \n way, prio, \n COALESCE(\n ('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' ELSE railway END)),\n ('aeroway_' || aeroway)\n ) AS feature,\n horse, foot, bicycle, tracktype,\n CASE WHEN access in ('destination') THEN 'destination'::text \n WHEN access IN ('no', 'private') THEN 'no'::text \n ELSE NULL \n END as access,\n construction,\n CASE WHEN service in ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text \n END as service,\n NULL as oneway, \n 'no' as link,\n CASE WHEN layer IS NULL THEN '0' ELSE layer END AS layernotnull \n FROM planet_osm_line \n JOIN (VALUES\n ('railway_rail',430),\n ('railway_spur',430),\n ('railway_siding',430),\n ('railway_subway',420),\n ('railway_narrow_gauge',420),\n ('railway_light_rail',420),\n ('railway_preserved',420),\n ('railway_funicular',420),\n ('railway_monorail',420), \n ('railway_miniature',420),\n ('railway_turntable',420),\n ('railway_tram',410),\n ('railway_disused',400),\n ('railway_construction',400),\n ('aeroway_runway',60),\n ('aeroway_taxiway',50),\n ('railway_platform',90)) AS ordertable (feature, prio) \n ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature \n WHERE (tunnel IS NULL OR NOT tunnel IN ('yes','building_passage')) \n AND (covered IS NULL OR NOT covered='yes') \n AND (bridge IS NULL OR NOT bridge IN ('yes','viaduct'))\n )\n ) AS features ORDER BY prio\n) AS roads_fill", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -754,7 +754,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT \n DISTINCT on (p.way) \n p.way as way, l.highway as int_tc_type,\n CASE WHEN l.service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text end AS int_tc_service\n FROM planet_osm_point p\n JOIN planet_osm_line l\n ON ST_DWithin(p.way, l.way, 0.1)\n JOIN (VALUES\n ('tertiary', 1),\n ('unclassified', 2),\n ('residential', 3),\n ('living_street', 4),\n ('service', 5)\n ) AS v (highway,prio)\n ON v.highway=l.highway\n WHERE p.highway='turning_circle' or p.highway='turning_loop' \n ORDER BY p.way,v.prio\n) as turning_circle_fill", + "table": "(SELECT \n DISTINCT on (p.way) \n p.way as way, l.highway as int_tc_type,\n CASE WHEN l.service IN ('parking_aisle','drive-through','driveway') THEN 'INT-minor'::text \n ELSE 'INT-normal'::text end AS int_tc_service\n FROM planet_osm_point p\n JOIN planet_osm_line l\n ON ST_DWithin(p.way, l.way, 0.1)\n JOIN (VALUES\n ('tertiary', 1),\n ('unclassified', 2),\n ('residential', 3),\n ('living_street', 4),\n ('service', 5)\n ) AS v (highway,prio)\n ON v.highway=l.highway\n WHERE p.highway='turning_circle' or p.highway='turning_loop' \n ORDER BY p.way,v.prio\n) AS turning_circle_fill", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -777,7 +777,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,aerialway FROM planet_osm_line WHERE aerialway is not null) as aerialways", + "table": "(SELECT way,aerialway FROM planet_osm_line WHERE aerialway IS NOT NULL) AS aerialways", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -800,7 +800,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (SELECT 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,tunnel\n FROM planet_osm_roads\n WHERE highway is not null\n or (railway is not null and railway!='preserved' and (service IS NULL or service not in ('spur','siding','yard')))\n ORDER BY z_order\n ) as roads_low_zoom", + "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,tunnel\n FROM planet_osm_roads\n WHERE highway IS NOT NULL\n or (railway IS NOT NULL AND railway!='preserved' AND (service IS NULL or service not in ('spur','siding','yard')))\n ORDER BY z_order\n ) AS roads_low_zoom", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -823,7 +823,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,waterway,name,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", + "table": "(SELECT way,waterway,name,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", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -847,7 +847,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT * FROM ((SELECT way, prio, ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') THEN oneway ELSE NULL END as oneway, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature WHERE bridge in ('yes','viaduct')) union all (SELECT way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature WHERE bridge in ('yes','viaduct'))) as features ORDER BY layernotnull,prio) as bridges", + "table": "(SELECT * FROM ((SELECT way, prio, ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) AS feature, horse, foot, bicycle, tracktype, 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') AND 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') THEN oneway ELSE NULL END as oneway, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN ( values ('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), ('highway_proposed',20), ('highway_construction',10)) AS ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature WHERE bridge in ('yes','viaduct')) union all (SELECT way, prio, 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' else railway end)), ('aeroway_' || aeroway)) AS feature, horse, foot, bicycle, tracktype, 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 IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) AS ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature WHERE bridge in ('yes','viaduct'))) AS features ORDER BY layernotnull,prio) AS bridges", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -872,7 +872,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way FROM planet_osm_line WHERE highway='bus_guideway' and (tunnel IS NULL or tunnel != 'yes')) as guideways", + "table": "(SELECT way FROM planet_osm_line WHERE highway='bus_guideway' AND (tunnel IS NULL or tunnel != 'yes')) AS guideways", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -895,7 +895,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,admin_level\n FROM planet_osm_roads\n WHERE \"boundary\"='administrative'\n and admin_level in ('0','1','2','3','4')\n ) as admin_01234", + "table": "(SELECT way,admin_level\n FROM planet_osm_roads\n WHERE \"boundary\"='administrative'\n AND admin_level in ('0','1','2','3','4')\n ) AS admin_01234", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -918,7 +918,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,admin_level\n FROM planet_osm_roads\n WHERE \"boundary\"='administrative'\n and admin_level in ('5','6','7','8')\n ) as admin_5678", + "table": "(SELECT way,admin_level\n FROM planet_osm_roads\n WHERE \"boundary\"='administrative'\n AND admin_level in ('5','6','7','8')\n ) AS admin_5678", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -941,7 +941,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,admin_level\n FROM planet_osm_roads\n WHERE \"boundary\"='administrative'\n and admin_level in ('9', '10')\n ) as admin_other", + "table": "(SELECT way,admin_level\n FROM planet_osm_roads\n WHERE \"boundary\"='administrative'\n AND admin_level in ('9', '10')\n ) AS admin_other", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -964,7 +964,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way FROM planet_osm_line WHERE \"power\"='minor_line') as power_minorline", + "table": "(SELECT way FROM planet_osm_line WHERE \"power\"='minor_line') AS power_minorline", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -987,7 +987,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way FROM planet_osm_line WHERE \"power\"='line') as power_line", + "table": "(SELECT way FROM planet_osm_line WHERE \"power\"='line') AS power_line", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1032,7 +1032,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,place,name,ref\n FROM planet_osm_point\n WHERE place in ('country','state')\n ) as placenames_large", + "table": "(SELECT way,place,name,ref\n FROM planet_osm_point\n WHERE place in ('country','state')\n ) AS placenames_large", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1055,7 +1055,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,place,name,ref\n FROM planet_osm_point\n WHERE place in ('city','town') and capital='yes'\n ) as placenames_capital", + "table": "(SELECT way,place,name,ref\n FROM planet_osm_point\n WHERE place in ('city','town') AND capital='yes'\n ) AS placenames_capital", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1078,7 +1078,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,place,name\n FROM planet_osm_point\n WHERE place in ('city','town')\n and (capital IS NULL or capital != 'yes')\n ) as placenames_medium", + "table": "(SELECT way,place,name\n FROM planet_osm_point\n WHERE place in ('city','town')\n AND (capital IS NULL or capital != 'yes')\n ) AS placenames_medium", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1101,7 +1101,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,place,name\n FROM planet_osm_point\n WHERE place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n ) as placenames_small", + "table": "(SELECT way,place,name\n FROM planet_osm_point\n WHERE place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n ) AS placenames_small", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1124,7 +1124,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (SELECT way,name,railway,aerialway,disused\n FROM planet_osm_point\n WHERE railway in ('station','halt','tram_stop','subway_entrance')\n or aerialway='station'\n ) as stations", + "table": " (SELECT way,name,railway,aerialway,disused\n FROM planet_osm_point\n WHERE railway in ('station','halt','tram_stop','subway_entrance')\n or aerialway='station'\n ) AS stations", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1147,7 +1147,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (SELECT way,name,railway,aerialway,disused\n FROM planet_osm_polygon\n WHERE railway in ('station','halt','tram_stop')\n or aerialway='station'\n ) as stations_poly", + "table": " (SELECT way,name,railway,aerialway,disused\n FROM planet_osm_polygon\n WHERE railway in ('station','halt','tram_stop')\n or aerialway='station'\n ) AS stations_poly", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1170,7 +1170,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (SELECT way,name,way_area\n FROM planet_osm_polygon\n WHERE \"natural\"='glacier' and building IS NULL\n ORDER BY way_area desc\n ) as glaciers_text", + "table": " (SELECT way,name,way_area\n FROM planet_osm_polygon\n WHERE \"natural\"='glacier' AND building IS NULL\n ORDER BY way_area desc\n ) AS glaciers_text", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1193,7 +1193,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT *\n FROM planet_osm_point\n WHERE aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n or railway='level_crossing'\n ) as amenity_symbols", + "table": "(SELECT *\n FROM planet_osm_point\n WHERE aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' AND (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n or railway='level_crossing'\n ) AS amenity_symbols", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1216,7 +1216,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT *\n FROM planet_osm_polygon\n WHERE aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree')\n or railway='level_crossing'\n ) as amenity_symbols_poly", + "table": "(SELECT *\n FROM planet_osm_polygon\n WHERE aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' AND (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree')\n or railway='level_crossing'\n ) AS amenity_symbols_poly", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1239,7 +1239,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n FROM planet_osm_polygon\n WHERE amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n ORDER BY way_area desc ) as amenity_points_poly", + "table": "(SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) AS feature,access,religion\n FROM planet_osm_polygon\n WHERE amenity IS NOT NULL\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n ORDER BY way_area desc ) AS amenity_points_poly", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1262,7 +1262,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion\n FROM planet_osm_point\n WHERE shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity is not null\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points", + "table": "(SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) AS feature,access,religion\n FROM planet_osm_point\n WHERE shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or amenity IS NOT NULL\n or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) AS amenity_points", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1285,7 +1285,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way FROM planet_osm_point WHERE power='tower') as power_towers", + "table": "(SELECT way FROM planet_osm_point WHERE power='tower') AS power_towers", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1308,7 +1308,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way FROM planet_osm_point WHERE power='pole') as power_poles", + "table": "(SELECT way FROM planet_osm_point WHERE power='pole') AS power_poles", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1354,7 +1354,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (SELECT way,highway,junction,ref,name\n FROM planet_osm_point\n WHERE highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes'\n ) as junctions", + "table": " (SELECT way,highway,junction,ref,name\n FROM planet_osm_point\n WHERE highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes'\n ) AS junctions", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1400,7 +1400,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (SELECT way, way_area/(!pixel_width!*!pixel_height!) AS way_pixels, highway, name\n FROM planet_osm_polygon\n WHERE highway in ('residential','unclassified','pedestrian','service','footway','cycleway','living_street','track','path','platform') or railway in ('platform') and name is not null\n ) as roads_area_text_name", + "table": " (SELECT way, way_area/(!pixel_width!*!pixel_height!) AS way_pixels, highway, name\n FROM planet_osm_polygon\n WHERE highway in ('residential','unclassified','pedestrian','service','footway','cycleway','living_street','track','path','platform') or railway in ('platform') AND name IS NOT NULL\n ) AS roads_area_text_name", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1423,7 +1423,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (SELECT way, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end, name\n FROM planet_osm_line\n 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','proposed') \n and name is not null\n ) as roads_text_name", + "table": " (SELECT way, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end, name\n FROM planet_osm_line\n 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','proposed') \n AND name IS NOT NULL\n ) AS roads_text_name", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1446,7 +1446,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (SELECT way, highway, name\n FROM planet_osm_line\n WHERE highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n and name is not null\n ) as paths_text_name", + "table": " (SELECT way, highway, name\n FROM planet_osm_line\n WHERE highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n AND name IS NOT NULL\n ) AS paths_text_name", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1469,7 +1469,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area\n FROM planet_osm_polygon\n WHERE amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n ORDER BY way_area desc ) as text_poly", + "table": "(SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) AS feature,access,NULL as ele,name,ref,way_area\n FROM planet_osm_polygon\n WHERE amenity IS NOT NULL\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure IS NOT NULL\n or landuse IS NOT NULL\n or tourism IS NOT NULL\n or \"natural\" IS NOT NULL\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n ORDER BY way_area desc ) AS text_poly", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1492,7 +1492,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area\n FROM planet_osm_point\n WHERE amenity is not null\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text", + "table": " (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || \"natural\", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) AS feature,access,ele,name,ref,NULL as way_area\n FROM planet_osm_point\n WHERE amenity IS NOT NULL\n or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes')\n or leisure IS NOT NULL\n or landuse IS NOT NULL\n or tourism IS NOT NULL\n or \"natural\" IS NOT NULL\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) AS text", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1515,7 +1515,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT name, way, way_area FROM planet_osm_polygon WHERE building is not null and building not in ('no','station','supermarket')) as building_text", + "table": "(SELECT name, way, way_area FROM planet_osm_polygon WHERE building IS NOT NULL AND building not in ('no','station','supermarket')) AS building_text", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1538,7 +1538,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way FROM planet_osm_line WHERE \"addr:interpolation\" is not null) as interpolation", + "table": "(SELECT way FROM planet_osm_line WHERE \"addr:interpolation\" IS NOT NULL) AS interpolation", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1561,7 +1561,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (SELECT way,\"addr:housenumber\" FROM planet_osm_polygon WHERE \"addr:housenumber\" is not null and building is not null\n union\n select way,\"addr:housenumber\" FROM planet_osm_point WHERE \"addr:housenumber\" is not null\n ) as housenumbers", + "table": " (SELECT way,\"addr:housenumber\" FROM planet_osm_polygon WHERE \"addr:housenumber\" IS NOT NULL AND building IS NOT NULL\n union\n select way,\"addr:housenumber\" FROM planet_osm_point WHERE \"addr:housenumber\" IS NOT NULL\n ) AS housenumbers", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1584,7 +1584,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,\"addr:housename\" FROM planet_osm_polygon WHERE \"addr:housename\" is not null and building is not null\n union\n select way,\"addr:housename\" FROM planet_osm_point WHERE \"addr:housename\" is not null\n ) as housenames", + "table": "(SELECT way,\"addr:housename\" FROM planet_osm_polygon WHERE \"addr:housename\" IS NOT NULL AND building IS NOT NULL\n union\n select way,\"addr:housename\" FROM planet_osm_point WHERE \"addr:housename\" IS NOT NULL\n ) AS housenames", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1607,7 +1607,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": " (SELECT way,waterway,lock,name,CASE WHEN tunnel in ('yes','culvert') THEN 'yes' else 'no' end as int_tunnel\n FROM planet_osm_line\n WHERE waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n ORDER BY z_order\n ) as water_lines_text", + "table": " (SELECT way,waterway,lock,name,CASE WHEN tunnel in ('yes','culvert') THEN 'yes' else 'no' end as int_tunnel\n FROM planet_osm_line\n WHERE waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n ORDER BY z_order\n ) AS water_lines_text", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1630,7 +1630,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT 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')) as admin_text", + "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')) AS admin_text", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1653,7 +1653,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,way_area,name,boundary FROM planet_osm_polygon WHERE (boundary='national_park' or leisure='nature_reserve') and building IS NULL) as national_park_boundaries", + "table": "(SELECT way,way_area,name,boundary FROM planet_osm_polygon WHERE (boundary='national_park' or leisure='nature_reserve') AND building IS NULL) AS national_park_boundaries", "geometry_field": "way", "type": "postgis", "key_field": "", @@ -1676,7 +1676,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT way,name,tourism FROM planet_osm_polygon WHERE tourism='theme_park') as theme_park", + "table": "(SELECT way,name,tourism FROM planet_osm_polygon WHERE tourism='theme_park') AS theme_park", "geometry_field": "way", "type": "postgis", "key_field": "", diff --git a/project.yaml b/project.yaml index c276c77003..95eea93868 100644 --- a/project.yaml +++ b/project.yaml @@ -111,7 +111,7 @@ Layer: ('leisure_' || (CASE WHEN leisure IN ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') THEN leisure ELSE NULL END)) AS leisure, ('military_' || (CASE WHEN military IN ('barracks', 'danger_area') THEN military ELSE NULL END)) AS military, ('natural_' || (CASE WHEN "natural" IN ('beach','desert','heath','mud','grassland','wood','sand','scrub') THEN "natural" ELSE NULL END)) AS "natural", - ('power_' || (CASE WHEN power IN ('station','sub_station','substation','generator') THEN power ELSE NULL END)) as power, + ('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', 'zoo') THEN tourism ELSE NULL END)) AS tourism, ('highway_' || (CASE WHEN highway IN ('services', 'rest_area') THEN highway ELSE NULL END)) AS highway, CASE WHEN religion IN ('christian','jewish') THEN religion ELSE 'INT-generic'::text end AS religion @@ -221,7 +221,7 @@ Layer: 'no' as bridge FROM planet_osm_line WHERE waterway in ('weir', 'river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi') - and (bridge IS NULL or bridge not in ('yes','aqueduct')) + AND (bridge IS NULL or bridge not in ('yes','aqueduct')) ORDER BY z_order ) AS water_lines advanced: {} @@ -278,7 +278,7 @@ Layer: way, man_made FROM planet_osm_line WHERE man_made IN ('pier', 'breakwater', 'groyne') - ) as piers + ) AS piers advanced: {} - id: "locks" name: "locks" @@ -397,7 +397,7 @@ Layer: UNION ALL (SELECT way, prio, - 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' else railway END)), + 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' else railway END)), ('aeroway_' || aeroway)) AS feature, horse, foot, bicycle, tracktype, CASE WHEN access in ('destination') THEN 'destination'::text @@ -503,7 +503,7 @@ Layer: (SELECT way, barrier FROM planet_osm_line - WHERE barrier is not null + WHERE barrier IS NOT NULL ) AS line_barriers advanced: {} - id: "cliffs" @@ -604,7 +604,7 @@ Layer: 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 + ) AS feature FROM planet_osm_polygon WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform') OR railway IN ('platform') @@ -671,7 +671,7 @@ Layer: UNION ALL (SELECT way, prio, - 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' else railway end)), ('aeroway_' || aeroway)) as feature, + 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' else railway end)), ('aeroway_' || aeroway)) AS feature, horse, foot, bicycle, tracktype, 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, @@ -699,8 +699,8 @@ Layer: ) AS ordertable (feature, prio) ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature 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','viaduct')) + AND (covered IS NULL or not covered='yes') + AND (bridge IS NULL or not bridge in ('yes','viaduct')) ) ) AS features ORDER BY prio @@ -742,7 +742,7 @@ Layer: ( (SELECT way, prio, - ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) as feature, + ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) AS feature, horse, foot, bicycle, tracktype, CASE WHEN access in ('destination') THEN 'destination'::text WHEN access in ('no', 'private') THEN 'no'::text @@ -750,7 +750,7 @@ Layer: 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') and 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') THEN oneway ELSE NULL END as oneway, + CASE WHEN oneway in ('yes', '-1') AND 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') THEN oneway ELSE NULL END as oneway, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN (VALUES @@ -783,8 +783,8 @@ Layer: ) AS ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature 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','viaduct'))) + AND (covered IS NULL or not covered='yes') + AND (bridge IS NULL or not bridge in ('yes','viaduct'))) union all (SELECT way, prio, @@ -822,7 +822,7 @@ Layer: ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), - ('railway_platform',90)) as ordertable (feature, prio) + ('railway_platform',90)) AS ordertable (feature, prio) ON COALESCE(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature WHERE (tunnel IS NULL OR NOT tunnel IN ('yes','building_passage')) AND (covered IS NULL OR NOT covered='yes') @@ -857,7 +857,7 @@ Layer: 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 + ) AS turning_circle_fill advanced: {} - id: "aerialways" name: "aerialways" @@ -867,7 +867,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way,aerialway FROM planet_osm_line WHERE aerialway is not null) as aerialways + (SELECT way,aerialway FROM planet_osm_line WHERE aerialway IS NOT NULL) AS aerialways advanced: {} - id: "roads-low-zoom" name: "roads-low-zoom" @@ -877,12 +877,12 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (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,tunnel + (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,tunnel 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'))) + 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 + ) AS roads_low_zoom advanced: {} - id: "waterway-bridges" name: "waterway-bridges" @@ -892,7 +892,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way,waterway,name,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 + (SELECT way,waterway,name,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 advanced: {} - id: "bridges" name: "bridges" @@ -902,7 +902,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT * FROM ((SELECT way, prio, ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) as feature, horse, foot, bicycle, tracktype, 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') and 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') THEN oneway ELSE NULL END as oneway, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN ( values ('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), ('highway_proposed',20), ('highway_construction',10)) as ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature WHERE bridge in ('yes','viaduct')) union all (SELECT way, prio, 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' else railway end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, 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 IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) as ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature WHERE bridge in ('yes','viaduct'))) as features ORDER BY layernotnull,prio) as bridges + (SELECT * FROM ((SELECT way, prio, ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end)) AS feature, horse, foot, bicycle, tracktype, 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') AND 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') THEN oneway ELSE NULL END as oneway, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' else 'no' end as link, CASE WHEN layer IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN ( values ('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), ('highway_proposed',20), ('highway_construction',10)) AS ordertable (feature, prio) on ('highway_' || planet_osm_line.highway) = ordertable.feature WHERE bridge in ('yes','viaduct')) union all (SELECT way, prio, 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' else railway end)), ('aeroway_' || aeroway)) AS feature, horse, foot, bicycle, tracktype, 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 IS NULL THEN '0' else layer end as layernotnull FROM planet_osm_line JOIN ( values ('railway_rail',430), ('railway_spur',430), ('railway_siding',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_disused',400), ('railway_construction',400), ('aeroway_runway',60), ('aeroway_taxiway',50), ('railway_platform',90)) AS ordertable (feature, prio) on coalesce(('railway_' || planet_osm_line.railway), ('aeroway_' || planet_osm_line.aeroway)) = ordertable.feature WHERE bridge in ('yes','viaduct'))) AS features ORDER BY layernotnull,prio) AS bridges properties: group-by: "layernotnull" advanced: {} @@ -914,7 +914,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way FROM planet_osm_line WHERE highway='bus_guideway' and (tunnel IS NULL or tunnel != 'yes')) as guideways + (SELECT way FROM planet_osm_line WHERE highway='bus_guideway' AND (tunnel IS NULL or tunnel != 'yes')) AS guideways advanced: {} - name: "admin-01234" id: "admin-01234" @@ -927,8 +927,8 @@ Layer: (SELECT way,admin_level FROM planet_osm_roads WHERE "boundary"='administrative' - and admin_level in ('0','1','2','3','4') - ) as admin_01234 + AND admin_level in ('0','1','2','3','4') + ) AS admin_01234 advanced: {} - id: "admin-5678" name: "admin-5678" @@ -941,8 +941,8 @@ Layer: (SELECT way,admin_level FROM planet_osm_roads WHERE "boundary"='administrative' - and admin_level in ('5','6','7','8') - ) as admin_5678 + AND admin_level in ('5','6','7','8') + ) AS admin_5678 advanced: {} - id: "admin-other" name: "admin-other" @@ -955,8 +955,8 @@ Layer: (SELECT way,admin_level FROM planet_osm_roads WHERE "boundary"='administrative' - and admin_level in ('9', '10') - ) as admin_other + AND admin_level in ('9', '10') + ) AS admin_other advanced: {} - id: "power-minorline" name: "power-minorline" @@ -966,7 +966,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way FROM planet_osm_line WHERE "power"='minor_line') as power_minorline + (SELECT way FROM planet_osm_line WHERE "power"='minor_line') AS power_minorline advanced: {} - id: "power-line" name: "power-line" @@ -976,7 +976,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way FROM planet_osm_line WHERE "power"='line') as power_line + (SELECT way FROM planet_osm_line WHERE "power"='line') AS power_line advanced: {} - id: "nepopulated" name: "nepopulated" @@ -1000,7 +1000,7 @@ Layer: (SELECT way,place,name,ref FROM planet_osm_point WHERE place in ('country','state') - ) as placenames_large + ) AS placenames_large advanced: {} - id: "placenames-capital" name: "placenames-capital" @@ -1012,8 +1012,8 @@ Layer: table: |2- (SELECT way,place,name,ref FROM planet_osm_point - WHERE place in ('city','town') and capital='yes' - ) as placenames_capital + WHERE place in ('city','town') AND capital='yes' + ) AS placenames_capital advanced: {} - id: "placenames-medium" name: "placenames-medium" @@ -1026,8 +1026,8 @@ Layer: (SELECT way,place,name FROM planet_osm_point WHERE place in ('city','town') - and (capital IS NULL or capital != 'yes') - ) as placenames_medium + AND (capital IS NULL or capital != 'yes') + ) AS placenames_medium advanced: {} - id: "placenames-small" name: "placenames-small" @@ -1040,7 +1040,7 @@ Layer: (SELECT way,place,name FROM planet_osm_point WHERE place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm') - ) as placenames_small + ) AS placenames_small advanced: {} - id: "stations" class: "stations" @@ -1054,7 +1054,7 @@ Layer: FROM planet_osm_point WHERE railway in ('station','halt','tram_stop','subway_entrance') or aerialway='station' - ) as stations + ) AS stations advanced: {} - id: "stations-poly" name: "stations-poly" @@ -1068,7 +1068,7 @@ Layer: FROM planet_osm_polygon WHERE railway in ('station','halt','tram_stop') or aerialway='station' - ) as stations_poly + ) AS stations_poly advanced: {} - id: "glaciers-text" name: "glaciers-text" @@ -1080,9 +1080,9 @@ Layer: table: |2- (SELECT way,name,way_area FROM planet_osm_polygon - WHERE "natural"='glacier' and building IS NULL + WHERE "natural"='glacier' AND building IS NULL ORDER BY way_area desc - ) as glaciers_text + ) AS glaciers_text advanced: {} - id: "amenity-symbols" name: "amenity-symbols" @@ -1098,10 +1098,10 @@ Layer: or barrier in ('bollard','gate','lift_gate','block') or highway in ('mini_roundabout','gate') or man_made in ('lighthouse','power_wind','windmill','mast') - or (power='generator' and ("generator:source"='wind' or power_source='wind')) + or (power='generator' AND ("generator:source"='wind' or power_source='wind')) or "natural" in ('peak','volcano','spring','tree','cave_entrance') or railway='level_crossing' - ) as amenity_symbols + ) AS amenity_symbols advanced: {} - id: "amenity-symbols-poly" name: "amenity-symbols-poly" @@ -1117,10 +1117,10 @@ Layer: or barrier in ('bollard','gate','lift_gate','block') or highway in ('mini_roundabout','gate') or man_made in ('lighthouse','power_wind','windmill','mast') - or (power='generator' and ("generator:source"='wind' or power_source='wind')) + or (power='generator' AND ("generator:source"='wind' or power_source='wind')) or "natural" in ('peak','volcano','spring','tree') or railway='level_crossing' - ) as amenity_symbols_poly + ) AS amenity_symbols_poly advanced: {} - id: "amenity-points-poly" name: "amenity-points-poly" @@ -1130,16 +1130,16 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion + (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) AS feature,access,religion FROM planet_osm_polygon - WHERE amenity is not null + WHERE amenity IS NOT NULL or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet') or highway in ('bus_stop','traffic_signals') or man_made in ('mast','water_tower') or historic in ('memorial','archaeological_site') or leisure in ('playground', 'picnic_table') - ORDER BY way_area desc ) as amenity_points_poly + ORDER BY way_area desc ) AS amenity_points_poly advanced: {} - id: "amenity-points" name: "amenity-points" @@ -1149,10 +1149,10 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) as feature,access,religion + (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'lock_' || lock, 'highway_' || highway) AS feature,access,religion FROM planet_osm_point WHERE shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') - or amenity is not null + or amenity IS NOT NULL or tourism in ('alpine_hut','picnic_site','camp_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet') or highway in ('bus_stop','traffic_signals','ford') or man_made in ('mast','water_tower') @@ -1160,7 +1160,7 @@ Layer: or waterway='lock' or lock='yes' or leisure in ('playground','slipway','picnic_table') - ) as amenity_points + ) AS amenity_points advanced: {} - id: "power-towers" name: "power-towers" @@ -1170,7 +1170,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way FROM planet_osm_point WHERE power='tower') as power_towers + (SELECT way FROM planet_osm_point WHERE power='tower') AS power_towers advanced: {} - id: "power-poles" name: "power-poles" @@ -1180,7 +1180,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way FROM planet_osm_point WHERE power='pole') as power_poles + (SELECT way FROM planet_osm_point WHERE power='pole') AS power_poles advanced: {} - id: "roads-text-ref-low-zoom" name: "roads-text-ref-low-zoom" @@ -1218,7 +1218,7 @@ Layer: (SELECT way,highway,junction,ref,name FROM planet_osm_point WHERE highway='motorway_junction' or highway = 'traffic_signals' or junction = 'yes' - ) as junctions + ) AS junctions advanced: {} - id: "roads-text-ref" name: "roads-text-ref" @@ -1255,8 +1255,8 @@ Layer: table: |2- (SELECT way, way_area/(!pixel_width!*!pixel_height!) 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 + 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 advanced: {} - id: "roads-text-name" name: "roads-text-name" @@ -1269,8 +1269,8 @@ Layer: (SELECT way, CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway,0,length(highway)-4) else highway end, 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','proposed') - and name is not null - ) as roads_text_name + AND name IS NOT NULL + ) AS roads_text_name advanced: {} - id: "paths-text-name" name: "paths-text-name" @@ -1283,8 +1283,8 @@ Layer: (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 + AND name IS NOT NULL + ) AS paths_text_name advanced: {} - id: "text-poly" name: "text-poly" @@ -1294,19 +1294,19 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,NULL as ele,name,ref,way_area + (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) AS feature,access,NULL as ele,name,ref,way_area FROM planet_osm_polygon - WHERE amenity is not null + WHERE amenity IS NOT NULL or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') - or leisure is not null - or landuse is not null - or tourism is not null - or "natural" is not null + or leisure IS NOT NULL + or landuse IS NOT NULL + or tourism IS NOT NULL + or "natural" IS NOT NULL or man_made in ('lighthouse','windmill') or place='island' or military='danger_area' or historic in ('memorial','archaeological_site') - ORDER BY way_area desc ) as text_poly + ORDER BY way_area desc ) AS text_poly advanced: {} - id: "text" name: "text" @@ -1316,21 +1316,21 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) as feature,access,ele,name,ref,NULL as way_area + (SELECT way,coalesce('aeroway_' || aeroway, 'shop_' || CASE WHEN shop in ('supermarket', 'bakery', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle') THEN shop when not shop IS NULL THEN 'other' ELSE NULL END, 'amenity_' || amenity, 'leisure_' || leisure, 'landuse_' || landuse, 'man_made_' || man_made, 'natural_' || "natural", 'place_' || place, 'tourism_' || tourism, 'military_' || military, 'waterway_' || waterway, 'historic_' || historic, 'highway_' || highway) AS feature,access,ele,name,ref,NULL as way_area FROM planet_osm_point - WHERE amenity is not null + WHERE amenity IS NOT NULL or shop in ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'books', 'boutique', 'builder', 'building_materials', 'butcher', 'camera', 'car', 'car_parts', 'car_repair', 'car_service', 'carpet', 'charity', 'cheese', 'chemist', 'chocolate', 'clothes', 'coffee', 'communication', 'computer', 'confectionery', 'convenience', 'copyshop', 'cosmetics', 'craft', 'curtain', 'dairy', 'deli', 'delicatessen', 'department_store', 'discount', 'dive', 'doityourself', 'dry_cleaning', 'e-cigarette', 'electrical', 'electronics', 'energy', 'erotic', 'estate_agent', 'fabric', 'farm', 'fashion', 'fish', 'fishing', 'fishmonger', 'flooring', 'florist', 'food', 'frame', 'frozen_food', 'funeral_directors', 'furnace', 'furniture', 'gallery', 'gambling', 'games', 'garden_centre', 'gas', 'general', 'gift', 'glaziery', 'greengrocer', 'grocery', 'hairdresser', 'hardware', 'health', 'health_food', 'hearing_aids', 'herbalist', 'hifi', 'hobby', 'household', 'houseware', 'hunting', 'ice_cream', 'insurance', 'interior_decoration', 'jewellery', 'jewelry', 'kiosk', 'kitchen', 'laundry', 'leather', 'lighting', 'locksmith', 'lottery', 'mall', 'market', 'massage', 'medical', 'medical_supply', 'mobile_phone', 'money_lender', 'motorcycle', 'motorcycle_repair', 'music', 'musical_instrument', 'newsagent', 'office_supplies', 'optician', 'organic', 'outdoor', 'paint', 'pastry', 'pawnbroker', 'perfumery', 'pet', 'pets', 'pharmacy', 'phone', 'photo', 'photo_studio', 'photography', 'pottery', 'printing', 'radiotechnics', 'real_estate', 'religion', 'rental', 'salon', 'scuba_diving', 'seafood', 'second_hand', 'sewing', 'shoe_repair', 'shoes', 'shopping_centre', 'solarium', 'souvenir', 'sports', 'stationery', 'supermarket', 'tailor', 'tanning', 'tattoo', 'tea', 'ticket', 'tiles', 'tobacco', 'toys', 'trade', 'travel_agency', 'tyres', 'vacuum_cleaner', 'variety_store', 'video', 'video_games', 'watches', 'wholesale', 'wine', 'winery', 'yes') - or leisure is not null - or landuse is not null - or tourism is not null - or "natural" is not null + or leisure IS NOT NULL + or landuse IS NOT NULL + or tourism IS NOT NULL + or "natural" IS NOT NULL or man_made in ('lighthouse','windmill') or place='island' or military='danger_area' or aeroway='gate' or waterway='lock' or historic in ('memorial','archaeological_site') - ) as text + ) AS text advanced: {} - id: "building-text" name: "building-text" @@ -1340,7 +1340,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT name, way, way_area FROM planet_osm_polygon WHERE building is not null and building not in ('no','station','supermarket')) as building_text + (SELECT name, way, way_area FROM planet_osm_polygon WHERE building IS NOT NULL AND building not in ('no','station','supermarket')) AS building_text advanced: {} - id: "interpolation" name: "interpolation" @@ -1350,7 +1350,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way FROM planet_osm_line WHERE "addr:interpolation" is not null) as interpolation + (SELECT way FROM planet_osm_line WHERE "addr:interpolation" IS NOT NULL) AS interpolation advanced: {} - id: "housenumbers" name: "housenumbers" @@ -1360,10 +1360,10 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way,"addr:housenumber" FROM planet_osm_polygon WHERE "addr:housenumber" is not null and building is not null + (SELECT way,"addr:housenumber" FROM planet_osm_polygon WHERE "addr:housenumber" IS NOT NULL AND building IS NOT NULL union - select way,"addr:housenumber" FROM planet_osm_point WHERE "addr:housenumber" is not null - ) as housenumbers + select way,"addr:housenumber" FROM planet_osm_point WHERE "addr:housenumber" IS NOT NULL + ) AS housenumbers advanced: {} - id: "housenames" name: "housenames" @@ -1373,10 +1373,10 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way,"addr:housename" FROM planet_osm_polygon WHERE "addr:housename" is not null and building is not null + (SELECT way,"addr:housename" FROM planet_osm_polygon WHERE "addr:housename" IS NOT NULL AND building IS NOT NULL union - select way,"addr:housename" FROM planet_osm_point WHERE "addr:housename" is not null - ) as housenames + select way,"addr:housename" FROM planet_osm_point WHERE "addr:housename" IS NOT NULL + ) AS housenames advanced: {} - id: "water-lines-text" name: "water-lines-text" @@ -1390,7 +1390,7 @@ Layer: FROM planet_osm_line WHERE waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi') ORDER BY z_order - ) as water_lines_text + ) AS water_lines_text advanced: {} - id: "admin-text" name: "admin-text" @@ -1400,7 +1400,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (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')) as admin_text + (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')) AS admin_text advanced: {} - id: "nature-reserve-boundaries" name: "nature-reserve-boundaries" @@ -1410,7 +1410,7 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way,way_area,name,boundary FROM planet_osm_polygon WHERE (boundary='national_park' or leisure='nature_reserve') and building IS NULL) as national_park_boundaries + (SELECT way,way_area,name,boundary FROM planet_osm_polygon WHERE (boundary='national_park' or leisure='nature_reserve') AND building IS NULL) AS national_park_boundaries advanced: {} - id: "theme-park" name: "theme-park" @@ -1420,5 +1420,5 @@ Layer: Datasource: <<: *osm2pgsql table: |2- - (SELECT way,name,tourism FROM planet_osm_polygon WHERE tourism='theme_park') as theme_park + (SELECT way,name,tourism FROM planet_osm_polygon WHERE tourism='theme_park') AS theme_park advanced: {} From 53aa718b465d4b1466fe552121b45d43c41204ba Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Tue, 16 Sep 2014 15:17:17 +0100 Subject: [PATCH 72/74] Resync with yaml. --- project.mml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.mml b/project.mml index cca4782e31..b36ac72ef5 100644 --- a/project.mml +++ b/project.mml @@ -85,7 +85,7 @@ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over", "Datasource": { "extent": "-20037508,-20037508,20037508,20037508", - "table": "(SELECT \n way, name, religion,\n COALESCE(aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) AS feature \n FROM (SELECT \n way, COALESCE(name,'') AS name, \n ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway ELSE NULL END)) AS aeroway,\n ('amenity_' || (CASE WHEN amenity IN ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') THEN amenity ELSE NULL END)) AS amenity,\n ('landuse_' || (CASE WHEN landuse IN ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') THEN landuse ELSE NULL END)) AS landuse,\n ('leisure_' || (CASE WHEN leisure IN ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') THEN leisure ELSE NULL END)) AS leisure,\n ('military_' || (CASE WHEN military IN ('barracks', 'danger_area') THEN military ELSE NULL END)) AS military,\n ('natural_' || (CASE WHEN \"natural\" IN ('beach','desert','heath','mud','grassland','wood','sand','scrub') THEN \"natural\" ELSE NULL END)) AS \"natural\",\n ('power_' || (CASE WHEN power IN ('station','sub_station','substation','generator') THEN power ELSE NULL END)) as power,\n ('tourism_' || (CASE WHEN tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') THEN tourism ELSE NULL END)) AS tourism,\n ('highway_' || (CASE WHEN highway IN ('services', 'rest_area') THEN highway ELSE NULL END)) AS highway,\n CASE WHEN religion IN ('christian','jewish') THEN religion ELSE 'INT-generic'::text end AS religion\n FROM planet_osm_polygon\n WHERE landuse IS NOT NULL\n OR leisure IS NOT NULL\n OR aeroway IN ('apron','aerodrome')\n OR amenity IN ('parking','university','college','school','hospital','kindergarten','grave_yard')\n OR military IN ('barracks','danger_area')\n OR \"natural\" IN ('beach','desert','heath','mud','grassland','wood','sand','scrub')\n OR power IN ('station','sub_station','substation','generator')\n OR tourism IN ('attraction','camp_site','caravan_site','picnic_site','zoo')\n OR highway IN ('services','rest_area')\n ORDER BY z_order, way_area DESC\n ) AS landcover\n) AS features", + "table": "(SELECT \n way, name, religion,\n COALESCE(aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) AS feature \n FROM (SELECT \n way, COALESCE(name,'') AS name, \n ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway ELSE NULL END)) AS aeroway,\n ('amenity_' || (CASE WHEN amenity IN ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') THEN amenity ELSE NULL END)) AS amenity,\n ('landuse_' || (CASE WHEN landuse IN ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') THEN landuse ELSE NULL END)) AS landuse,\n ('leisure_' || (CASE WHEN leisure IN ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table','sports_centre','stadium','pitch','track') THEN leisure ELSE NULL END)) AS leisure,\n ('military_' || (CASE WHEN military IN ('barracks', 'danger_area') THEN military ELSE NULL END)) AS military,\n ('natural_' || (CASE WHEN \"natural\" IN ('beach','desert','heath','mud','grassland','wood','sand','scrub') THEN \"natural\" ELSE NULL END)) AS \"natural\",\n ('power_' || (CASE WHEN power IN ('station','sub_station','substation','generator') THEN power ELSE NULL END)) AS power,\n ('tourism_' || (CASE WHEN tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') THEN tourism ELSE NULL END)) AS tourism,\n ('highway_' || (CASE WHEN highway IN ('services', 'rest_area') THEN highway ELSE NULL END)) AS highway,\n CASE WHEN religion IN ('christian','jewish') THEN religion ELSE 'INT-generic'::text end AS religion\n FROM planet_osm_polygon\n WHERE landuse IS NOT NULL\n OR leisure IS NOT NULL\n OR aeroway IN ('apron','aerodrome')\n OR amenity IN ('parking','university','college','school','hospital','kindergarten','grave_yard')\n OR military IN ('barracks','danger_area')\n OR \"natural\" IN ('beach','desert','heath','mud','grassland','wood','sand','scrub')\n OR power IN ('station','sub_station','substation','generator')\n OR tourism IN ('attraction','camp_site','caravan_site','picnic_site','zoo')\n OR highway IN ('services','rest_area')\n ORDER BY z_order, way_area DESC\n ) AS landcover\n) AS features", "geometry_field": "way", "type": "postgis", "key_field": "", From c3663f3cdca73f79053ee7abb1e63b8993874711 Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Tue, 16 Sep 2014 15:39:35 +0100 Subject: [PATCH 73/74] Rephrase some yaml-related information. --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 519b417fa7..8a421d3c57 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,13 +12,13 @@ Your pull requests will then be reviewed and discussed. ## Editing Layers -OpenStreetMap Carto uses a YAML file for defining layers. Some of the rationale is outlined in [a GitHub issue](https://github.com/gravitystorm/openstreetmap-carto/issues/711). Editing SQL in a YAML file is much friendlier than editing escaped SQL in a JSON file. +OpenStreetMap Carto uses a YAML file for defining layers. Some of the rationale is outlined in [a GitHub issue](https://github.com/gravitystorm/openstreetmap-carto/issues/711). Editing multi-line SQL statements in a YAML file is much friendlier than editing escaped SQL in a JSON file. This requires a preprocessing step to convert the YAML to JSON. A script is provided at ``scripts/yaml2mml.py``, which depends on PyYAML, available through ``pip install pyyaml`` or packaged on Ubuntu as ``python-yaml``. After editing the YAML file, run ``./scripts/yaml2mml.py < project.yaml > project.mml && touch project.mml`` to update the file and force TileMill to reload it. -When committing changes, add the entire project.mml file with ``git add project.mml``. One of the big advantages of this system is that to resolve any layer merge conflicts, they only need to be resolved in the YAML file where they are easier to handle, then the JSON file can be regenerated. +When committing changes, add both the `project.yaml` and `project.mml` files to the commit. One of the big advantages of this system is that to resolve any layer merge conflicts, they only need to be resolved in the YAML file where they are easier to handle, then the JSON file can be regenerated, while at the same time the styles work with Tilemill out-of-the-box without needing to run the `yaml2mml` script. ## CartoCSS Style Guidelines From d778979732b8d775de77ff4c3b663ed25dc0b981 Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Tue, 16 Sep 2014 15:55:49 +0100 Subject: [PATCH 74/74] Use single backticks for inline code unless the code itself contains backticks --- CONTRIBUTING.md | 10 +++++----- INSTALL.md | 36 ++++++++++++++++++------------------ 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8a421d3c57..544cc435f3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,9 +14,9 @@ Your pull requests will then be reviewed and discussed. OpenStreetMap Carto uses a YAML file for defining layers. Some of the rationale is outlined in [a GitHub issue](https://github.com/gravitystorm/openstreetmap-carto/issues/711). Editing multi-line SQL statements in a YAML file is much friendlier than editing escaped SQL in a JSON file. -This requires a preprocessing step to convert the YAML to JSON. A script is provided at ``scripts/yaml2mml.py``, which depends on PyYAML, available through ``pip install pyyaml`` or packaged on Ubuntu as ``python-yaml``. +This requires a preprocessing step to convert the YAML to JSON. A script is provided at `scripts/yaml2mml.py`, which depends on PyYAML, available through `pip install pyyaml` or packaged on Ubuntu as `python-yaml`. -After editing the YAML file, run ``./scripts/yaml2mml.py < project.yaml > project.mml && touch project.mml`` to update the file and force TileMill to reload it. +After editing the YAML file, run `./scripts/yaml2mml.py < project.yaml > project.mml && touch project.mml` to update the file and force TileMill to reload it. When committing changes, add both the `project.yaml` and `project.mml` files to the commit. One of the big advantages of this system is that to resolve any layer merge conflicts, they only need to be resolved in the YAML file where they are easier to handle, then the JSON file can be regenerated, while at the same time the styles work with Tilemill out-of-the-box without needing to run the `yaml2mml` script. @@ -62,10 +62,10 @@ Because SQL within JSON or YAML will not generally be syntax highlighted, indent * SQL keywords in caps, as in PostgreSQL documentation * Two space indents. No tabs. -* Start with ``(SELECT`` and start the columns on the next line. +* Start with `(SELECT` and start the columns on the next line. * Two indents for columns, to bring them to the same indent level as later clause contents -* Add indentation after ``SELECT``s until the end of the sub-select. -* Add indentation for contents of ``FROM``, ``WHERE``, ``ORDER BY`` and other clauses +* Add indentation after `SELECT`s until the end of the sub-select. +* Add indentation for contents of `FROM`, `WHERE`, `ORDER BY` and other clauses * Put content with WHERE, etc if it's short * Add indentation if necessary for complex function calls, WHERE parenthesis, and CASE statements * One space before and after = etc diff --git a/INSTALL.md b/INSTALL.md index 764cc393b1..c87096a309 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,6 +1,6 @@ # Installation -You need OpenStreetMap data loaded into a PostGIS database (see below for [dependencies](https://github.com/gravitystorm/openstreetmap-carto#dependencies)). These stylesheets currently work only with the osm2pgsql defaults (i.e. database name is ``gis``, table names are ``planet_osm_point``, etc). +You need OpenStreetMap data loaded into a PostGIS database (see below for [dependencies](https://github.com/gravitystorm/openstreetmap-carto#dependencies)). These stylesheets currently work only with the osm2pgsql defaults (i.e. database name is `gis`, table names are `planet_osm_point`, etc). It's probably easiest to grab an PBF of OSM data from [Mapzen](https://mapzen.com/metro-extracts/) or [geofabrik](http://download.geofabrik.de/). Once you've set up your PostGIS database, import with osm2pgsql: @@ -24,15 +24,15 @@ To download the shapefiles you can run the following script from this directory. You can also download them manually at the following paths: -* [``simplified-land-polygons.shp``](http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip) (updated daily) -* [``land-polygon.shp``](http://data.openstreetmapdata.com/land-polygons-split-3857.zip) (updated daily) -* [``builtup_area.shp``](http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz) -* [``ne_110m_admin_0_boundary_lines_land.shp``](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip) -* [``ne_10m_populated_places_fixed.shp``](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip) (and see [below](#populated-places-shapefile)) +* [`simplified-land-polygons.shp`](http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip) (updated daily) +* [`land-polygon.shp`](http://data.openstreetmapdata.com/land-polygons-split-3857.zip) (updated daily) +* [`builtup_area.shp`](http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz) +* [`ne_110m_admin_0_boundary_lines_land.shp`](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip) +* [`ne_10m_populated_places_fixed.shp`](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip) (and see [below](#populated-places-shapefile)) The repeated www.naturalearthdata.com in the Natural Earth shapefiles is correct. -Put these shapefiles at ``path/to/openstreetmap-carto/data``. +Put these shapefiles at `path/to/openstreetmap-carto/data`. ### Populated places shapefile @@ -51,21 +51,21 @@ The stylesheet depends on a number of openly licensed fonts for support of all t If a font is missing, it will skip to the next available font which contains those characters. If you are not concerned with a particular language, you do not need its fonts. DejaVu Sans and Unifont are the two required fonts, and included on most systems. ### Global -* DejaVu Sans, for most languages (``ttf-dejavu``) -* Droid Sans Fallback, as a reasonable fallback (``fonts-droid``) -* Unifont, as a last resort fallback (``ttf-unifont``) +* DejaVu Sans, for most languages (`ttf-dejavu`) +* Droid Sans Fallback, as a reasonable fallback (`fonts-droid`) +* Unifont, as a last resort fallback (`ttf-unifont`) ### Southeast Asia -* Arundina Sans, for Thai (``fonts-sipa-arundina``) -* Padauk, for Burmese (``fonts-sil-padauk``) -* Khmer OS Metal Chrieng Regular, for Khmer (``fonts-khmeros``) +* Arundina Sans, for Thai (`fonts-sipa-arundina`) +* Padauk, for Burmese (`fonts-sil-padauk`) +* Khmer OS Metal Chrieng Regular, for Khmer (`fonts-khmeros`) ### South Asia -* Mukti Narrow, for Bangali (``ttf-indic-fonts-core``) -* Gargi Medium, for Devanagari (``ttf-indic-fonts-core``) -* TSCu_Paranar, for Tamil (``ttf-tamil-fonts``) -* Mallige, for Kannada (``ttf-indic-fonts-core`` for normal and bold and ``ttf-kannada-fonts`` for oblique) *The filename uses "Malige" but the font name uses "Mallige"* +* Mukti Narrow, for Bangali (`ttf-indic-fonts-core`) +* Gargi Medium, for Devanagari (`ttf-indic-fonts-core`) +* TSCu_Paranar, for Tamil (`ttf-tamil-fonts`) +* Mallige, for Kannada (`ttf-indic-fonts-core` for normal and bold and `ttf-kannada-fonts` for oblique) *The filename uses "Malige" but the font name uses "Mallige"* On Ubuntu you can install all the fonts with @@ -92,4 +92,4 @@ If you aren't using TileMill, you can compile the CartoCSS stylesheets into Mapn * curl, unzip for downloading and decompressing files * shapeindex (a companion utility to Mapnik found in the mapnik-utils package) for indexing downloaded shapefiles -* [PyYAML] (http://pyyaml.org/wiki/PyYAML) if editing the MML (layer definition) file (packaged as ``python-yaml`` on Ubuntu, or installed with ``pip install pyyaml``) +* [PyYAML](http://pyyaml.org/wiki/PyYAML) if editing the MML (layer definition) file (packaged as `python-yaml` on Ubuntu, or installed with `pip install pyyaml`)