[openstreetmap-carto] 01/05: Imported Upstream version 3.0.0

Bas Couwenberg sebastic at debian.org
Thu Dec 22 18:33:25 UTC 2016


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository openstreetmap-carto.

commit ad1be6d679cf9659c02fd4e26394b6c1c69fc6fc
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Thu Dec 22 19:09:21 2016 +0100

    Imported Upstream version 3.0.0
---
 .gitattributes                     |    1 -
 .travis.yml                        |   20 +-
 CHANGELOG.md                       |   15 +-
 CODE_OF_CONDUCT.md                 |    4 +-
 CONTRIBUTING.md                    |   39 +-
 INSTALL.md                         |   23 +-
 README.md                          |   22 +-
 amenity-points.mss                 |    6 +-
 get-shapefiles.sh                  |  101 -
 landcover.mss                      |   12 +-
 project.mml                        | 4659 ++++++++++++++++++++----------------
 project.yaml                       | 2520 -------------------
 scripts/get-shapefiles.py          |  387 +++
 scripts/travis_check_project_files |   15 -
 scripts/yaml2mml.py                |   36 -
 stations.mss                       |   11 +
 style.mss                          |   19 +-
 symbols/place/place-4-z7.svg       |   26 +-
 symbols/place/place-4.svg          |   26 +-
 symbols/place/place-6-z7.svg       |   27 +-
 symbols/place/place-6.svg          |   26 +-
 symbols/place/place-capital-6.svg  |   31 +-
 symbols/place/place-capital-8.svg  |   37 +-
 symbols/wilderness_hut.svg         |   37 +
 24 files changed, 3088 insertions(+), 5012 deletions(-)

diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index c29e2c2..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.mml binary
diff --git a/.travis.yml b/.travis.yml
index 62ec3ee..3426d02 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,18 +1,18 @@
 language: node_js
 sudo: false
-cache: apt
-addons:
-  apt:
-    packages:
-    - python-demjson
-    - python-yaml
 node_js:
   - "0.10"
+env:
+  - CARTO=0.16.0 MAPNIK='3.0.0 3.0.12'
+  - CARTO=0.16.3 MAPNIK='3.0.0 3.0.12'
 install:
-  - npm install carto at 0.12.1
+  - npm install carto@$CARTO
   - mkdir -p data/world_boundaries data/simplified-land-polygons-complete-3857 data/ne_110m_admin_0_boundary_lines_land data/ne_10m_populated_places data/land-polygons-split-3857
   - touch data/world_boundaries/builtup_area.shp data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp data/land-polygons-split-3857/land_polygons.shp
 script:
-  - jsonlint project.mml
-  - set -o pipefail && ./node_modules/carto/bin/carto project.mml | xmllint - | wc -l
-  - ./scripts/travis_check_project_files
+  # We're using pipes in the checks, so fail if any part fails
+  - set -o pipefail
+  # Validate the MML against multiple Mapnik versions, and report its lines for debugging purposes
+  - for m in $MAPNIK; do ./node_modules/carto/bin/carto -a $m project.mml | xmllint - | wc -l; done
+  # Validate that the SVGs are valid XML
+  - find symbols/ -name '*.svg' | xargs xmllint --noout
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a5abe92..561d29e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,17 @@
-## [Unreleased](https://github.com/gravitystorm/openstreetmap-carto/compare/v2.45.1...master) 
+## [Unreleased](https://github.com/gravitystorm/openstreetmap-carto/compare/v3.0.0...master)
+
+## [v3.0.0](https://github.com/gravitystorm/openstreetmap-carto/compare/v2.45.1...v3.0.0) - 2016-12-21
+### Major Changes
+- Mapnik 3 is now required
+- CartoCSS 0.16.x is now required
+- Official Tilemill support is dropped
+- Shapefiles are downloaded with a new python script
+
+### Changes
+- Noto Naskh is now used for Arabic
+- Visual impact of campsites and quarries reduced below z13
+- Wilderness huts rendered
+- Subway entrances rendered
 
 ## [v2.45.1](https://github.com/gravitystorm/openstreetmap-carto/compare/v2.45.0...v2.45.1) - 2016-12-03
 ### Changes
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 5be25d8..33f8d6e 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -2,7 +2,7 @@
 
 ## Why have a Code of Conduct?
 
-Online communities include people from many different backgrounds. The OpenStreetMap Carto contributors are committed to providing a friendly, safe and welcoming environment for all, regardless of age, disability, gender, nationality, race, religion, sexuality, or similar personal characteristic.
+Online communities include people from many different backgrounds. The OpenStreetMap Carto contributors are committed to providing a friendly, safe and welcoming environment for all, regardless of age, disability, gender, nationality, ethnicity, religion, sexuality, or similar personal characteristic.
 
 The first goal of the Code of Conduct is to specify a baseline standard of behavior so that people with different social values and communication styles can talk about OpenStreetMap Carto effectively, productively, and respectfully.
 
@@ -47,7 +47,7 @@ People are complicated. You should expect to be misunderstood and to misundersta
 These actions are explicitly forbidden in OpenStreetMap Carto spaces:
 
 - Insulting, demeaning, hateful, or threatening remarks.
-- Discrimination based on age, disability, gender, nationality, race, religion, sexuality, or similar personal characteristic.
+- Discrimination based on age, disability, gender, nationality, ethnicity, religion, sexuality, or similar personal characteristic.
 - Bullying or systematic harassment.
 - Unwelcome sexual advances.
 - Incitement to any of these.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 3ab255e..c9555fd 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -24,36 +24,14 @@ that are particularly suitable for new contributors to get familiar with the pro
 
 ## 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 multi-line SQL statements in a YAML file is much friendlier than editing
-escaped SQL in a JSON file.
-
-The `./scripts/yaml2mml.py` script is provided to convert YAML to JSON, and
-depends on PyYAML, available through `pip install pyyaml` or packaged on Ubuntu
-as `python-yaml`.
-
-[Kosmtik](https://github.com/kosmtik/kosmtik) can directly load the project from
-the YAML file with `node index.js serve path/to/openstreetmap-carto/project.yaml`,
-and the JSON file just needs updating before committing.
-
-[TileMill](https://github.com/mapbox/tilemill) and Mapbox `carto` [do not directly support YAML](https://github.com/mapbox/carto/issues/401),
-so make edits to the YAML file then run the preprocessing step of
-`./scripts/yaml2mml.py && touch project.mml` to
-update the file and force TileMill to reload it. You shouldn't use the text editor
-built-in to TileMill, it doesn't work with the number of .mss files in the style.
-Instead, hide the right pane and use an external text editor.
-
-Before committing changes, run `./scripts/yaml2mml.py`
-to update the JSON MML file and `git add project.mml`
-
-When committing changes, add both the `project.yaml` and `project.mml` files to
-the commit with `./scripts/yaml2mml.py && 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, while at the same time the
-styles work with TileMill and carto out-of-the-box without needing to run the
-`yaml2mml` script.
+OpenStreetMap Carto uses a YAML file for defining layers, because it [works much
+better for big projects](https://github.com/gravitystorm/openstreetmap-carto/issues/711).
+This requires CartoCSS 0.16.0 or later. If you need JSON MML, you can generate it
+with `python -c 'import sys, yaml, json; json.dump(yaml.safe_load(sys.stdin), sys.stdout)' < project.mml > project.json`
+or the equivalent in a different language.
+
+[Kosmtik](https://github.com/kosmtik/kosmtik) and CartoCSS can directly load the project from
+the YAML file with `node index.js serve path/to/openstreetmap-carto/project.mml`
 
 ## CartoCSS Style Guidelines
 
@@ -144,6 +122,7 @@ Because SQL within JSON or YAML will not generally be syntax highlighted, indent
 * Icons must use SVG fills only, not SVG strokes or any feature Mapnik does not support.
 * Use no color for the icon's fill if the icon is monochromatic. This allows the color to be set in the MSS.
 * Use a common canvas size, which is usually 14x14 px.
+* Convert shapes and other components to paths and merge them into a compound path.
 * Draw a simple siloutte of the subject with an "on the shelf" perspective.
 * Align vectors to the pixel grid.
 * Make a clean design, so reduced complexity where possible.
diff --git a/INSTALL.md b/INSTALL.md
index bd36cf9..9077eec 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -21,13 +21,14 @@ psql -d gis -f indexes.sql
 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.
+To download the shapefiles you can run the following script. No further steps should be needed as the data has been processed and placed in the requisite directories.
 
 ```
-./get-shapefiles.sh
+scripts/get-shapefiles.py
 ```
 
+This script generates and populates the *data* directory with all needed shapefiles, including indexing them through *shapeindex*.
+
 ## Manual download
 
 You can also download them manually at the following paths:
@@ -64,8 +65,6 @@ DejaVu is packaged as `fonts-dejavu-core`.
 
 For proper rendering of non-latin scripts, particularly those with complicated diacritics and tone marks the requirements are
 
-* Mapnik 3
-
 * FreeType 2.6.2 or later for CJK characters
 
 * A recent enough version of Noto with coverage for the scripts needed.
@@ -73,13 +72,16 @@ For proper rendering of non-latin scripts, particularly those with complicated d
 ## Dependencies
 
 For development, a style design studio is needed.
-* [Kosmtik](https://github.com/kosmtik/kosmtik) - Kosmtik can be launched with `node index.js serve path/to/openstreetmap-carto/project.yaml`
-* [TileMill](http://mapbox.com/tilemill) - This is a TileMill project you can copy (or symlink) directly into your Mapbox/project directory
+* [Kosmtik](https://github.com/kosmtik/kosmtik) - Kosmtik can be launched with `node index.js serve path/to/openstreetmap-carto/project.mml`
+
+[TileMill](http://mapbox.com/tilemill) is not officially supported, but you may be able to use a recent TileMill version by copying or simlinking the project directly into your Mapbox/project directory.
+
+For deployment, CartoCSS and Mapnik are required.
 
-For deployment, `carto` and Mapnik are required.
+* [CartoCSS](https://github.com/mapbox/carto) >= 0.16.0 (we're using YAML)
+* [Mapnik](https://github.com/mapnik/mapnik/wiki/Mapnik-Installation) >= 3.0
 
-* [carto](https://github.com/mapbox/carto) >= 0.9.5 (we're using instances with cascading rules and min/max zoom properties)
-* [mapnik](https://github.com/mapnik/mapnik/wiki/Mapnik-Installation) >= 2.1.0. Mapnik 3.0 is supported, but not required.
+Remember to run CartoCSS with proper API version to avoid errors (at least 3.0.0: `carto -a "3.0.0"`).
 
 ---
 
@@ -96,5 +98,4 @@ For both development and deployment, a database and some utilities are required
 Some colours, SVGs and other files are generated with helper scripts. Not all users will need these dependencies
 
 * Python and Ruby to run helper scripts
-* [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`)
 * [Color Math](https://github.com/gtaylor/python-colormath) and [numpy](http://www.numpy.org/) if running generate_road_colors.py helper script (may be obtained with `pip install colormath numpy`)
diff --git a/README.md b/README.md
index 790f911..7b63a21 100644
--- a/README.md
+++ b/README.md
@@ -5,9 +5,8 @@
 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 [Kosmtik](https://github.com/kosmtik/kosmtik),
-[TileMill](http://www.mapbox.com/tilemill/) and also with the command-line
-[CartoCSS](https://github.com/mapbox/carto) processor.
+to be easily customised. They work with [Kosmtik](https://github.com/kosmtik/kosmtik)
+ 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://github.com/openstreetmap/mapnik-stylesheets).
@@ -45,12 +44,17 @@ cartographic project you can expect the following:
 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.
 
-## Current work (v2.x)
+## Mapnik 2 work (v2.x)
 
 The v2.x series initially focused 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, as well as removing 'old-skool'
-tagging methods that are now rarely used.
+tagging methods that are now rarely used. It then started adding new features.
+
+
+## Current work (v3.x)
+The v3.x series was triggered by an update to the required Mapnik and CartoCSS
+versions.
 
 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
@@ -63,19 +67,19 @@ that need some cartographic judgement.
 [issues]: https://github.com/gravitystorm/openstreetmap-carto/issues
 [cleverness]: https://github.com/openstreetmap/mapnik-stylesheets/blob/master/inc/settings.xml.inc.template#L16
 
-## Database schema change (v3.x)
+## Database schema change (4.x)
 
-The v3.x series will include [osm2pgsql lua transforms](https://github.com/openstreetmap/osm2pgsql/blob/master/docs/lua.md)
+The v4.x series will include [osm2pgsql lua transforms](https://github.com/openstreetmap/osm2pgsql/blob/master/docs/lua.md)
 and a hstore column with all other tags, allowing use of more OpenStreetMap data.
 Work is being done in the [lua branch](https://github.com/gravitystorm/openstreetmap-carto/tree/lua)
 and issues have their own [tag](https://github.com/gravitystorm/openstreetmap-carto/issues?q=is%3Aopen+is%3Aissue+label%3Alua).
 
 Initial releases will not make use of the new features, maintaining compatibility
-with v2.x and v2.x releases will continue with backports, allowing the style to be
+with v3.x and v3.x releases will continue with backports, allowing the style to be
 rendered from either a new database or an old one.
 
 When sufficient time has passed for users to reload their databases, new features
-can be used and 2.x compatibility will not be maintained.
+can be used and 3.x compatibility will not be maintained.
 
 # Alternatives
 
diff --git a/amenity-points.mss b/amenity-points.mss
index 348fab9..4979964 100644
--- a/amenity-points.mss
+++ b/amenity-points.mss
@@ -29,8 +29,12 @@
     point-placement: interior;
   }
 
+  [feature = 'tourism_wilderness_hut'][zoom >= 13],
   [feature = 'amenity_shelter'][zoom >= 16] {
     marker-file: url('symbols/shelter.svg');
+    [feature = 'tourism_wilderness_hut'] {
+      marker-file: url('symbols/wilderness_hut.svg');
+    }
     marker-fill: @transportation-icon;
     marker-placement: interior;
     marker-clip: false;
@@ -1741,6 +1745,7 @@
   [feature = 'tourism_hostel'][zoom >= 17],
   [feature = 'tourism_chalet'][zoom >= 17],
   [feature = 'tourism_guest_house'][zoom >= 17],
+  [feature = 'tourism_wilderness_hut'][zoom >= 14],
   [feature = 'tourism_camp_site'][zoom >= 17] {
     text-name: "[name]";
     text-size: @standard-text-size;
@@ -2257,4 +2262,3 @@
     }
   }
 }
-
diff --git a/get-shapefiles.sh b/get-shapefiles.sh
deleted file mode 100755
index b6fe4cb..0000000
--- a/get-shapefiles.sh
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/bin/sh
-set -e -u
-
-UNZIP_OPTS=-qqun
-
-# check essential applications
-exists()
-{
-  command -v "$1" >/dev/null 2>&1
-}
-
-for application in curl tar unzip; do
-  if exists $application; then
-    echo $application 'detected...'
-  else
-    echo 'ERROR:' $application 'not detected, you need to install it first!'
-    exit 1
-  fi
-done
-
-# create and populate data dir
-mkdir -p data/
-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/land-polygons-split-3857
-
-# world_boundaries
-echo "downloading world_boundaries..."
-curl -z "data/world_boundaries-spherical.tgz" -L -o "data/world_boundaries-spherical.tgz" "http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz"
-echo "expanding world_boundaries..."
-tar -xzf data/world_boundaries-spherical.tgz -C data/
-
-# simplified-land-polygons-complete-3857
-echo "downloading simplified-land-polygons-complete-3857..."
-curl -z "data/simplified-land-polygons-complete-3857.zip" -L -o "data/simplified-land-polygons-complete-3857.zip" "http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip"
-echo "simplified-land-polygons-complete-3857..."
-unzip $UNZIP_OPTS data/simplified-land-polygons-complete-3857.zip \
-  simplified-land-polygons-complete-3857/simplified_land_polygons.shp \
-  simplified-land-polygons-complete-3857/simplified_land_polygons.shx \
-  simplified-land-polygons-complete-3857/simplified_land_polygons.prj \
-  simplified-land-polygons-complete-3857/simplified_land_polygons.dbf \
-  simplified-land-polygons-complete-3857/simplified_land_polygons.cpg \
-  -d data/
-
-# ne_110m_admin_0_boundary_lines_land
-echo "downloading ne_110m_admin_0_boundary_lines_land..."
-curl -z data/ne_110m_admin_0_boundary_lines_land.zip -L -o data/ne_110m_admin_0_boundary_lines_land.zip http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip
-echo "expanding ne_110m_admin_0_boundary_lines_land..."
-unzip $UNZIP_OPTS data/ne_110m_admin_0_boundary_lines_land.zip \
-  ne_110m_admin_0_boundary_lines_land.shp \
-  ne_110m_admin_0_boundary_lines_land.shx \
-  ne_110m_admin_0_boundary_lines_land.prj \
-  ne_110m_admin_0_boundary_lines_land.dbf \
-  -d data/ne_110m_admin_0_boundary_lines_land/
-
-# land-polygons-split-3857
-echo "downloading land-polygons-split-3857..."
-curl -z "data/land-polygons-split-3857.zip" -L -o "data/land-polygons-split-3857.zip" "http://data.openstreetmapdata.com/land-polygons-split-3857.zip"
-echo "expanding land-polygons-split-3857..."
-unzip $UNZIP_OPTS data/land-polygons-split-3857.zip \
-  land-polygons-split-3857/land_polygons.shp \
-  land-polygons-split-3857/land_polygons.shx \
-  land-polygons-split-3857/land_polygons.prj \
-  land-polygons-split-3857/land_polygons.dbf \
-  land-polygons-split-3857/land_polygons.cpg \
-  -d data/
-
-# antarctica-icesheet-polygons-3857
-echo "downloading antarctica-icesheet-polygons-3857..."
-curl -z "data/antarctica-icesheet-polygons-3857.zip" -L -o "data/antarctica-icesheet-polygons-3857.zip" "http://data.openstreetmapdata.com/antarctica-icesheet-polygons-3857.zip"
-echo "expanding antarctica-icesheet-polygons-3857..."
-unzip $UNZIP_OPTS data/antarctica-icesheet-polygons-3857.zip \
-  antarctica-icesheet-polygons-3857/icesheet_polygons.shp \
-  antarctica-icesheet-polygons-3857/icesheet_polygons.shx \
-  antarctica-icesheet-polygons-3857/icesheet_polygons.prj \
-  antarctica-icesheet-polygons-3857/icesheet_polygons.dbf \
-  -d data/
-
-# antarctica-icesheet-outlines-3857
-echo "downloading antarctica-icesheet-outlines-3857..."
-curl -z "data/antarctica-icesheet-outlines-3857.zip" -L -o "data/antarctica-icesheet-outlines-3857.zip" "http://data.openstreetmapdata.com/antarctica-icesheet-outlines-3857.zip"
-echo "expanding antarctica-icesheet-outlines-3857..."
-unzip $UNZIP_OPTS data/antarctica-icesheet-outlines-3857.zip \
-  antarctica-icesheet-outlines-3857/icesheet_outlines.shp \
-  antarctica-icesheet-outlines-3857/icesheet_outlines.shx \
-  antarctica-icesheet-outlines-3857/icesheet_outlines.prj \
-  antarctica-icesheet-outlines-3857/icesheet_outlines.dbf \
-  -d data/
-
-#index
-echo "indexing shapefiles"
-shapeindex --shape_files \
-data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp \
-data/land-polygons-split-3857/land_polygons.shp \
-data/antarctica-icesheet-polygons-3857/icesheet_polygons.shp \
-data/antarctica-icesheet-outlines-3857/icesheet_outlines.shp \
-data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp
-
-#finish
-echo "...done!"
diff --git a/landcover.mss b/landcover.mss
index e69a04c..fcba4ed 100644
--- a/landcover.mss
+++ b/landcover.mss
@@ -97,8 +97,10 @@
   [feature = 'tourism_picnic_site'] {
     [zoom >= 10] {
       polygon-fill: @campsite;
-      line-color: saturate(darken(@campsite, 60%), 30%);
-      line-width: 0.3;
+      [zoom >= 13] {
+        line-color: saturate(darken(@campsite, 60%), 30%);
+        line-width: 0.3;
+      }
       [way_pixels >= 4]  { polygon-gamma: 0.75; }
       [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
@@ -107,8 +109,10 @@
   [feature = 'landuse_quarry'][zoom >= 10] {
     polygon-fill: @quarry;
     polygon-pattern-file: url('symbols/quarry.png');
-    line-width: 0.5;
-    line-color: grey;
+    [zoom >= 13] {
+      line-width: 0.5;
+      line-color: grey;
+    }
     [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
     [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
   }
diff --git a/project.mml b/project.mml
index f5b2feb..77c3179 100644
--- a/project.mml
+++ b/project.mml
@@ -1,2112 +1,2547 @@
-{
-  "interactivity": false,
-  "Layer": [
-    {
-      "name": "world",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "world",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "type": "shape",
-        "file": "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "maxzoom": 9
-      },
-      "advanced": {}
-    },
-    {
-      "name": "coast-poly",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "coast-poly",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "type": "shape",
-        "file": "data/land-polygons-split-3857/land_polygons.shp"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 10
-      },
-      "advanced": {}
-    },
-    {
-      "name": "builtup",
-      "srs-name": "mercator",
-      "geometry": "polygon",
-      "class": "",
-      "id": "builtup",
-      "srs": "+proj=merc +datum=WGS84 +over",
-      "Datasource": {
-        "type": "shape",
-        "file": "data/world_boundaries/builtup_area.shp"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "maxzoom": 9,
-        "minzoom": 8
-      },
-      "advanced": {}
-    },
-    {
-      "name": "necountries",
-      "srs-name": "WGS84",
-      "geometry": "linestring",
-      "class": "",
-      "id": "necountries",
-      "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
-      "Datasource": {
-        "type": "shape",
-        "file": "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "maxzoom": 3,
-        "minzoom": 1
-      },
-      "advanced": {}
-    },
-    {
-      "name": "landcover-low-zoom",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "landcover-low-zoom",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, name, way_pixels,\n    COALESCE(wetland, landuse, \"natural\") AS feature\n  FROM (SELECT\n      way, COALESCE(name, '') AS name,\n      ('landuse_' || (CASE WHEN landuse IN ('forest', 'military') THEN landuse ELSE NULL END)) AS landuse,\n      ('natural_' || (CASE WHEN \"natural\" IN ('wood', 'sand', 'scree', 'shingle', 'bare_rock') THEN \"natural\" ELSE NULL END)) AS \"natural\",\n      ('wetland_' || (CASE WHEN \"natural\" IN ('wetland', 'mud') THEN [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "maxzoom": 9,
-        "minzoom": 7
-      },
-      "advanced": {}
-    },
-    {
-      "name": "landcover",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "landcover",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, name, religion, way_pixels,\n    COALESCE(aeroway, amenity, wetland, power, landuse, leisure, military, \"natural\", tourism, highway, railway) AS feature\n  FROM (SELECT\n      way, COALESCE(name, '') AS name,\n      ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway ELSE NULL END)) AS aeroway,\n      ('amenity_' || (CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', \n    [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 10
-      },
-      "advanced": {}
-    },
-    {
-      "name": "landcover-line",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "landcover-line",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way\n  FROM planet_osm_line\n  WHERE man_made = 'cutline'\n) AS landcover_line",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 14
-      },
-      "advanced": {}
-    },
-    {
-      "name": "water-lines-casing",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "water-lines-casing",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, waterway, intermittent,\n    CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel\n  FROM planet_osm_line\n  WHERE waterway IN ('stream', 'drain', 'ditch')\n) AS water_lines_casing",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "water-lines-low-zoom",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "water-lines-low-zoom",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    waterway,\n    intermittent\n  FROM planet_osm_line\n  WHERE waterway = 'river'\n) AS water_lines_low_zoom",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "maxzoom": 11,
-        "minzoom": 8
-      },
-      "advanced": {}
-    },
-    {
-      "name": "icesheet-poly",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "icesheet-poly",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "type": "shape",
-        "file": "data/antarctica-icesheet-polygons-3857/icesheet_polygons.shp"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 4
-      },
-      "advanced": {}
-    },
-    {
-      "name": "water-areas",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "water-areas",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    \"natural\",\n    waterway,\n    landuse,\n    name,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE\n    (waterway IN ('dock', 'riverbank', 'canal')\n      OR landuse IN ('reservoir', 'basin')\n      OR \"natural\" IN ('water', 'glacier'))\n    AND building IS NULL\n    AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real\n  ORDER BY z_order, way_area DESC\n) AS water_areas",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 4
-      },
-      "advanced": {}
-    },
-    {
-      "name": "landcover-area-symbols",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "landcover-area-symbols",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, surface, \n    COALESCE(CASE WHEN landuse = 'forest' THEN 'wood' ELSE NULL END, \"natural\") AS \"natural\",\n    CASE WHEN \"natural\" IN ('marsh', 'mud') \n        THEN \"natural\" \n        ELSE CASE WHEN (\"natural\" = 'wetland' AND wetland IS NULL) \n          THEN 'wetland' \n          ELSE CASE WHEN (\"natural\" = 'wetland')\n            THEN wetland\n            ELSE NULL\n            END \n        END\n      END AS int_wetland\n  FROM planet_o [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 10
-      },
-      "advanced": {}
-    },
-    {
-      "name": "icesheet-outlines",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "icesheet-outlines",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "type": "shape",
-        "file": "data/antarctica-icesheet-outlines-3857/icesheet_outlines.shp"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 4
-      },
-      "advanced": {}
-    },
-    {
-      "name": "water-lines",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "water-lines",
-      "id": "water-lines",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, waterway, name, intermittent,\n    CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel,\n    'no' AS bridge\n  FROM planet_osm_line\n  WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')\n    AND (bridge IS NULL OR bridge NOT IN ('yes', 'aqueduct'))\n  ORDER BY z_order\n) AS water_lines",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 12
-      },
-      "advanced": {}
-    },
-    {
-      "name": "water-barriers-line",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "water-barriers-line",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    waterway,\n    name\n  FROM planet_osm_line\n  WHERE waterway IN ('dam', 'weir', 'lock_gate')\n) AS water_barriers_line",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "water-barriers-poly",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "water-barriers-poly",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    waterway,\n    name\n  FROM planet_osm_polygon\n  WHERE waterway IN ('dam', 'weir', 'lock_gate')\n) AS water_barriers_poly",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "marinas-area",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "marinas-area",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way\n  FROM planet_osm_polygon\n  WHERE leisure = 'marina'\n) AS marinas_area",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 14
-      },
-      "advanced": {}
-    },
-    {
-      "name": "piers-poly",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "piers-poly",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, man_made\n  FROM planet_osm_polygon\n  WHERE man_made IN ('pier', 'breakwater', 'groyne')\n) AS piers_poly",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 12
-      },
-      "advanced": {}
-    },
-    {
-      "name": "piers-line",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "piers-line",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, man_made\n  FROM planet_osm_line\n  WHERE man_made IN ('pier', 'breakwater', 'groyne')\n) AS piers_line",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 12
-      },
-      "advanced": {}
-    },
-    {
-      "name": "water-barriers-point",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "",
-      "id": "water-barriers-point",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, waterway\n  FROM planet_osm_point\n  WHERE waterway IN ('dam', 'weir', 'lock_gate')\n) AS water_barriers_points",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 17
-      },
-      "advanced": {}
-    },
-    {
-      "name": "bridge",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "bridge",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    man_made,\n    name\n  FROM planet_osm_polygon\n  WHERE man_made = 'bridge'\n) AS bridge",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 12
-      },
-      "advanced": {}
-    },
-    {
-      "name": "buildings",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "buildings",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    building\n  FROM planet_osm_polygon\n  WHERE building IS NOT NULL\n    AND building != 'no'\n    AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real\n  ORDER BY z_order, way_area DESC\n) AS buildings",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "buildings-major",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "buildings-major",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    building,\n    amenity,\n    aeroway\n  FROM planet_osm_polygon\n  WHERE building IS NOT NULL\n    AND building != 'no'\n    AND (aeroway = 'terminal' OR amenity = 'place_of_worship' OR building = 'train_station')\n    AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real\n  ORDER BY z_order, way_area DESC)\nAS buildings_major",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "tunnels",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "tunnels-fill tunnels-casing access",
-      "id": "tunnels",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,\n    horse,\n    foot,\n    bicycle,\n    tracktype,\n    int_surface,\n    access,\n    construction,\n    service,\n    link,\n    layernotnull\n  FROM ( -- subselect that contains both roads and rail/aero\n    SELECT\n        way,\n        ('highway_' || highway) AS feature, --only motorway to tertiary links are acc [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "group-by": "layernotnull",
-        "minzoom": 9
-      },
-      "advanced": {}
-    },
-    {
-      "name": "landuse-overlay",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "landuse-overlay",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    landuse,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE landuse = 'military'\n    AND building IS NULL\n) AS landuse_overlay",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 7
-      },
-      "advanced": {}
-    },
-    {
-      "name": "line-barriers",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "barriers",
-      "id": "line-barriers",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, COALESCE(historic, barrier) AS feature\n  FROM (SELECT way,\n    ('barrier_' || (CASE WHEN barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail',\n          'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall') THEN barrier ELSE NULL END)) AS barrier,\n    ('historic_' || (CASE WHEN historic = 'citywalls' THEN historic ELSE NULL END)) AS historic\n    FROM planet_osm_line\n    WHERE barrier IN ('chain', 'city_wall', 'embankmen [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 14
-      },
-      "advanced": {}
-    },
-    {
-      "name": "cliffs",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "cliffs",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, \"natural\", man_made\n  FROM planet_osm_line\n  WHERE \"natural\" = 'cliff' OR man_made = 'embankment'\n) AS cliffs",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "area-barriers",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "barriers",
-      "id": "area-barriers",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, barrier AS feature\n  FROM (SELECT way,\n    ('barrier_' || barrier) AS barrier\n    FROM planet_osm_polygon\n    WHERE barrier IS NOT NULL\n  ) AS features\n) AS area_barriers",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 16
-      },
-      "advanced": {}
-    },
-    {
-      "name": "ferry-routes",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "ferry-routes",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way\n  FROM planet_osm_line\n  WHERE route = 'ferry'\n) AS ferry_routes",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 7
-      },
-      "advanced": {}
-    },
-    {
-      "name": "turning-circle-casing",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "",
-      "id": "turning-circle-casing",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT DISTINCT ON (p.way)\n    p.way AS way, l.highway AS int_tc_type,\n    CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway')\n      THEN 'INT-minor'::text\n      ELSE 'INT-normal'::text\n    END AS int_tc_service\n  FROM planet_osm_point p\n    JOIN planet_osm_line l ON ST_DWithin(p.way, l.way, 0.1) -- Assumes Mercator\n    JOIN (VALUES\n      ('tertiary', 1),\n      ('unclassified', 2),\n      ('residential', 3),\n      ('living_street', 4),\n    [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 15
-      },
-      "advanced": {}
-    },
-    {
-      "name": "highway-area-casing",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "highway-area-casing",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    COALESCE((\n      'highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'track', 'path', 'platform') THEN highway ELSE NULL END)),\n      ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END))\n    ) AS feature\n  FROM planet_osm_polygon\n  WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform')\n    OR ra [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 14
-      },
-      "advanced": {}
-    },
-    {
-      "name": "roads-casing",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "roads-casing",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,\n    horse,\n    foot,\n    bicycle,\n    tracktype,\n    int_surface,\n    access,\n    construction,\n    service,\n    link,\n    layernotnull\n  FROM ( -- subselect that contains both roads and rail/aero\n    SELECT\n        way,\n        ('highway_' || highway) AS feature, --only motorway to tertiary links are acc [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "id": "roads-casing",
-      "properties": {
-        "minzoom": 9
-      },
-      "advanced": {}
-    },
-    {
-      "name": "highway-area-fill",
-      "srs-name": "900913",
-      "class": "",
-      "id": "highway-area-fill",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    COALESCE(\n      ('highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', \n                                            'track', 'path', 'platform', 'services') THEN highway ELSE NULL END)),\n      ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END)),\n      (('aeroway_' || CASE WHEN aeroway IN ('runway', 'taxiway', 'helipad') THEN aeroway ELSE N [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 14
-      },
-      "advanced": {}
-    },
-    {
-      "name": "roads-fill",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "roads-fill access",
-      "id": "roads-fill",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,\n    horse,\n    foot,\n    bicycle,\n    tracktype,\n    int_surface,\n    access,\n    construction,\n    service,\n    link,\n    layernotnull\n  FROM ( -- begin \"features\" subselect that contains both roads and rail/aero\n    SELECT\n        way,\n        ('highway_' || highway) AS feature, -- only motorway to te [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 10
-      },
-      "advanced": {}
-    },
-    {
-      "name": "turning-circle-fill",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "",
-      "id": "turning-circle-fill",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    DISTINCT on (p.way)\n    p.way AS way, l.highway AS int_tc_type,\n    CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text\n      ELSE 'INT-normal'::text END AS int_tc_service\n  FROM planet_osm_point p\n    JOIN planet_osm_line l\n      ON ST_DWithin(p.way, l.way, 0.1)\n    JOIN (VALUES\n      ('tertiary', 1),\n      ('unclassified', 2),\n      ('residential', 3),\n      ('living_street', 4),\n      ('service', 5),\n [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 15
-      },
-      "advanced": {}
-    },
-    {
-      "name": "aerialways",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "aerialways",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    aerialway\n  FROM planet_osm_line\n  WHERE aerialway IS NOT NULL\n) AS aerialways",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 12
-      },
-      "advanced": {}
-    },
-    {
-      "name": "roads-low-zoom",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "roads-low-zoom",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    COALESCE(\n      ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway end)),\n      ('railway_' || (CASE WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' \n                           WHEN railway IN ('rail', 'tram', 'light_rail', 'funicular', 'narrow_gauge') THEN railway ELSE NULL END))\n    ) AS feature,\n    CASE WHEN tunnel = [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "maxzoom": 9,
-        "minzoom": 5
-      },
-      "advanced": {}
-    },
-    {
-      "name": "waterway-bridges",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "water-lines",
-      "id": "waterway-bridges",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    waterway,\n    name,\n    intermittent,\n    CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel,\n    'yes' AS bridge\n  FROM planet_osm_line\n  WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')\n    AND bridge IN ('yes', 'aqueduct')\n  ORDER BY z_order\n) AS waterway_bridges",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 15
-      },
-      "advanced": {}
-    },
-    {
-      "name": "bridges",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "bridges-fill bridges-casing access",
-      "id": "bridges",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,\n    horse,\n    foot,\n    bicycle,\n    tracktype,\n    int_surface,\n    access,\n    construction,\n    service,\n    link,\n    layernotnull\n  FROM ( -- subselect that contains both roads and rail/aero\n    SELECT\n        way,\n        ('highway_' || highway) AS feature, --only motorway to tertiary links are acc [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "group-by": "layernotnull",
-        "minzoom": 9
-      },
-      "advanced": {}
-    },
-    {
-      "name": "guideways",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "guideways",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way\n  FROM planet_osm_line\n  WHERE highway = 'bus_guideway'\n) AS guideways",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "admin-low-zoom",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    admin_level\n  FROM planet_osm_roads\n  WHERE boundary = 'administrative'\n    AND admin_level IN ('0', '1', '2', '3', '4')\n    AND osm_id < 0\n  ORDER BY admin_level DESC\n) AS admin_low_zoom",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "id": "admin-low-zoom",
-      "properties": {
-        "maxzoom": 10,
-        "minzoom": 4
-      },
-      "advanced": {}
-    },
-    {
-      "name": "admin-mid-zoom",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "admin-mid-zoom",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    admin_level\n  FROM planet_osm_roads\n  WHERE boundary = 'administrative'\n    AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8')\n    AND osm_id < 0\n  ORDER BY admin_level DESC\n) AS admin_mid_zoom",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "maxzoom": 12,
-        "minzoom": 11
-      },
-      "advanced": {}
-    },
-    {
-      "name": "admin-high-zoom",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "admin-high-zoom",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    admin_level\n  FROM planet_osm_roads\n  WHERE boundary = 'administrative'\n    AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10')\n    AND osm_id < 0\n  ORDER BY admin_level::integer DESC -- With 10 as a valid value, we need to do a numeric ordering, not a text ordering\n) AS admin_high_zoom",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "power-minorline",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "power-minorline",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way\n  FROM planet_osm_line\n  WHERE power = 'minor_line'\n) AS power_minorline",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 16
-      },
-      "advanced": {}
-    },
-    {
-      "name": "power-line",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "power-line",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way\n  FROM planet_osm_line\n  WHERE power = 'line'\n) AS power_line",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 14
-      },
-      "advanced": {}
-    },
-    {
-      "name": "nature-reserve-boundaries",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "nature-reserve-boundaries",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    name,\n    boundary,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE (boundary = 'national_park' OR leisure = 'nature_reserve')\n    AND building IS NULL\n    AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real\n) AS national_park_boundaries",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 7
-      },
-      "advanced": {}
-    },
-    {
-      "name": "tourism-boundary",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "tourism-boundary",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    name,\n    tourism\n  FROM planet_osm_polygon\n  WHERE tourism = 'theme_park'\n    OR tourism = 'zoo'\n) AS tourism_boundary",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 10
-      },
-      "advanced": {}
-    },
-    {
-      "name": "trees",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "trees",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way, \"natural\"\n  FROM planet_osm_point\n  WHERE \"natural\" = 'tree'\nUNION ALL\nSELECT\n    way, \"natural\"\n  FROM planet_osm_line\n  WHERE \"natural\" = 'tree_row'\n) AS trees",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 16
-      },
-      "advanced": {}
-    },
-    {
-      "name": "country-names",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "country",
-      "id": "country-names",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    name\n  FROM planet_osm_polygon\n  WHERE boundary = 'administrative'\n    AND admin_level = '2'\n    AND name IS NOT NULL\n    AND way_area > 100*!pixel_width!::real*!pixel_height!::real\n  ORDER BY way_area DESC\n) AS country_names",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 2
-      }
-    },
-    {
-      "name": "capital-names",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "",
-      "id": "capital-names",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    name,\n    CASE\n      WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER ELSE 0\n    END as population,\n    round(ascii(md5(osm_id::text)) / 55) AS dir -- base direction factor on geometry to be consistent across metatiles\n  FROM planet_osm_point\n  WHERE place IN ('city', 'town')\n    AND name IS NOT NULL\n    AND capital = 'yes'\n    AND admin_level = '2'\n  ORDER BY population DESC\n) AS capital_names",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "maxzoom": 15,
-        "minzoom": 3
-      },
-      "advanced": {}
-    },
-    {
-      "name": "state-names",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "state",
-      "id": "state-names",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    name,\n    ref\n  FROM planet_osm_polygon\n  WHERE boundary = 'administrative'\n    AND admin_level = '4'\n    AND name IS NOT NULL\n    AND way_area > 100*!pixel_width!::real*!pixel_height!::real\n  ORDER BY way_area DESC\n) AS state_names",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 4
-      },
-      "advanced": {}
-    },
-    {
-      "name": "placenames-medium",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "",
-      "id": "placenames-medium",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    name,\n    score,\n    CASE\n      WHEN (place = 'city') THEN 1\n      ELSE 2\n    END as category,\n    round(ascii(md5(osm_id::text)) / 55) AS dir -- base direction factor on geometry to be consistent across metatiles\n  FROM \n    (SELECT\n        osm_id,\n        way,\n        place,\n        name,\n        (\n          (CASE\n            WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER\n            WHEN (place = 'city') THEN 100000 [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "maxzoom": 15,
-        "minzoom": 4
-      },
-      "advanced": {}
-    },
-    {
-      "name": "placenames-small",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "",
-      "id": "placenames-small",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    place,\n    name\n  FROM planet_osm_point\n  WHERE place IN ('suburb', 'village', 'hamlet', 'neighbourhood', 'locality', 'isolated_dwelling', 'farm')\n    AND name IS NOT NULL\n  ORDER BY CASE\n      WHEN place = 'suburb' THEN 3\n      WHEN place = 'village' THEN 4\n      WHEN place = 'hamlet' THEN 5\n      WHEN place = 'neighbourhood' THEN 6\n      WHEN place = 'locality' THEN 7\n      WHEN place = 'isolated_dwelling' THEN 8\n      WHEN place = ' [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 12
-      },
-      "advanced": {}
-    },
-    {
-      "name": "stations",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "stations",
-      "id": "stations",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    name,\n    railway,\n    aerialway,\n    CASE railway \n      WHEN 'station' THEN 1 \n      WHEN 'subway_entrance' THEN 3\n      ELSE 2\n    END\n      AS prio\n  FROM planet_osm_point\n  WHERE railway IN ('station', 'halt', 'tram_stop', 'subway_entrance')\n    OR aerialway = 'station'\n  ORDER BY prio\n) AS stations",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 12
-      },
-      "advanced": {}
-    },
-    {
-      "name": "stations-poly",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "stations",
-      "id": "stations-poly",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    name,\n    railway,\n    aerialway\nFROM planet_osm_polygon\nWHERE railway IN ('station', 'halt', 'tram_stop')\n  OR aerialway = 'station'\n) AS stations_poly",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 12
-      },
-      "advanced": {}
-    },
-    {
-      "name": "amenity-points-poly",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "points",
-      "id": "amenity-points-poly",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', \n                                          'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,\n      'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 10
-      },
-      "advanced": {}
-    },
-    {
-      "name": "amenity-points",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "points",
-      "id": "amenity-points",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', \n                                          'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,\n      'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 10
-      },
-      "advanced": {}
-    },
-    {
-      "name": "power-towers",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "",
-      "id": "power-towers",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way\n  FROM planet_osm_point\n  WHERE power = 'tower'\n) AS power_towers",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 14
-      },
-      "advanced": {}
-    },
-    {
-      "name": "power-poles",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "",
-      "id": "power-poles",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way\n  FROM planet_osm_point\n  WHERE power = 'pole'\n) AS power_poles",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 16
-      },
-      "advanced": {}
-    },
-    {
-      "name": "roads-text-ref-low-zoom",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "roads-text-ref-low-zoom",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    highway,\n    height,\n    width,\n    refs\n  FROM (\n    SELECT\n        way, highway,\n        array_length(refs,1) AS height,\n        (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width,\n        array_to_string(refs, E'\\n') AS refs\n      FROM (\n        SELECT\n            way,\n            highway,\n            string_to_array(ref, ';') AS refs\n        FROM planet_osm_roads\n          WHERE highway IN ('motorway', 'trunk' [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "maxzoom": 12,
-        "minzoom": 10
-      },
-      "advanced": {}
-    },
-    {
-      "name": "junctions",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "",
-      "id": "junctions",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    highway,\n    junction,\n    ref,\n    name\n  FROM planet_osm_point\n  WHERE highway = 'motorway_junction' OR highway = 'traffic_signals' OR junction = 'yes'\n) AS junctions",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 11
-      },
-      "advanced": {}
-    },
-    {
-      "name": "bridge-text",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "bridge-text",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    man_made,\n    name\n  FROM planet_osm_polygon\n  WHERE man_made = 'bridge'\n) AS bridge_text",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 11
-      },
-      "advanced": {}
-    },
-    {
-      "name": "roads-text-ref",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "roads-text-ref",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    highway,\n    height,\n    width,\n    refs\n  FROM (\n    SELECT\n        way, highway,\n        array_length(refs,1) AS height,\n        (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width,\n        array_to_string(refs, E'\\n') AS refs\n      FROM (\n        SELECT\n            way,\n            COALESCE(\n              CASE WHEN highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential')  [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "roads-area-text-name",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "roads-area-text-name",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    highway,\n    name\n  FROM planet_osm_polygon\n  WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 'track', 'path', 'platform')\n    OR railway IN ('platform')\n    AND name IS NOT NULL\n) AS roads_area_text_name",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 15
-      },
-      "advanced": {}
-    },
-    {
-      "name": "roads-text-name",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "directions",
-      "id": "roads-text-name",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END,\n    CASE WHEN (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') THEN 'yes' ELSE 'no' END AS tunnel,\n    CASE WHEN construction IN ('service', 'footway', 'cycleway', 'bridleway', 'path', 'track') THEN 'yes' ELSE 'no' END AS int_construction_minor,\n    name,\n    CASE\n      WHEN oneway IN ('yes', '-1') THEN onewa [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "paths-text-name",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "paths-text-name",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    highway,\n    name\n  FROM planet_osm_line\n  WHERE highway IN ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps')\n    AND name IS NOT NULL\n) AS paths_text_name",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 15
-      },
-      "advanced": {}
-    },
-    {
-      "name": "text-poly-low-zoom",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "text-low-zoom",
-      "id": "text-poly-low-zoom",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    COALESCE(\n      'landuse_' || CASE WHEN landuse IN ('forest', 'military') THEN landuse ELSE NULL END,\n      'natural_' || CASE WHEN \"natural\" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock') THEN \"natural\" ELSE NULL END,\n      'place_' || CASE WHEN place IN ('island') THEN place ELSE NULL END,\n      'boundary_' || CASE WHEN boundary IN ('national [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "maxzoom": 9,
-        "minzoom": 7
-      },
-      "advanced": {}
-    },
-    {
-      "name": "text-poly",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "text",
-      "id": "text-poly",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', \n                                          'theme_park', 'museum', 'zoo', 'information', 'picnic_s [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 10
-      },
-      "advanced": {}
-    },
-    {
-      "name": "text-line",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "text-line",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n  way,\n    NULL as way_pixels,\n    COALESCE('man_made_' || man_made, 'waterway_' || waterway, 'natural_' || \"natural\") AS feature,\n    access,\n    name,\n    operator,\n    ref,\n    NULL AS way_area,\n    CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building\n  FROM planet_osm_line\n  WHERE (man_made IN ('pier', 'breakwater', 'groyne', 'embankment')\n      OR waterway IN ('dam', 'weir')\n      OR \"natural\" IN ('cliff'))\ [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 10
-      },
-      "advanced": {}
-    },
-    {
-      "name": "text-point",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "text",
-      "id": "text-point",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    way_pixels,\n    feature,\n    access,\n    CONCAT(\n        name,\n        CASE WHEN name IS NOT NULL AND elevation IS NOT NULL THEN E'\\n' ELSE NULL END,\n        CASE WHEN elevation IS NOT NULL THEN CONCAT(REPLACE(ROUND(elevation)::TEXT, '-', U&'\\2212'), U&'\\00A0', 'm') ELSE NULL END\n    ) AS name,\n    CASE\n      WHEN \"natural\" IN ('peak', 'volcano', 'saddle') THEN elevation\n      ELSE NULL\n    END AS score,\n    operator,\n    ref,\n  [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 10
-      },
-      "advanced": {}
-    },
-    {
-      "name": "building-text",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "",
-      "id": "building-text",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    name,\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE building IS NOT NULL\n    AND building NOT IN ('no')\n    AND name IS NOT NULL\n  ORDER BY way_area DESC\n) AS building_text",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 14
-      },
-      "advanced": {}
-    },
-    {
-      "name": "interpolation",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "interpolation",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way\n  FROM planet_osm_line\n  WHERE \"addr:interpolation\" IS NOT NULL\n) AS interpolation",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 17
-      },
-      "advanced": {}
-    },
-    {
-      "name": "addresses",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "",
-      "id": "addresses",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    \"addr:housenumber\" AS addr_housenumber,\n    \"addr:housename\" AS addr_housename,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE ((\"addr:housenumber\" IS NOT NULL) OR (\"addr:housename\" IS NOT NULL))\n    AND building IS NOT NULL\nUNION ALL\nSELECT\n    way,\n    \"addr:housenumber\" AS addr_housenumber,\n    \"addr:housename\" AS addr_housename,\n    NULL AS way_pixels\n  FR [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 17
-      },
-      "advanced": {}
-    },
-    {
-      "name": "water-lines-text",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "water-lines-text",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    waterway,\n    lock,\n    name,\n    intermittent,\n    CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel\n  FROM planet_osm_line\n  WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')\n    AND (tunnel IS NULL or tunnel != 'culvert')\n    AND name IS NOT NULL\n  ORDER BY z_order\n) AS water_lines_text",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "ferry-routes-text",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "ferry-routes-text",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    name\n  FROM planet_osm_line\n  WHERE route = 'ferry'\n    AND name IS NOT NULL\n) AS ferry_routes_text",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "admin-text",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "admin-text",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    name,\n    admin_level\n  FROM planet_osm_polygon\n  WHERE boundary = 'administrative'\n    AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10')\n    AND name IS NOT NULL\n  ORDER BY admin_level::integer ASC, way_area DESC\n) AS admin_text",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 16
-      },
-      "advanced": {}
-    },
-    {
-      "name": "nature-reserve-text",
-      "srs-name": "900913",
-      "geometry": "linestring",
-      "class": "",
-      "id": "nature-reserve-text",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    name,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE (boundary = 'national_park' OR leisure = 'nature_reserve')\n    AND name IS NOT NULL\n) AS nature_reserve_text",
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 13
-      },
-      "advanced": {}
-    },
-    {
-      "name": "amenity-low-priority",
-      "srs-name": "900913",
-      "geometry": "point",
-      "class": "amenity-low-priority",
-      "id": "amenity-low-priority",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    COALESCE(\n      'highway_' || CASE WHEN highway IN ('mini_roundabout') THEN highway ELSE NULL END,\n      'railway_' || CASE WHEN railway IN ('level_crossing', 'crossing') THEN railway ELSE NULL END,\n      'amenity_' || CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'bench', 'waste_basket') THEN amenity ELSE NULL END,\n      'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END,\n      'man [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 14
-      },
-      "advanced": {}
-    },
-    {
-      "name": "amenity-low-priority-poly",
-      "srs-name": "900913",
-      "geometry": "polygon",
-      "class": "amenity-low-priority",
-      "id": "amenity-low-priority-poly",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "Datasource": {
-        "extent": "-20037508,-20037508,20037508,20037508",
-        "table": "(SELECT\n    way,\n    COALESCE(\n      'amenity_' || CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking') THEN amenity ELSE NULL END,\n      'barrier_' || CASE WHEN barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') THEN barrier ELSE NULL END\n    )  AS feature,\n    access\n  FROM planet_osm_polygon p\n  WHERE amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking')\n     OR barrier IN ('bollard', 'gate', 'lift_gate', 'swing [...]
-        "geometry_field": "way",
-        "type": "postgis",
-        "key_field": "",
-        "dbname": "gis"
-      },
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "properties": {
-        "minzoom": 14
-      },
-      "advanced": {}
-    }
-  ],
-  "scale": 1,
-  "center": [
-    0,
-    0,
-    4
-  ],
-  "format": "png",
-  "_parts": {
-    "extents": {
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "srs-name": "900913"
-    },
-    "osm2pgsql": {
-      "geometry_field": "way",
-      "type": "postgis",
-      "dbname": "gis",
-      "extent": "-20037508,-20037508,20037508,20037508",
-      "key_field": ""
-    },
-    "extents84": {
-      "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
-      "extent": [
-        -180,
-        -85.05112877980659,
-        180,
-        85.05112877980659
-      ],
-      "srs-name": "WGS84"
-    }
-  },
-  "metatile": 2,
-  "bounds": [
-    -180,
-    -85.05112877980659,
-    180,
-    85.05112877980659
-  ],
-  "name": "OpenStreetMap Carto",
-  "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-  "Stylesheet": [
-    "style.mss",
-    "shapefiles.mss",
-    "landcover.mss",
-    "water.mss",
-    "water-features.mss",
-    "road-colors-generated.mss",
-    "roads.mss",
-    "power.mss",
-    "placenames.mss",
-    "buildings.mss",
-    "stations.mss",
-    "amenity-points.mss",
-    "ferry-routes.mss",
-    "aerialways.mss",
-    "admin.mss",
-    "addressing.mss"
-  ],
-  "minzoom": 0,
-  "maxzoom": 22,
-  "description": "A general-purpose OpenStreetMap mapnik style, in CartoCSS"
-}
\ No newline at end of file
+scale: 1
+metatile: 2
+name: "OpenStreetMap Carto"
+description: "A general-purpose OpenStreetMap mapnik style, in CartoCSS"
+bounds: &world
+  - -180
+  - -85.05112877980659
+  - 180
+  - 85.05112877980659
+center:
+  - 0
+  - 0
+  - 4
+format: "png"
+interactivity: false
+minzoom: 0
+maxzoom: 22
+srs: "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
+
+# Various parts to be included later on
+_parts:
+  # Extents are used for tilemill, and don't actually make it to the generated XML
+  extents: &extents
+    extent: *world
+    srs-name: "900913"
+    srs: "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
+  extents84: &extents84
+    extent: *world
+    srs-name: "WGS84"
+    srs: "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
+  osm2pgsql: &osm2pgsql
+    type: "postgis"
+    dbname: "gis"
+    key_field: ""
+    geometry_field: "way"
+    extent: "-20037508,-20037508,20037508,20037508"
+
+Stylesheet:
+  - "style.mss"
+  - "shapefiles.mss"
+  - "landcover.mss"
+  - "water.mss"
+  - "water-features.mss"
+  - "road-colors-generated.mss"
+  - "roads.mss"
+  - "power.mss"
+  - "placenames.mss"
+  - "buildings.mss"
+  - "stations.mss"
+  - "amenity-points.mss"
+  - "ferry-routes.mss"
+  - "aerialways.mss"
+  - "admin.mss"
+  - "addressing.mss"
+Layer:
+  - id: "world"
+    name: "world"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      file: "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp"
+      type: "shape"
+    advanced: {}
+    properties:
+      maxzoom: 9
+  - id: "coast-poly"
+    name: "coast-poly"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      file: "data/land-polygons-split-3857/land_polygons.shp"
+      type: "shape"
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "builtup"
+    name: "builtup"
+    geometry: "polygon"
+    class: ""
+    extent: *world
+    srs-name: "mercator"
+    srs: "+proj=merc +datum=WGS84 +over"
+    Datasource:
+      file: "data/world_boundaries/builtup_area.shp"
+      type: "shape"
+    properties:
+      minzoom: 8
+      maxzoom: 9
+    advanced: {}
+  - id: "necountries"
+    name: "necountries"
+    class: ""
+    geometry: "linestring"
+    <<: *extents84
+    Datasource:
+      file: "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp"
+      type: "shape"
+    properties:
+      minzoom: 1
+      maxzoom: 3
+    advanced: {}
+  - id: "landcover-low-zoom"
+    name: "landcover-low-zoom"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, name, way_pixels,
+            COALESCE(wetland, landuse, "natural") AS feature
+          FROM (SELECT
+              way, COALESCE(name, '') AS name,
+              ('landuse_' || (CASE WHEN landuse IN ('forest', 'military') THEN landuse ELSE NULL END)) AS landuse,
+              ('natural_' || (CASE WHEN "natural" IN ('wood', 'sand', 'scree', 'shingle', 'bare_rock') THEN "natural" ELSE NULL END)) AS "natural",
+              ('wetland_' || (CASE WHEN "natural" IN ('wetland', 'mud') THEN (CASE WHEN "natural" IN ('mud') THEN "natural" ELSE wetland END) ELSE NULL END)) AS wetland,
+              way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+            FROM planet_osm_polygon
+            WHERE (landuse IN ('forest', 'military')
+              OR "natural" IN ('wood', 'wetland', 'mud', 'sand', 'scree', 'shingle', 'bare_rock'))
+              AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
+              AND building IS NULL
+            ORDER BY CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END, way_area DESC
+          ) AS features
+        ) AS landcover_low_zoom
+    properties:
+      minzoom: 7
+      maxzoom: 9
+    advanced: {}
+  - id: "landcover"
+    name: "landcover"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, name, religion, way_pixels,
+            COALESCE(aeroway, amenity, wetland, power, landuse, leisure, military, "natural", tourism, highway, railway) AS feature
+          FROM (SELECT
+              way, COALESCE(name, '') AS name,
+              ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway ELSE NULL END)) AS aeroway,
+              ('amenity_' || (CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', 
+                                                    'hospital', 'kindergarten', 'grave_yard', 'prison', 'place_of_worship', 'clinic') 
+                                                    THEN amenity ELSE NULL END)) AS amenity,
+              ('landuse_' || (CASE WHEN landuse IN ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 
+                                                    'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'greenhouse_horticulture', 
+                                                    'recreation_ground', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 
+                                                    'brownfield', 'landfill', 'construction') THEN landuse ELSE NULL END)) AS landuse,
+              ('leisure_' || (CASE WHEN leisure IN ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 
+                                                    'golf_course', 'miniature_golf', 'picnic_table', 'sports_centre', 'stadium', 'pitch', 
+                                                    'track', 'dog_park') THEN leisure ELSE NULL END)) AS leisure,
+              ('military_' || (CASE WHEN military IN ('danger_area') THEN military ELSE NULL END)) AS military,
+              ('natural_' || (CASE WHEN "natural" IN ('beach', 'shoal', 'heath', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub') THEN "natural" ELSE NULL END)) AS "natural",
+              ('wetland_' || (CASE WHEN "natural" IN ('wetland', 'marsh', 'mud') THEN (CASE WHEN "natural" IN ('marsh', 'mud') THEN "natural" ELSE wetland END) ELSE NULL END)) AS wetland,
+              ('power_' || (CASE WHEN power IN ('station', 'sub_station', 'substation', 'generator') THEN power ELSE NULL END)) AS power,
+              ('tourism_' || (CASE WHEN tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site') THEN tourism ELSE NULL END)) AS tourism,
+              ('highway_' || (CASE WHEN highway IN ('services', 'rest_area') THEN highway ELSE NULL END)) AS highway,
+              ('railway_' || (CASE WHEN railway = 'station' THEN railway ELSE NULL END)) AS railway,
+              CASE WHEN religion IN ('christian', 'jewish') THEN religion ELSE 'INT-generic'::text END AS religion,
+              way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+            FROM planet_osm_polygon
+            WHERE (landuse IS NOT NULL
+              OR leisure IS NOT NULL
+              OR aeroway IN ('apron', 'aerodrome')
+              OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 
+                             'grave_yard', 'place_of_worship', 'prison', 'clinic')
+              OR military IN ('danger_area')
+              OR "natural" IN ('beach', 'shoal', 'heath', 'mud', 'marsh', 'wetland', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub')
+              OR power IN ('station', 'sub_station', 'substation', 'generator')
+              OR tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site')
+              OR highway IN ('services', 'rest_area')
+              OR railway = 'station')
+              AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
+            ORDER BY CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END, way_area DESC
+          ) AS landcover
+        ) AS features
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "landcover-line"
+    name: "landcover-line"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_line
+          WHERE man_made = 'cutline'
+        ) AS landcover_line
+    advanced: {}
+    properties:
+      minzoom: 14
+  - id: "water-lines-casing"
+    name: "water-lines-casing"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, waterway, intermittent,
+            CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel
+          FROM planet_osm_line
+          WHERE waterway IN ('stream', 'drain', 'ditch')
+        ) AS water_lines_casing
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "water-lines-low-zoom"
+    name: "water-lines-low-zoom"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            waterway,
+            intermittent
+          FROM planet_osm_line
+          WHERE waterway = 'river'
+        ) AS water_lines_low_zoom
+    properties:
+      minzoom: 8
+      maxzoom: 11
+    advanced: {}
+  - id: "icesheet-poly"
+    name: "icesheet-poly"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      file: "data/antarctica-icesheet-polygons-3857/icesheet_polygons.shp"
+      type: "shape"
+    properties:
+      minzoom: 4
+    advanced: {}
+  - id: "water-areas"
+    name: "water-areas"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            "natural",
+            waterway,
+            landuse,
+            name,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          WHERE
+            (waterway IN ('dock', 'riverbank', 'canal')
+              OR landuse IN ('reservoir', 'basin')
+              OR "natural" IN ('water', 'glacier'))
+            AND building IS NULL
+            AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
+          ORDER BY z_order, way_area DESC
+        ) AS water_areas
+    properties:
+      minzoom: 4
+    advanced: {}
+  - id: "landcover-area-symbols"
+    name: "landcover-area-symbols"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, surface, 
+            COALESCE(CASE WHEN landuse = 'forest' THEN 'wood' ELSE NULL END, "natural") AS "natural",
+            CASE WHEN "natural" IN ('marsh', 'mud') 
+                THEN "natural" 
+                ELSE CASE WHEN ("natural" = 'wetland' AND wetland IS NULL) 
+                  THEN 'wetland' 
+                  ELSE CASE WHEN ("natural" = 'wetland')
+                    THEN wetland
+                    ELSE NULL
+                    END 
+                END
+              END AS int_wetland
+          FROM planet_osm_polygon
+          WHERE ("natural" IN ('marsh', 'mud', 'wetland', 'wood', 'beach', 'shoal', 'reef', 'scrub') OR landuse = 'forest')
+            AND building IS NULL
+            AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
+          ORDER BY z_order, way_area DESC
+        ) AS landcover_area_symbols
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "icesheet-outlines"
+    name: "icesheet-outlines"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      file: "data/antarctica-icesheet-outlines-3857/icesheet_outlines.shp"
+      type: "shape"
+    properties:
+      minzoom: 4
+    advanced: {}
+  - id: "water-lines"
+    name: "water-lines"
+    class: "water-lines"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, waterway, name, intermittent,
+            CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel,
+            'no' AS bridge
+          FROM planet_osm_line
+          WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')
+            AND (bridge IS NULL OR bridge NOT IN ('yes', 'aqueduct'))
+          ORDER BY z_order
+        ) AS water_lines
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "water-barriers-line"
+    name: "water-barriers-line"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            waterway,
+            name
+          FROM planet_osm_line
+          WHERE waterway IN ('dam', 'weir', 'lock_gate')
+        ) AS water_barriers_line
+    advanced: {}
+    properties:
+      minzoom: 13
+  - id: "water-barriers-poly"
+    name: "water-barriers-poly"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            waterway,
+            name
+          FROM planet_osm_polygon
+          WHERE waterway IN ('dam', 'weir', 'lock_gate')
+        ) AS water_barriers_poly
+    advanced: {}
+    properties:
+      minzoom: 13
+  - id: "marinas-area"
+    name: "marinas-area"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_polygon
+          WHERE leisure = 'marina'
+        ) AS marinas_area
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "piers-poly"
+    name: "piers-poly"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, man_made
+          FROM planet_osm_polygon
+          WHERE man_made IN ('pier', 'breakwater', 'groyne')
+        ) AS piers_poly
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "piers-line"
+    name: "piers-line"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, man_made
+          FROM planet_osm_line
+          WHERE man_made IN ('pier', 'breakwater', 'groyne')
+        ) AS piers_line
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "water-barriers-point"
+    name: "water-barriers-point"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, waterway
+          FROM planet_osm_point
+          WHERE waterway IN ('dam', 'weir', 'lock_gate')
+        ) AS water_barriers_points
+    properties:
+      minzoom: 17
+    advanced: {}
+  - id: "bridge"
+    name: "bridge"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
+            man_made,
+            name
+          FROM planet_osm_polygon
+          WHERE man_made = 'bridge'
+        ) AS bridge
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "buildings"
+    name: "buildings"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            building
+          FROM planet_osm_polygon
+          WHERE building IS NOT NULL
+            AND building != 'no'
+            AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
+          ORDER BY z_order, way_area DESC
+        ) AS buildings
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "buildings-major"
+    name: "buildings-major"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            building,
+            amenity,
+            aeroway
+          FROM planet_osm_polygon
+          WHERE building IS NOT NULL
+            AND building != 'no'
+            AND (aeroway = 'terminal' OR amenity = 'place_of_worship' OR building = 'train_station')
+            AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
+          ORDER BY z_order, way_area DESC)
+        AS buildings_major
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "tunnels"
+    name: "tunnels"
+    class: "tunnels-fill tunnels-casing access"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      # This query is quite large, having to deal with both roads, railways and
+      # runways. To allow for ways that are both railways and roads, a UNION
+      # ALL is present, and to use an ordering different than current osm2pgsql
+      # an order is generated in SQL.
+      table: |-
+        (SELECT
+            way,
+            (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,
+            horse,
+            foot,
+            bicycle,
+            tracktype,
+            int_surface,
+            access,
+            construction,
+            service,
+            link,
+            layernotnull
+          FROM ( -- subselect that contains both roads and rail/aero
+            SELECT
+                way,
+                ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
+                                      'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'
+                  WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
+                                      'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
+                  ELSE NULL
+                END AS int_surface,
+                CASE WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE
+                  WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
+                  ELSE 'INT-normal'::text
+                END AS service,
+                CASE
+                  WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'
+                  ELSE 'no'
+                END AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes')
+                AND highway IS NOT NULL -- end of road select
+            UNION ALL
+            SELECT
+                way,
+                COALESCE(
+                  ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text 
+                                       WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'  
+                                       WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)),
+                  ('aeroway_' || aeroway)
+                ) AS feature,
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                'null',
+                CASE
+                  WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
+                'no' AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes')
+                AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select
+            ) AS features
+          JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.
+              ('railway_rail', 440),
+              ('railway_INT-preserved-ssy', 430),
+              ('railway_INT-spur-siding-yard', 430),
+              ('railway_subway', 420),
+              ('railway_narrow_gauge', 420),
+              ('railway_light_rail', 420),
+              ('railway_preserved', 420),
+              ('railway_funicular', 420),
+              ('railway_monorail', 420),
+              ('railway_miniature', 420),
+              ('railway_turntable', 420),
+              ('railway_tram', 410),
+              ('railway_tram-service', 405),
+              ('railway_disused', 400),
+              ('railway_construction', 400),
+              ('highway_motorway', 380),
+              ('highway_trunk', 370),
+              ('highway_primary', 360),
+              ('highway_secondary', 350),
+              ('highway_tertiary', 340),
+              ('highway_residential', 330),
+              ('highway_unclassified', 330),
+              ('highway_road', 330),
+              ('highway_living_street', 320),
+              ('highway_pedestrian', 310),
+              ('highway_raceway', 300),
+              ('highway_motorway_link', 240),
+              ('highway_trunk_link', 230),
+              ('highway_primary_link', 220),
+              ('highway_secondary_link', 210),
+              ('highway_tertiary_link', 200),
+              ('highway_service', 150),
+              ('highway_track', 110),
+              ('highway_path', 100),
+              ('highway_footway', 100),
+              ('highway_bridleway', 100),
+              ('highway_cycleway', 100),
+              ('highway_steps', 100),
+              ('highway_platform', 90),
+              ('railway_platform', 90),
+              ('aeroway_runway', 60),
+              ('aeroway_taxiway', 50),
+              ('highway_construction', 10)
+            ) AS ordertable (feature, prio)
+            USING (feature)
+          ORDER BY
+            layernotnull,
+            prio,
+            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,
+            CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END
+        ) AS tunnels
+    properties:
+      group-by: "layernotnull"
+      minzoom: 9
+    advanced: {}
+  - id: "landuse-overlay"
+    name: "landuse-overlay"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            landuse,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          WHERE landuse = 'military'
+            AND building IS NULL
+        ) AS landuse_overlay
+    properties:
+      minzoom: 7
+    advanced: {}
+  - id: "line-barriers"
+    name: "line-barriers"
+    class: "barriers"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, COALESCE(historic, barrier) AS feature
+          FROM (SELECT way,
+            ('barrier_' || (CASE WHEN barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail',
+                  'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall') THEN barrier ELSE NULL END)) AS barrier,
+            ('historic_' || (CASE WHEN historic = 'citywalls' THEN historic ELSE NULL END)) AS historic
+            FROM planet_osm_line
+            WHERE barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail',
+                  'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall')
+              OR historic = 'citywalls'
+              AND (waterway IS NULL OR waterway NOT IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi'))
+          ) AS features
+        ) AS line_barriers
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "cliffs"
+    name: "cliffs"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, "natural", man_made
+          FROM planet_osm_line
+          WHERE "natural" = 'cliff' OR man_made = 'embankment'
+        ) AS cliffs
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "area-barriers"
+    name: "area-barriers"
+    class: "barriers"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, barrier AS feature
+          FROM (SELECT way,
+            ('barrier_' || barrier) AS barrier
+            FROM planet_osm_polygon
+            WHERE barrier IS NOT NULL
+          ) AS features
+        ) AS area_barriers
+    properties:
+      minzoom: 16
+    advanced: {}
+  - id: "ferry-routes"
+    name: "ferry-routes"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_line
+          WHERE route = 'ferry'
+        ) AS ferry_routes
+    properties:
+      minzoom: 7
+    advanced: {}
+  - id: "turning-circle-casing"
+    name: "turning-circle-casing"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT DISTINCT ON (p.way)
+            p.way AS way, l.highway AS int_tc_type,
+            CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway')
+              THEN 'INT-minor'::text
+              ELSE 'INT-normal'::text
+            END AS int_tc_service
+          FROM planet_osm_point p
+            JOIN planet_osm_line l ON ST_DWithin(p.way, l.way, 0.1) -- Assumes Mercator
+            JOIN (VALUES
+              ('tertiary', 1),
+              ('unclassified', 2),
+              ('residential', 3),
+              ('living_street', 4),
+              ('service', 5)
+              ) AS v (highway, prio)
+              ON v.highway=l.highway
+          WHERE p.highway = 'turning_circle'
+            OR p.highway = 'turning_loop'
+          ORDER BY p.way, v.prio
+        ) AS turning_circle_casing
+    properties:
+      minzoom: 15
+    advanced: {}
+  - id: "highway-area-casing"
+    name: "highway-area-casing"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            COALESCE((
+              'highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'track', 'path', 'platform') THEN highway ELSE NULL END)),
+              ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END))
+            ) AS feature
+          FROM planet_osm_polygon
+          WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform')
+            OR railway IN ('platform')
+          ORDER BY z_order, way_area DESC
+        ) AS highway_area_casing
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "roads-casing"
+    name: "roads-casing"
+    class: "roads-casing"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,
+            horse,
+            foot,
+            bicycle,
+            tracktype,
+            int_surface,
+            access,
+            construction,
+            service,
+            link,
+            layernotnull
+          FROM ( -- subselect that contains both roads and rail/aero
+            SELECT
+                way,
+                ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
+                                      'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'
+                  WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
+                                      'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
+                  ELSE NULL
+                END AS int_surface,
+                CASE WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE
+                  WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
+                  ELSE 'INT-normal'::text
+                END AS service,
+                CASE
+                  WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'
+                  ELSE 'no'
+                END AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
+                AND (covered IS NULL OR NOT covered = 'yes')
+                AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))
+                AND highway IS NOT NULL -- end of road select
+            UNION ALL
+            SELECT
+                way,
+                COALESCE(
+                  ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text 
+                                       WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'  
+                                       WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)),
+                  ('aeroway_' || aeroway)
+                ) AS feature,
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                'null',
+                CASE
+                  WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
+                'no' AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
+                AND (covered IS NULL OR NOT covered = 'yes')
+                AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))
+                AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select
+            ) AS features
+          JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.
+              ('railway_rail', 440),
+              ('railway_INT-preserved-ssy', 430),
+              ('railway_INT-spur-siding-yard', 430),
+              ('railway_subway', 420),
+              ('railway_narrow_gauge', 420),
+              ('railway_light_rail', 420),
+              ('railway_preserved', 420),
+              ('railway_funicular', 420),
+              ('railway_monorail', 420),
+              ('railway_miniature', 420),
+              ('railway_turntable', 420),
+              ('railway_tram', 410),
+              ('railway_tram-service', 405),
+              ('railway_disused', 400),
+              ('railway_construction', 400),
+              ('highway_motorway', 380),
+              ('highway_trunk', 370),
+              ('highway_primary', 360),
+              ('highway_secondary', 350),
+              ('highway_tertiary', 340),
+              ('highway_residential', 330),
+              ('highway_unclassified', 330),
+              ('highway_road', 330),
+              ('highway_living_street', 320),
+              ('highway_pedestrian', 310),
+              ('highway_raceway', 300),
+              ('highway_motorway_link', 240),
+              ('highway_trunk_link', 230),
+              ('highway_primary_link', 220),
+              ('highway_secondary_link', 210),
+              ('highway_tertiary_link', 200),
+              ('highway_service', 150),
+              ('highway_track', 110),
+              ('highway_path', 100),
+              ('highway_footway', 100),
+              ('highway_bridleway', 100),
+              ('highway_cycleway', 100),
+              ('highway_steps', 100),
+              ('highway_platform', 90),
+              ('railway_platform', 90),
+              ('aeroway_runway', 60),
+              ('aeroway_taxiway', 50),
+              ('highway_construction', 10)
+            ) AS ordertable (feature, prio)
+            USING (feature)
+          ORDER BY
+            layernotnull,
+            prio,
+            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,
+            CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END
+        ) AS roads_casing
+    properties:
+      minzoom: 9
+    advanced: {}
+  - id: "highway-area-fill"
+    name: "highway-area-fill"
+    class: ""
+    # FIXME: No geometry?
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            COALESCE(
+              ('highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 
+                                                    'track', 'path', 'platform', 'services') THEN highway ELSE NULL END)),
+              ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END)),
+              (('aeroway_' || CASE WHEN aeroway IN ('runway', 'taxiway', 'helipad') THEN aeroway ELSE NULL END))
+            ) AS feature
+          FROM planet_osm_polygon
+          WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'living_street', 'track', 'path', 'platform', 'services')
+            OR railway IN ('platform')
+            OR aeroway IN ('runway', 'taxiway', 'helipad')
+          ORDER BY z_order, way_area desc
+        ) AS highway_area_fill
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "roads-fill"
+    name: "roads-fill"
+    class: "roads-fill access"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      # This is one of the most complex layers, so it bears explaining in some detail
+      # It is necessary to
+      # - Have roads and railways in the same layer to get ordering right
+      # - Return two linestrings for ways which are both a road and railway
+      # - Compute z_order here, rather than rely on osm2pgsql z_order
+      table: |-
+        (SELECT
+            way,
+            (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,
+            horse,
+            foot,
+            bicycle,
+            tracktype,
+            int_surface,
+            access,
+            construction,
+            service,
+            link,
+            layernotnull
+          FROM ( -- begin "features" subselect that contains both roads and rail/aero
+            SELECT
+                way,
+                ('highway_' || highway) AS feature, -- only motorway to tertiary links are accepted later on
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
+                                      'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'
+                  WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
+                                      'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
+                  ELSE NULL
+                END AS int_surface,
+                CASE WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE
+                  WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
+                  ELSE 'INT-normal'::text
+                END AS service,
+                CASE
+                  WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'
+                  ELSE 'no'
+                END AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
+                AND (covered IS NULL OR NOT covered = 'yes')
+                AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))
+                AND highway IS NOT NULL -- end of road select
+            UNION ALL
+            SELECT
+                way,
+                COALESCE(
+                  ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text 
+                                       WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'  
+                                       WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)),
+                  ('aeroway_' || aeroway)
+                ) AS feature,
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                'null' AS surface, -- Should be a SQL NULL?
+                CASE
+                  WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
+                'no' AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
+                AND (covered IS NULL OR NOT covered = 'yes')
+                AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))
+                AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select
+            ) AS features
+          JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.
+              ('railway_rail', 440),
+              ('railway_INT-preserved-ssy', 430),
+              ('railway_INT-spur-siding-yard', 430),
+              ('railway_subway', 420),
+              ('railway_narrow_gauge', 420),
+              ('railway_light_rail', 420),
+              ('railway_preserved', 420),
+              ('railway_funicular', 420),
+              ('railway_monorail', 420),
+              ('railway_miniature', 420),
+              ('railway_turntable', 420),
+              ('railway_tram', 410),
+              ('railway_tram-service', 405),
+              ('railway_disused', 400),
+              ('railway_construction', 400),
+              ('highway_motorway', 380),
+              ('highway_trunk', 370),
+              ('highway_primary', 360),
+              ('highway_secondary', 350),
+              ('highway_tertiary', 340),
+              ('highway_residential', 330),
+              ('highway_unclassified', 330),
+              ('highway_road', 330),
+              ('highway_living_street', 320),
+              ('highway_pedestrian', 310),
+              ('highway_raceway', 300),
+              ('highway_motorway_link', 240),
+              ('highway_trunk_link', 230),
+              ('highway_primary_link', 220),
+              ('highway_secondary_link', 210),
+              ('highway_tertiary_link', 200),
+              ('highway_service', 150),
+              ('highway_track', 110),
+              ('highway_path', 100),
+              ('highway_footway', 100),
+              ('highway_bridleway', 100),
+              ('highway_cycleway', 100),
+              ('highway_steps', 100),
+              ('highway_platform', 90),
+              ('railway_platform', 90),
+              ('aeroway_runway', 60),
+              ('aeroway_taxiway', 50),
+              ('highway_construction', 10)
+            ) AS ordertable (feature, prio)
+            USING (feature)
+          ORDER BY
+            layernotnull,
+            prio,
+            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,
+            CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END
+        ) AS roads_fill
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "turning-circle-fill"
+    name: "turning-circle-fill"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            DISTINCT on (p.way)
+            p.way AS way, l.highway AS int_tc_type,
+            CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
+              ELSE 'INT-normal'::text END AS int_tc_service
+          FROM planet_osm_point p
+            JOIN planet_osm_line l
+              ON ST_DWithin(p.way, l.way, 0.1)
+            JOIN (VALUES
+              ('tertiary', 1),
+              ('unclassified', 2),
+              ('residential', 3),
+              ('living_street', 4),
+              ('service', 5),
+              ('track', 6)
+            ) AS v (highway, prio)
+              ON v.highway=l.highway
+          WHERE p.highway = 'turning_circle' OR p.highway = 'turning_loop'
+          ORDER BY p.way, v.prio
+        ) AS turning_circle_fill
+    properties:
+      minzoom: 15
+    advanced: {}
+  - id: "aerialways"
+    name: "aerialways"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            aerialway
+          FROM planet_osm_line
+          WHERE aerialway IS NOT NULL
+        ) AS aerialways
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "roads-low-zoom"
+    name: "roads-low-zoom"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            COALESCE(
+              ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway end)),
+              ('railway_' || (CASE WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' 
+                                   WHEN railway IN ('rail', 'tram', 'light_rail', 'funicular', 'narrow_gauge') THEN railway ELSE NULL END))
+            ) AS feature,
+            CASE WHEN tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes' THEN 'yes' ELSE 'no' END AS int_tunnel,
+            CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' ELSE 'no' END AS link,
+            CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
+                                  'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'
+              WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
+                                  'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
+              ELSE NULL
+            END AS int_surface
+          FROM planet_osm_roads
+          WHERE highway IS NOT NULL
+            OR (railway IS NOT NULL AND railway != 'preserved'
+              AND (service IS NULL OR service NOT IN ('spur', 'siding', 'yard')))
+          ORDER BY z_order
+        ) AS roads_low_zoom
+    properties:
+      minzoom: 5
+      maxzoom: 9
+    advanced: {}
+  - id: "waterway-bridges"
+    name: "waterway-bridges"
+    class: "water-lines"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            waterway,
+            name,
+            intermittent,
+            CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel,
+            'yes' AS bridge
+          FROM planet_osm_line
+          WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')
+            AND bridge IN ('yes', 'aqueduct')
+          ORDER BY z_order
+        ) AS waterway_bridges
+    properties:
+      minzoom: 15
+    advanced: {}
+  - id: "bridges"
+    name: "bridges"
+    class: "bridges-fill bridges-casing access"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,
+            horse,
+            foot,
+            bicycle,
+            tracktype,
+            int_surface,
+            access,
+            construction,
+            service,
+            link,
+            layernotnull
+          FROM ( -- subselect that contains both roads and rail/aero
+            SELECT
+                way,
+                ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
+                                      'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'
+                  WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
+                                      'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
+                  ELSE NULL
+                END AS int_surface,
+                CASE WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE
+                  WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
+                  ELSE 'INT-normal'::text
+                END AS service,
+                CASE
+                  WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'
+                  ELSE 'no'
+                END AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')
+                AND highway IS NOT NULL -- end of road select
+            UNION ALL
+            SELECT
+                way,
+                COALESCE(
+                  ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text 
+                                       WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' 
+                                       WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)),
+                  ('aeroway_' || aeroway)
+                ) AS feature,
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                'null',
+                CASE
+                  WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
+                'no' AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')
+                AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select
+            ) AS features
+          JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.
+              ('railway_rail', 440),
+              ('railway_INT-preserved-ssy', 430),
+              ('railway_INT-spur-siding-yard', 430),
+              ('railway_subway', 420),
+              ('railway_narrow_gauge', 420),
+              ('railway_light_rail', 420),
+              ('railway_preserved', 420),
+              ('railway_funicular', 420),
+              ('railway_monorail', 420),
+              ('railway_miniature', 420),
+              ('railway_turntable', 420),
+              ('railway_tram', 410),
+              ('railway_tram-service', 405),
+              ('railway_disused', 400),
+              ('railway_construction', 400),
+              ('highway_motorway', 380),
+              ('highway_trunk', 370),
+              ('highway_primary', 360),
+              ('highway_secondary', 350),
+              ('highway_tertiary', 340),
+              ('highway_residential', 330),
+              ('highway_unclassified', 330),
+              ('highway_road', 330),
+              ('highway_living_street', 320),
+              ('highway_pedestrian', 310),
+              ('highway_raceway', 300),
+              ('highway_motorway_link', 240),
+              ('highway_trunk_link', 230),
+              ('highway_primary_link', 220),
+              ('highway_secondary_link', 210),
+              ('highway_tertiary_link', 200),
+              ('highway_service', 150),
+              ('highway_track', 110),
+              ('highway_path', 100),
+              ('highway_footway', 100),
+              ('highway_bridleway', 100),
+              ('highway_cycleway', 100),
+              ('highway_steps', 100),
+              ('highway_platform', 90),
+              ('railway_platform', 90),
+              ('aeroway_runway', 60),
+              ('aeroway_taxiway', 50),
+              ('highway_construction', 10)
+            ) AS ordertable (feature, prio)
+            USING (feature)
+          ORDER BY
+            layernotnull,
+            prio,
+            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,
+            CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END
+        ) AS bridges
+    properties:
+      group-by: "layernotnull"
+      minzoom: 9
+    advanced: {}
+  - id: "guideways"
+    name: "guideways"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_line
+          WHERE highway = 'bus_guideway'
+        ) AS guideways
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "admin-low-zoom"
+    name: "admin-low-zoom"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            admin_level
+          FROM planet_osm_roads
+          WHERE boundary = 'administrative'
+            AND admin_level IN ('0', '1', '2', '3', '4')
+            AND osm_id < 0
+          ORDER BY admin_level DESC
+        ) AS admin_low_zoom
+    properties:
+      minzoom: 4
+      maxzoom: 10
+    advanced: {}
+  - id: "admin-mid-zoom"
+    name: "admin-mid-zoom"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            admin_level
+          FROM planet_osm_roads
+          WHERE boundary = 'administrative'
+            AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8')
+            AND osm_id < 0
+          ORDER BY admin_level DESC
+        ) AS admin_mid_zoom
+    properties:
+      minzoom: 11
+      maxzoom: 12
+    advanced: {}
+  - id: "admin-high-zoom"
+    name: "admin-high-zoom"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            admin_level
+          FROM planet_osm_roads
+          WHERE boundary = 'administrative'
+            AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10')
+            AND osm_id < 0
+          ORDER BY admin_level::integer DESC -- With 10 as a valid value, we need to do a numeric ordering, not a text ordering
+        ) AS admin_high_zoom
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "power-minorline"
+    name: "power-minorline"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_line
+          WHERE power = 'minor_line'
+        ) AS power_minorline
+    properties:
+      minzoom: 16
+    advanced: {}
+  - id: "power-line"
+    name: "power-line"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_line
+          WHERE power = 'line'
+        ) AS power_line
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "nature-reserve-boundaries"
+    name: "nature-reserve-boundaries"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            boundary,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          WHERE (boundary = 'national_park' OR leisure = 'nature_reserve')
+            AND building IS NULL
+            AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
+        ) AS national_park_boundaries
+    properties:
+      minzoom: 7
+    advanced: {}
+  - id: "tourism-boundary"
+    name: "tourism-boundary"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
+            name,
+            tourism
+          FROM planet_osm_polygon
+          WHERE tourism = 'theme_park'
+            OR tourism = 'zoo'
+        ) AS tourism_boundary
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "trees"
+    name: "trees"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, "natural"
+          FROM planet_osm_point
+          WHERE "natural" = 'tree'
+        UNION ALL
+        SELECT
+            way, "natural"
+          FROM planet_osm_line
+          WHERE "natural" = 'tree_row'
+        ) AS trees
+    properties:
+      minzoom: 16
+    advanced: {}
+  - id: "country-names"
+    name: "country-names"
+    class: "country"
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
+            name
+          FROM planet_osm_polygon
+          WHERE boundary = 'administrative'
+            AND admin_level = '2'
+            AND name IS NOT NULL
+            AND way_area > 100*!pixel_width!::real*!pixel_height!::real
+          ORDER BY way_area DESC
+        ) AS country_names
+    properties:
+      minzoom: 2
+  - id: "capital-names"
+    name: "capital-names"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            CASE
+              WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER ELSE 0
+            END as population,
+            round(ascii(md5(osm_id::text)) / 55) AS dir -- base direction factor on geometry to be consistent across metatiles
+          FROM planet_osm_point
+          WHERE place IN ('city', 'town', 'village', 'hamlet')
+            AND name IS NOT NULL
+            AND capital = 'yes'
+          ORDER BY population DESC
+        ) AS capital_names
+    properties:
+      minzoom: 3
+      maxzoom: 15
+    advanced: {}
+  - id: "state-names"
+    name: "state-names"
+    class: "state"
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
+            name,
+            ref
+          FROM planet_osm_polygon
+          WHERE boundary = 'administrative'
+            AND admin_level = '4'
+            AND name IS NOT NULL
+            AND way_area > 100*!pixel_width!::real*!pixel_height!::real
+          ORDER BY way_area DESC
+        ) AS state_names
+    properties:
+      minzoom: 4
+    advanced: {}
+  - id: "placenames-medium"
+    name: "placenames-medium"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            score,
+            CASE
+              WHEN (place = 'city') THEN 1
+              ELSE 2
+            END as category,
+            round(ascii(md5(osm_id::text)) / 55) AS dir -- base direction factor on geometry to be consistent across metatiles
+          FROM 
+            (SELECT
+                osm_id,
+                way,
+                place,
+                name,
+                (
+                  (CASE
+                    WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER
+                    WHEN (place = 'city') THEN 100000
+                    WHEN (place = 'town') THEN 1000
+                    ELSE 1
+                  END)
+                  *
+                  (CASE
+                    WHEN (capital = '4') THEN 2
+                    ELSE 1
+                  END)
+                ) AS score
+              FROM planet_osm_point
+              WHERE place IN ('city', 'town')
+                AND name IS NOT NULL
+                AND (capital IS NULL OR capital != 'yes')
+            ) as p
+          ORDER BY score DESC, length(name) DESC, name
+        ) AS placenames_medium
+    properties:
+      minzoom: 4
+      maxzoom: 15
+    advanced: {}
+  - id: "placenames-small"
+    name: "placenames-small"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            place,
+            name
+          FROM planet_osm_point
+          WHERE place IN ('village', 'hamlet')
+             AND name IS NOT NULL
+             AND (capital IS NULL OR capital != 'yes')
+             OR place IN ('suburb', 'neighbourhood', 'locality', 'isolated_dwelling', 'farm')
+             AND name IS NOT NULL
+          ORDER BY CASE
+              WHEN place = 'suburb' THEN 3
+              WHEN place = 'village' THEN 4
+              WHEN place = 'hamlet' THEN 5
+              WHEN place = 'neighbourhood' THEN 6
+              WHEN place = 'locality' THEN 7
+              WHEN place = 'isolated_dwelling' THEN 8
+              WHEN place = 'farm' THEN 9
+            END ASC, length(name) DESC, name
+        ) AS placenames_small
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "stations"
+    class: "stations"
+    name: "stations"
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            ref,
+            railway,
+            aerialway,
+            CASE railway 
+              WHEN 'station' THEN 1 
+              WHEN 'subway_entrance' THEN 3
+              ELSE 2
+            END
+              AS prio
+          FROM planet_osm_point
+          WHERE railway IN ('station', 'halt', 'tram_stop', 'subway_entrance')
+            OR aerialway = 'station'
+          ORDER BY prio
+        ) AS stations
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "stations-poly"
+    name: "stations-poly"
+    class: "stations"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            ref,
+            railway,
+            aerialway
+        FROM planet_osm_polygon
+        WHERE railway IN ('station', 'halt', 'tram_stop')
+          OR aerialway = 'station'
+        ) AS stations_poly
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "amenity-points-poly"
+    name: "amenity-points-poly"
+    class: "points"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            COALESCE(
+              'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'wilderness_hut', 'guest_house',
+                                                  'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,
+              'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 
+                                                  'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', 'fire_station', 'fountain',
+                                                  'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 'townhall', 'parking', 
+                                                  'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', 
+                                                  'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', 
+                                                  'fast_food', 'telephone', 'emergency_phone', 'taxi', 'theatre', 'toilets', 'drinking_water', 
+                                                  'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility',
+                                                  'charging_station') THEN amenity ELSE NULL END,
+              'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 
+                                            'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 
+                                            'garden_centre', 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 
+                                            'photo', 'photo_studio', 'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 
+                                            'mobile_phone', 'motorcycle', 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 
+                                            'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 
+                                            'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 
+                                            'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop 
+                              WHEN shop IN ('no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE 'other' END,
+              'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table') THEN leisure ELSE NULL END,
+              'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') THEN man_made ELSE NULL END,
+              'natural_' || CASE WHEN "natural" IN ('spring') THEN "natural" ELSE NULL END,
+              'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END,
+              'highway_'|| CASE WHEN highway IN ('bus_stop', 'elevator', 'traffic_signals') THEN highway ELSE NULL END,
+              'power_' || CASE WHEN power IN ('generator') THEN power ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('viewpoint') THEN tourism ELSE NULL END
+            ) AS feature,
+            access,
+            religion,
+            denomination,
+            "generator:source",
+            power_source,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering
+          WHERE aeroway IN ('helipad', 'aerodrome')
+            OR tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'wilderness_hut', 'guest_house', 'hostel',
+                           'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site')
+            OR amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 
+                           'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre',
+                           'fire_station', 'fountain', 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 
+                           'townhall', 'parking', 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 
+                           'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', 
+                           'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', 'taxi', 
+                           'theatre', 'toilets', 'drinking_water', 'prison', 'hunting_stand', 'nightclub', 'veterinary',
+                           'social_facility', 'charging_station')
+            OR shop IS NOT NULL -- skip checking a huge list and use a null check
+            OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table')
+            OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk')
+            OR "natural" IN ('spring')
+            OR historic IN ('memorial', 'monument', 'archaeological_site')
+            OR highway IN ('bus_stop', 'elevator', 'traffic_signals')
+            OR (power = 'generator' AND ("generator:source" = 'wind' OR power_source = 'wind'))
+          ORDER BY way_area desc
+        ) AS amenity_points_poly
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "amenity-points"
+    name: "amenity-points"
+    class: "points"
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            COALESCE(
+              'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'wilderness_hut', 'guest_house', 'hostel',
+                                                  'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,
+              'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 
+                                                  'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', 'fire_station', 'fountain',
+                                                  'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 'townhall', 'parking', 
+                                                  'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', 
+                                                  'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', 
+                                                  'fast_food', 'telephone', 'emergency_phone', 'taxi', 'theatre', 'toilets', 'drinking_water', 
+                                                  'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility',
+                                                  'charging_station') THEN amenity ELSE NULL END,
+              'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 
+                                            'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', 
+                                            'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', 
+                                            'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', 
+                                            'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', 
+                                            'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', 
+                                            'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop 
+                              WHEN shop IN ('no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE 'other' END,
+              'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway',
+                                                  'dog_park') THEN leisure ELSE NULL END,
+              'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') THEN man_made ELSE NULL END,
+              'natural_' || CASE WHEN "natural" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance') THEN "natural" ELSE NULL END,
+              'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END,
+              'highway_'|| CASE WHEN highway IN ('bus_stop', 'elevator', 'traffic_signals', 'ford') THEN highway ELSE NULL END,
+              'power_' || CASE WHEN power IN ('generator') THEN power ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('viewpoint') THEN tourism ELSE NULL END,
+              'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END,
+              'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END
+            ) AS feature,
+            access,
+            CASE
+              WHEN "natural" IN ('peak', 'volcano', 'saddle') THEN
+                CASE
+                  WHEN ele ~ '^-?\d{1,4}(\.\d+)?$' THEN ele::NUMERIC
+                  ELSE NULL
+                END
+              ELSE NULL
+            END AS score,
+            religion,
+            denomination,
+            "generator:source",
+            power_source,
+            NULL AS way_pixels
+          FROM planet_osm_point
+          -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering
+          WHERE aeroway IN ('helipad', 'aerodrome')
+            OR tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'wilderness_hut', 'guest_house', 'hostel',
+                           'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site')
+            OR amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 
+                           'car_rental',  'car_wash', 'cinema', 'clinic', 'community_centre',
+                           'fire_station', 'fountain', 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 
+                           'townhall', 'parking', 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 
+                           'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', 
+                           'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', 
+                           'taxi', 'theatre', 'toilets', 'drinking_water', 'prison', 'hunting_stand', 'nightclub', 
+                           'veterinary', 'social_facility', 'charging_station')
+            OR shop IS NOT NULL -- skip checking a huge list and use a null check
+            OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway',
+                           'dog_park')
+            OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'cross', 'obelisk')
+            OR "natural" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance')
+            OR historic IN ('memorial', 'monument', 'archaeological_site', 'wayside_cross')
+            OR highway IN ('bus_stop', 'elevator', 'traffic_signals', 'ford')
+            OR (power = 'generator' AND ("generator:source" = 'wind' OR power_source = 'wind'))
+          ORDER BY score DESC NULLS LAST
+          ) AS amenity_points
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "power-towers"
+    name: "power-towers"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_point
+          WHERE power = 'tower'
+        ) AS power_towers
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "power-poles"
+    name: "power-poles"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_point
+          WHERE power = 'pole'
+        ) AS power_poles
+    properties:
+      minzoom: 16
+    advanced: {}
+  - id: "roads-text-ref-low-zoom"
+    name: "roads-text-ref-low-zoom"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            highway,
+            height,
+            width,
+            refs
+          FROM (
+            SELECT
+                way, highway,
+                array_length(refs,1) AS height,
+                (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width,
+                array_to_string(refs, E'\n') AS refs
+              FROM (
+                SELECT
+                    way,
+                    highway,
+                    string_to_array(ref, ';') AS refs
+                FROM planet_osm_roads
+                  WHERE highway IN ('motorway', 'trunk', 'primary', 'secondary')
+                  AND ref IS NOT NULL
+              ) AS p) AS q
+          WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom
+    properties:
+      minzoom: 10
+      maxzoom: 12
+    advanced: {}
+  - id: "junctions"
+    name: "junctions"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            highway,
+            junction,
+            ref,
+            name,
+            NULL AS way_pixels
+          FROM planet_osm_point
+          WHERE highway = 'motorway_junction' OR highway = 'traffic_signals' OR junction = 'yes'
+          UNION(
+            SELECT
+              ST_BuildArea(way),
+              highway,
+              junction,
+              ref,
+              name,
+              NULL AS way_pixels
+            FROM planet_osm_line
+            WHERE junction = 'yes'
+            UNION
+            SELECT
+              way,
+              highway,
+              junction,
+              ref,
+              name,
+              way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+            FROM planet_osm_polygon
+            WHERE junction = 'yes'
+            ORDER BY way_pixels DESC NULLS LAST
+          )
+         ) AS junctions
+    properties:
+      minzoom: 11
+    advanced: {}
+  - id: "bridge-text"
+    name: "bridge-text"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
+            man_made,
+            name
+          FROM planet_osm_polygon
+          WHERE man_made = 'bridge'
+        ) AS bridge_text
+    properties:
+      minzoom: 11
+    advanced: {}
+  - id: "roads-text-ref"
+    name: "roads-text-ref"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            highway,
+            height,
+            width,
+            refs
+          FROM (
+            SELECT
+                way, highway,
+                array_length(refs,1) AS height,
+                (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width,
+                array_to_string(refs, E'\n') AS refs
+              FROM (
+                SELECT
+                    way,
+                    COALESCE(
+                      CASE WHEN highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') THEN highway ELSE NULL END,
+                      CASE WHEN aeroway IN ('runway', 'taxiway') THEN aeroway ELSE NULL END
+                    ) AS highway,
+                    string_to_array(ref, ';') AS refs
+                  FROM planet_osm_line
+                    WHERE (highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') OR aeroway IN ('runway', 'taxiway'))
+                      AND ref IS NOT NULL
+              ) AS p) AS q
+          WHERE height <= 4 AND width <= 11) AS roads_text_ref
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "roads-area-text-name"
+    name: "roads-area-text-name"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
+            highway,
+            name
+          FROM planet_osm_polygon
+          WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 'track', 'path', 'platform')
+            OR railway IN ('platform')
+            AND name IS NOT NULL
+        ) AS roads_area_text_name
+    properties:
+      minzoom: 15
+    advanced: {}
+  - id: "roads-text-name"
+    name: "roads-text-name"
+    class: "directions"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END,
+            CASE WHEN (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') THEN 'yes' ELSE 'no' END AS tunnel,
+            CASE WHEN construction IN ('service', 'footway', 'cycleway', 'bridleway', 'path', 'track') THEN 'yes' ELSE 'no' END AS int_construction_minor,
+            name,
+            CASE
+              WHEN oneway IN ('yes', '-1') THEN oneway
+              WHEN junction IN ('roundabout') AND (oneway IS NULL OR NOT oneway IN ('no', 'reversible')) THEN 'yes'
+              ELSE NULL
+            END AS oneway,
+            horse, bicycle
+          FROM planet_osm_line
+          WHERE highway IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 
+                            'tertiary_link', 'residential', 'unclassified', 'road', 'service', 'pedestrian', 'raceway', 'living_street', 'construction')
+            AND (name IS NOT NULL
+              OR oneway IN ('yes', '-1')
+              OR junction IN ('roundabout'))
+        ) AS roads_text_name
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "paths-text-name"
+    name: "paths-text-name"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            highway,
+            name
+          FROM planet_osm_line
+          WHERE highway IN ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps')
+            AND name IS NOT NULL
+        ) AS paths_text_name
+    properties:
+      minzoom: 15
+    advanced: {}
+  - id: "text-poly-low-zoom"
+    name: "text-poly-low-zoom"
+    class: "text-low-zoom"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
+            COALESCE(
+              'landuse_' || CASE WHEN landuse IN ('forest', 'military') THEN landuse ELSE NULL END,
+              'natural_' || CASE WHEN "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock') THEN "natural" ELSE NULL END,
+              'place_' || CASE WHEN place IN ('island') THEN place ELSE NULL END,
+              'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END,
+              'leisure_' || CASE WHEN leisure IN ('nature_reserve') THEN leisure ELSE NULL END
+            ) AS feature,
+            name,
+            CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building -- always no with the where conditions
+          FROM planet_osm_polygon
+          WHERE (landuse IN ('forest', 'military')
+              OR "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock')
+              OR "place" IN ('island')
+              OR boundary IN ('national_park')
+              OR leisure IN ('nature_reserve'))
+            AND building IS NULL
+            AND name IS NOT NULL
+          ORDER BY way_area DESC
+        ) AS text_poly_low_zoom
+    properties:
+      minzoom: 7
+      maxzoom: 9
+    advanced: {}
+  - id: "text-poly"
+    name: "text-poly"
+    class: "text"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      # Include values that are rendered as icon without label to prevent mismatch between icons and labels,
+      # see https://github.com/gravitystorm/openstreetmap-carto/pull/1349#issuecomment-77805678
+      table: |-
+        (SELECT
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
+            COALESCE(
+              'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'wilderness_hut', 'guest_house', 'camp_site', 'caravan_site',
+                                                  'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END,
+              'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 
+                                                  'theatre', 'courthouse', 'townhall', 'cinema', 'clinic', 'community_centre', 'parking', 
+                                                  'bicycle_parking', 'motorcycle_parking', 'police', 'fire_station', 'fountain', 'place_of_worship', 
+                                                  'grave_yard', 'shelter', 'bank', 'embassy', 'fuel', 'bus_station', 'prison', 'university', 
+                                                  'school', 'college', 'kindergarten', 'hospital', 'ice_cream', 'pharmacy', 'doctors', 'dentist', 
+                                                  'atm', 'bicycle_rental', 'car_rental', 'car_wash', 'post_box', 'post_office',
+                                                  'recycling', 'telephone', 'emergency_phone', 'toilets', 'taxi', 'drinking_water', 'hunting_stand', 
+                                                  'nightclub', 'veterinary', 'social_facility', 'charging_station') THEN amenity ELSE NULL END,
+              'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 
+                                            'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', 
+                                            'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', 
+                                            'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', 
+                                            'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', 
+                                            'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', 
+                                            'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop 
+                              WHEN shop IN ('no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE 'other' END,
+              'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', 
+                                                  'pitch', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', 
+                                                  'picnic_table', 'dog_park') THEN leisure ELSE NULL END,
+              'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END,
+              'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 
+                                                  'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 
+                                                  'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 
+                                                  'construction', 'military') THEN landuse ELSE NULL END,
+              'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk') THEN man_made ELSE NULL END,
+              'natural_' || CASE WHEN "natural" IN ('wood', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath', 
+                                                    'grassland', 'scrub', 'beach', 'shoal', 'reef', 'glacier') THEN "natural" ELSE NULL END,
+              'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END,
+              'military_' || CASE WHEN military IN ('danger_area') THEN military ELSE NULL END,
+              'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END,
+              'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford') THEN highway ELSE NULL END,
+              'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END,
+              'waterway_' || CASE WHEN waterway IN ('dam') THEN waterway ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('viewpoint', 'attraction') THEN tourism ELSE NULL END
+            ) AS feature,
+            access,
+            name,
+            operator,
+            ref,
+            way_area,
+            CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building
+          FROM planet_osm_polygon
+          -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering
+          WHERE (aeroway IN ('gate', 'apron', 'helipad', 'aerodrome')
+              OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'wilderness_hut', 'guest_house', 'camp_site', 'caravan_site', 'theme_park',
+                             'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site')
+              OR amenity IS NOT NULL -- skip checking a huge list and use a null check
+              OR shop IS NOT NULL
+              OR leisure IS NOT NULL
+              OR landuse IS NOT NULL
+              OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk')
+              OR "natural" IS NOT NULL
+              OR place IN ('island', 'islet')
+              OR military IN ('danger_area')
+              OR historic IN ('memorial', 'monument', 'archaeological_site')
+              OR highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford')
+              OR power IN ('plant', 'station', 'generator', 'sub_station', 'substation')
+              OR boundary IN ('national_park')
+              OR waterway = 'dam')
+            AND (name IS NOT NULL
+                 OR (ref IS NOT NULL AND aeroway IN ('gate'))
+                )
+          ORDER BY way_area DESC
+        ) AS text_poly
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "text-line"
+    name: "text-line"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+          way,
+            NULL as way_pixels,
+            COALESCE('man_made_' || man_made, 'waterway_' || waterway, 'natural_' || "natural") AS feature,
+            access,
+            name,
+            operator,
+            ref,
+            NULL AS way_area,
+            CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building
+          FROM planet_osm_line
+          WHERE (man_made IN ('pier', 'breakwater', 'groyne', 'embankment')
+              OR waterway IN ('dam', 'weir')
+              OR "natural" IN ('cliff'))
+            AND name IS NOT NULL
+        ) AS text_line
+    advanced: {}
+    properties:
+      minzoom: 10
+  - id: "text-point"
+    name: "text-point"
+    class: "text"
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      # Include values that are rendered as icon without label to prevent mismatch between icons and labels,
+      # see https://github.com/gravitystorm/openstreetmap-carto/pull/1349#issuecomment-77805678
+      table: |-
+        (SELECT
+            way,
+            way_pixels,
+            feature,
+            access,
+            CONCAT(
+                name,
+                CASE WHEN name IS NOT NULL AND elevation IS NOT NULL THEN E'\n' ELSE NULL END,
+                CASE WHEN elevation IS NOT NULL THEN CONCAT(REPLACE(ROUND(elevation)::TEXT, '-', U&'\2212'), U&'\00A0', 'm') ELSE NULL END
+            ) AS name,
+            CASE
+              WHEN "natural" IN ('peak', 'volcano', 'saddle') THEN elevation
+              ELSE NULL
+            END AS score,
+            operator,
+            ref,
+            way_area,
+            is_building
+          FROM
+            (SELECT
+                way,
+                NULL AS way_pixels,
+                COALESCE(
+                  'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,
+                  'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'wilderness_hut', 'guest_house', 'camp_site', 'caravan_site', 
+                                                      'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END,
+                  'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 'theatre', 
+                                                      'courthouse', 'townhall', 'cinema', 'clinic', 'community_centre', 'parking', 'bicycle_parking', 
+                                                      'motorcycle_parking', 'police', 'fire_station', 'fountain', 'place_of_worship', 'grave_yard', 'shelter', 'bank', 
+                                                      'embassy', 'fuel', 'bus_station', 'prison', 'university', 'school', 'college', 'kindergarten', 'hospital', 
+                                                      'ice_cream', 'pharmacy', 'doctors', 'dentist', 'atm', 'bicycle_rental', 'car_rental',
+                                                      'car_wash', 'post_box', 'post_office', 'recycling', 'telephone', 'emergency_phone', 'toilets', 'taxi', 
+                                                      'drinking_water', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility',
+                                                      'charging_station') THEN amenity ELSE NULL END,
+                  'shop_' || CASE WHEN shop IN ('supermarket', 'bag','bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 'fashion', 
+                                                'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', 'hairdresser', 
+                                                'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', 'photography', 
+                                                'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', 'musical_instrument', 
+                                                'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', 
+                                                'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', 
+                                                'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop 
+                                  WHEN shop IN ('no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE 'other' END,
+                  'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track',  
+                                                      'pitch','playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina',  
+                                                      'slipway', 'picnic_table', 'dog_park') THEN leisure ELSE NULL END,
+                  'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END,
+                  'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 
+                                                      'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 
+                                                      'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 
+                                                      'construction', 'military') THEN landuse ELSE NULL END,
+                  'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'obelisk') THEN man_made ELSE NULL END,
+                  'natural_' || CASE WHEN "natural" IN ('wood', 'peak', 'volcano', 'saddle', 'cave_entrance', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', 
+                                                        'scree', 'shingle', 'bare_rock', 'sand', 'heath', 'grassland', 'scrub', 'beach', 'glacier', 'tree') 
+                                                        THEN "natural" ELSE NULL END,
+                  'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END,
+                  'military_' || CASE WHEN military IN ('danger_area') THEN military ELSE NULL END,
+                  'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END,
+                  'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford') THEN highway ELSE NULL END,
+                  'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END,
+                  'waterway_' || CASE WHEN waterway IN ('dam', 'weir') THEN waterway ELSE NULL END,
+                  'tourism_' || CASE WHEN tourism IN ('viewpoint', 'attraction') THEN tourism ELSE NULL END,
+                  'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END,
+                  'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END
+                ) AS feature,
+                access,
+                name,
+                CASE
+                  WHEN "natural" IN ('peak', 'volcano', 'saddle') OR tourism = 'alpine_hut' OR amenity = 'shelter' THEN
+                    CASE
+                      WHEN ele ~ '^-?\d{1,4}(\.\d+)?$' THEN ele::NUMERIC
+                      ELSE NULL
+                    END
+                  ELSE NULL
+                END AS elevation,
+                "natural",
+                operator,
+                ref,
+                NULL AS way_area,
+                CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building
+              FROM planet_osm_point
+              -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering
+              WHERE (aeroway IN ('gate', 'apron', 'helipad', 'aerodrome')
+                  OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'wilderness_hut', 'guest_house', 'camp_site', 'caravan_site', 'theme_park',
+                                 'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site')
+                  OR amenity IS NOT NULL -- skip checking a huge list and use a null check
+                  OR shop IS NOT NULL
+                  OR leisure IS NOT NULL
+                  OR landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 
+                                 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'greenhouse_horticulture', 
+                                 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military')
+                  OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'cross', 'obelisk')
+                  OR "natural" IS NOT NULL
+                  OR place IN ('island', 'islet')
+                  OR military IN ('danger_area')
+                  OR historic IN ('memorial', 'monument', 'archaeological_site', 'wayside_cross')
+                  OR highway IN ('bus_stop', 'services', 'rest_area', 'elevator', 'ford')
+                  OR power IN ('plant', 'station', 'generator', 'sub_station', 'substation')
+                  OR boundary IN ('national_park')
+                  OR waterway IN ('dam', 'weir'))
+                AND (name IS NOT NULL
+                     OR (ele IS NOT NULL AND ("natural" IN ('peak', 'volcano', 'saddle') OR tourism = 'alpine_hut' OR amenity = 'shelter'))
+                     OR (ref IS NOT NULL AND aeroway IN ('gate'))
+                    )
+              ) AS p
+          ORDER BY score DESC NULLS LAST
+          ) AS text
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "building-text"
+    name: "building-text"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            name,
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          WHERE building IS NOT NULL
+            AND building NOT IN ('no')
+            AND name IS NOT NULL
+          ORDER BY way_area DESC
+        ) AS building_text
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "interpolation"
+    name: "interpolation"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_line
+          WHERE "addr:interpolation" IS NOT NULL
+        ) AS interpolation
+    properties:
+      minzoom: 17
+    advanced: {}
+  - id: "addresses"
+    name: "addresses"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            "addr:housenumber" AS addr_housenumber,
+            "addr:housename" AS addr_housename,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          WHERE (("addr:housenumber" IS NOT NULL) OR ("addr:housename" IS NOT NULL))
+            AND building IS NOT NULL
+        UNION ALL
+        SELECT
+            way,
+            "addr:housenumber" AS addr_housenumber,
+            "addr:housename" AS addr_housename,
+            NULL AS way_pixels
+          FROM planet_osm_point
+          WHERE ("addr:housenumber" IS NOT NULL) OR ("addr:housename" IS NOT NULL)
+          ORDER BY way_pixels DESC NULLS LAST
+        ) AS addresses
+    properties:
+      minzoom: 17
+    advanced: {}
+  - id: "water-lines-text"
+    name: "water-lines-text"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            waterway,
+            lock,
+            name,
+            intermittent,
+            CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel
+          FROM planet_osm_line
+          WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')
+            AND (tunnel IS NULL or tunnel != 'culvert')
+            AND name IS NOT NULL
+          ORDER BY z_order
+        ) AS water_lines_text
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "ferry-routes-text"
+    name: "ferry-routes-text"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name
+          FROM planet_osm_line
+          WHERE route = 'ferry'
+            AND name IS NOT NULL
+        ) AS ferry_routes_text
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "admin-text"
+    name: "admin-text"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            admin_level
+          FROM planet_osm_polygon
+          WHERE boundary = 'administrative'
+            AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10')
+            AND name IS NOT NULL
+          ORDER BY admin_level::integer ASC, way_area DESC
+        ) AS admin_text
+    properties:
+      minzoom: 16
+    advanced: {}
+  - id: "nature-reserve-text"
+    name: "nature-reserve-text"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          WHERE (boundary = 'national_park' OR leisure = 'nature_reserve')
+            AND name IS NOT NULL
+        ) AS nature_reserve_text
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "amenity-low-priority"
+    name: "amenity-low-priority"
+    class: "amenity-low-priority"
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            COALESCE(
+              'highway_' || CASE WHEN highway IN ('mini_roundabout') THEN highway ELSE NULL END,
+              'railway_' || CASE WHEN railway IN ('level_crossing', 'crossing') THEN railway ELSE NULL END,
+              'amenity_' || CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'bench', 'waste_basket') THEN amenity ELSE NULL END,
+              'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END,
+              'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END,
+              'barrier_' || CASE WHEN barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') THEN barrier ELSE NULL END
+            )  AS feature,
+            access,
+            CASE WHEN amenity='waste_basket' THEN 2 ELSE 1 END AS prio
+          FROM planet_osm_point p
+          WHERE highway IN ('mini_roundabout')
+             OR railway IN ('level_crossing', 'crossing')
+             OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'bench', 'waste_basket')
+             OR historic IN ('wayside_cross')
+             OR man_made IN ('cross')
+             OR barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block')
+          ORDER BY prio
+          ) AS amenity_low_priority
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "amenity-low-priority-poly"
+    name: "amenity-low-priority-poly"
+    class: "amenity-low-priority"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            COALESCE(
+              'amenity_' || CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking') THEN amenity ELSE NULL END,
+              'barrier_' || CASE WHEN barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') THEN barrier ELSE NULL END
+            )  AS feature,
+            access
+          FROM planet_osm_polygon p
+          WHERE amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking')
+             OR barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block')
+          ) AS amenity_low_priority_poly
+    properties:
+      minzoom: 14
+    advanced: {}
diff --git a/project.yaml b/project.yaml
deleted file mode 100644
index 09e96bd..0000000
--- a/project.yaml
+++ /dev/null
@@ -1,2520 +0,0 @@
-scale: 1
-metatile: 2
-name: "OpenStreetMap Carto"
-description: "A general-purpose OpenStreetMap mapnik style, in CartoCSS"
-bounds: &world
-  - -180
-  - -85.05112877980659
-  - 180
-  - 85.05112877980659
-center:
-  - 0
-  - 0
-  - 4
-format: "png"
-interactivity: false
-minzoom: 0
-maxzoom: 22
-srs: "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
-
-# Various parts to be included later on
-_parts:
-  # Extents are used for tilemill, and don't actually make it to the generated XML
-  extents: &extents
-    extent: *world
-    srs-name: "900913"
-    srs: "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
-  extents84: &extents84
-    extent: *world
-    srs-name: "WGS84"
-    srs: "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
-  osm2pgsql: &osm2pgsql
-    type: "postgis"
-    dbname: "gis"
-    key_field: ""
-    geometry_field: "way"
-    extent: "-20037508,-20037508,20037508,20037508"
-
-Stylesheet:
-  - "style.mss"
-  - "shapefiles.mss"
-  - "landcover.mss"
-  - "water.mss"
-  - "water-features.mss"
-  - "road-colors-generated.mss"
-  - "roads.mss"
-  - "power.mss"
-  - "placenames.mss"
-  - "buildings.mss"
-  - "stations.mss"
-  - "amenity-points.mss"
-  - "ferry-routes.mss"
-  - "aerialways.mss"
-  - "admin.mss"
-  - "addressing.mss"
-Layer:
-  - id: "world"
-    name: "world"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      file: "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp"
-      type: "shape"
-    advanced: {}
-    properties:
-      maxzoom: 9
-  - id: "coast-poly"
-    name: "coast-poly"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      file: "data/land-polygons-split-3857/land_polygons.shp"
-      type: "shape"
-    properties:
-      minzoom: 10
-    advanced: {}
-  - id: "builtup"
-    name: "builtup"
-    geometry: "polygon"
-    class: ""
-    extent: *world
-    srs-name: "mercator"
-    srs: "+proj=merc +datum=WGS84 +over"
-    Datasource:
-      file: "data/world_boundaries/builtup_area.shp"
-      type: "shape"
-    properties:
-      minzoom: 8
-      maxzoom: 9
-    advanced: {}
-  - id: "necountries"
-    name: "necountries"
-    class: ""
-    geometry: "linestring"
-    <<: *extents84
-    Datasource:
-      file: "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp"
-      type: "shape"
-    properties:
-      minzoom: 1
-      maxzoom: 3
-    advanced: {}
-  - id: "landcover-low-zoom"
-    name: "landcover-low-zoom"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way, name, way_pixels,
-            COALESCE(wetland, landuse, "natural") AS feature
-          FROM (SELECT
-              way, COALESCE(name, '') AS name,
-              ('landuse_' || (CASE WHEN landuse IN ('forest', 'military') THEN landuse ELSE NULL END)) AS landuse,
-              ('natural_' || (CASE WHEN "natural" IN ('wood', 'sand', 'scree', 'shingle', 'bare_rock') THEN "natural" ELSE NULL END)) AS "natural",
-              ('wetland_' || (CASE WHEN "natural" IN ('wetland', 'mud') THEN (CASE WHEN "natural" IN ('mud') THEN "natural" ELSE wetland END) ELSE NULL END)) AS wetland,
-              way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
-            FROM planet_osm_polygon
-            WHERE (landuse IN ('forest', 'military')
-              OR "natural" IN ('wood', 'wetland', 'mud', 'sand', 'scree', 'shingle', 'bare_rock'))
-              AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
-              AND building IS NULL
-            ORDER BY CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END, way_area DESC
-          ) AS features
-        ) AS landcover_low_zoom
-    properties:
-      minzoom: 7
-      maxzoom: 9
-    advanced: {}
-  - id: "landcover"
-    name: "landcover"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way, name, religion, way_pixels,
-            COALESCE(aeroway, amenity, wetland, power, landuse, leisure, military, "natural", tourism, highway, railway) AS feature
-          FROM (SELECT
-              way, COALESCE(name, '') AS name,
-              ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway ELSE NULL END)) AS aeroway,
-              ('amenity_' || (CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', 
-                                                    'hospital', 'kindergarten', 'grave_yard', 'prison', 'place_of_worship', 'clinic') 
-                                                    THEN amenity ELSE NULL END)) AS amenity,
-              ('landuse_' || (CASE WHEN landuse IN ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 
-                                                    'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'greenhouse_horticulture', 
-                                                    'recreation_ground', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 
-                                                    'brownfield', 'landfill', 'construction') THEN landuse ELSE NULL END)) AS landuse,
-              ('leisure_' || (CASE WHEN leisure IN ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 
-                                                    'golf_course', 'miniature_golf', 'picnic_table', 'sports_centre', 'stadium', 'pitch', 
-                                                    'track', 'dog_park') THEN leisure ELSE NULL END)) AS leisure,
-              ('military_' || (CASE WHEN military IN ('danger_area') THEN military ELSE NULL END)) AS military,
-              ('natural_' || (CASE WHEN "natural" IN ('beach', 'shoal', 'heath', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub') THEN "natural" ELSE NULL END)) AS "natural",
-              ('wetland_' || (CASE WHEN "natural" IN ('wetland', 'marsh', 'mud') THEN (CASE WHEN "natural" IN ('marsh', 'mud') THEN "natural" ELSE wetland END) ELSE NULL END)) AS wetland,
-              ('power_' || (CASE WHEN power IN ('station', 'sub_station', 'substation', 'generator') THEN power ELSE NULL END)) AS power,
-              ('tourism_' || (CASE WHEN tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site') THEN tourism ELSE NULL END)) AS tourism,
-              ('highway_' || (CASE WHEN highway IN ('services', 'rest_area') THEN highway ELSE NULL END)) AS highway,
-              ('railway_' || (CASE WHEN railway = 'station' THEN railway ELSE NULL END)) AS railway,
-              CASE WHEN religion IN ('christian', 'jewish') THEN religion ELSE 'INT-generic'::text END AS religion,
-              way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
-            FROM planet_osm_polygon
-            WHERE (landuse IS NOT NULL
-              OR leisure IS NOT NULL
-              OR aeroway IN ('apron', 'aerodrome')
-              OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 
-                             'grave_yard', 'place_of_worship', 'prison', 'clinic')
-              OR military IN ('danger_area')
-              OR "natural" IN ('beach', 'shoal', 'heath', 'mud', 'marsh', 'wetland', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub')
-              OR power IN ('station', 'sub_station', 'substation', 'generator')
-              OR tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site')
-              OR highway IN ('services', 'rest_area')
-              OR railway = 'station')
-              AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
-            ORDER BY CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END, way_area DESC
-          ) AS landcover
-        ) AS features
-    properties:
-      minzoom: 10
-    advanced: {}
-  - id: "landcover-line"
-    name: "landcover-line"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way
-          FROM planet_osm_line
-          WHERE man_made = 'cutline'
-        ) AS landcover_line
-    advanced: {}
-    properties:
-      minzoom: 14
-  - id: "water-lines-casing"
-    name: "water-lines-casing"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way, waterway, intermittent,
-            CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel
-          FROM planet_osm_line
-          WHERE waterway IN ('stream', 'drain', 'ditch')
-        ) AS water_lines_casing
-    properties:
-      minzoom: 13
-    advanced: {}
-  - id: "water-lines-low-zoom"
-    name: "water-lines-low-zoom"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            waterway,
-            intermittent
-          FROM planet_osm_line
-          WHERE waterway = 'river'
-        ) AS water_lines_low_zoom
-    properties:
-      minzoom: 8
-      maxzoom: 11
-    advanced: {}
-  - id: "icesheet-poly"
-    name: "icesheet-poly"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      file: "data/antarctica-icesheet-polygons-3857/icesheet_polygons.shp"
-      type: "shape"
-    properties:
-      minzoom: 4
-    advanced: {}
-  - id: "water-areas"
-    name: "water-areas"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            "natural",
-            waterway,
-            landuse,
-            name,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
-          FROM planet_osm_polygon
-          WHERE
-            (waterway IN ('dock', 'riverbank', 'canal')
-              OR landuse IN ('reservoir', 'basin')
-              OR "natural" IN ('water', 'glacier'))
-            AND building IS NULL
-            AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
-          ORDER BY z_order, way_area DESC
-        ) AS water_areas
-    properties:
-      minzoom: 4
-    advanced: {}
-  - id: "landcover-area-symbols"
-    name: "landcover-area-symbols"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way, surface, 
-            COALESCE(CASE WHEN landuse = 'forest' THEN 'wood' ELSE NULL END, "natural") AS "natural",
-            CASE WHEN "natural" IN ('marsh', 'mud') 
-                THEN "natural" 
-                ELSE CASE WHEN ("natural" = 'wetland' AND wetland IS NULL) 
-                  THEN 'wetland' 
-                  ELSE CASE WHEN ("natural" = 'wetland')
-                    THEN wetland
-                    ELSE NULL
-                    END 
-                END
-              END AS int_wetland
-          FROM planet_osm_polygon
-          WHERE ("natural" IN ('marsh', 'mud', 'wetland', 'wood', 'beach', 'shoal', 'reef', 'scrub') OR landuse = 'forest')
-            AND building IS NULL
-            AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
-          ORDER BY z_order, way_area DESC
-        ) AS landcover_area_symbols
-    properties:
-      minzoom: 10
-    advanced: {}
-  - id: "icesheet-outlines"
-    name: "icesheet-outlines"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      file: "data/antarctica-icesheet-outlines-3857/icesheet_outlines.shp"
-      type: "shape"
-    properties:
-      minzoom: 4
-    advanced: {}
-  - id: "water-lines"
-    name: "water-lines"
-    class: "water-lines"
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way, waterway, name, intermittent,
-            CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel,
-            'no' AS bridge
-          FROM planet_osm_line
-          WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')
-            AND (bridge IS NULL OR bridge NOT IN ('yes', 'aqueduct'))
-          ORDER BY z_order
-        ) AS water_lines
-    properties:
-      minzoom: 12
-    advanced: {}
-  - id: "water-barriers-line"
-    name: "water-barriers-line"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            waterway,
-            name
-          FROM planet_osm_line
-          WHERE waterway IN ('dam', 'weir', 'lock_gate')
-        ) AS water_barriers_line
-    advanced: {}
-    properties:
-      minzoom: 13
-  - id: "water-barriers-poly"
-    name: "water-barriers-poly"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            waterway,
-            name
-          FROM planet_osm_polygon
-          WHERE waterway IN ('dam', 'weir', 'lock_gate')
-        ) AS water_barriers_poly
-    advanced: {}
-    properties:
-      minzoom: 13
-  - id: "marinas-area"
-    name: "marinas-area"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way
-          FROM planet_osm_polygon
-          WHERE leisure = 'marina'
-        ) AS marinas_area
-    properties:
-      minzoom: 14
-    advanced: {}
-  - id: "piers-poly"
-    name: "piers-poly"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way, man_made
-          FROM planet_osm_polygon
-          WHERE man_made IN ('pier', 'breakwater', 'groyne')
-        ) AS piers_poly
-    properties:
-      minzoom: 12
-    advanced: {}
-  - id: "piers-line"
-    name: "piers-line"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way, man_made
-          FROM planet_osm_line
-          WHERE man_made IN ('pier', 'breakwater', 'groyne')
-        ) AS piers_line
-    properties:
-      minzoom: 12
-    advanced: {}
-  - id: "water-barriers-point"
-    name: "water-barriers-point"
-    class: ""
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way, waterway
-          FROM planet_osm_point
-          WHERE waterway IN ('dam', 'weir', 'lock_gate')
-        ) AS water_barriers_points
-    properties:
-      minzoom: 17
-    advanced: {}
-  - id: "bridge"
-    name: "bridge"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
-            man_made,
-            name
-          FROM planet_osm_polygon
-          WHERE man_made = 'bridge'
-        ) AS bridge
-    properties:
-      minzoom: 12
-    advanced: {}
-  - id: "buildings"
-    name: "buildings"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            building
-          FROM planet_osm_polygon
-          WHERE building IS NOT NULL
-            AND building != 'no'
-            AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
-          ORDER BY z_order, way_area DESC
-        ) AS buildings
-    properties:
-      minzoom: 13
-    advanced: {}
-  - id: "buildings-major"
-    name: "buildings-major"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            building,
-            amenity,
-            aeroway
-          FROM planet_osm_polygon
-          WHERE building IS NOT NULL
-            AND building != 'no'
-            AND (aeroway = 'terminal' OR amenity = 'place_of_worship' OR building = 'train_station')
-            AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
-          ORDER BY z_order, way_area DESC)
-        AS buildings_major
-    properties:
-      minzoom: 13
-    advanced: {}
-  - id: "tunnels"
-    name: "tunnels"
-    class: "tunnels-fill tunnels-casing access"
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      # This query is quite large, having to deal with both roads, railways and
-      # runways. To allow for ways that are both railways and roads, a UNION
-      # ALL is present, and to use an ordering different than current osm2pgsql
-      # an order is generated in SQL.
-      table: |-
-        (SELECT
-            way,
-            (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,
-            horse,
-            foot,
-            bicycle,
-            tracktype,
-            int_surface,
-            access,
-            construction,
-            service,
-            link,
-            layernotnull
-          FROM ( -- subselect that contains both roads and rail/aero
-            SELECT
-                way,
-                ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on
-                horse,
-                foot,
-                bicycle,
-                tracktype,
-                CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
-                                      'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'
-                  WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
-                                      'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
-                  ELSE NULL
-                END AS int_surface,
-                CASE WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                  ELSE NULL
-                END AS access,
-                construction,
-                CASE
-                  WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
-                  ELSE 'INT-normal'::text
-                END AS service,
-                CASE
-                  WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'
-                  ELSE 'no'
-                END AS link,
-                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
-              FROM planet_osm_line
-              WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes')
-                AND highway IS NOT NULL -- end of road select
-            UNION ALL
-            SELECT
-                way,
-                COALESCE(
-                  ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text 
-                                       WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'  
-                                       WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)),
-                  ('aeroway_' || aeroway)
-                ) AS feature,
-                horse,
-                foot,
-                bicycle,
-                tracktype,
-                'null',
-                CASE
-                  WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                  ELSE NULL
-                END AS access,
-                construction,
-                CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
-                'no' AS link,
-                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
-              FROM planet_osm_line
-              WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes')
-                AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select
-            ) AS features
-          JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.
-              ('railway_rail', 440),
-              ('railway_INT-preserved-ssy', 430),
-              ('railway_INT-spur-siding-yard', 430),
-              ('railway_subway', 420),
-              ('railway_narrow_gauge', 420),
-              ('railway_light_rail', 420),
-              ('railway_preserved', 420),
-              ('railway_funicular', 420),
-              ('railway_monorail', 420),
-              ('railway_miniature', 420),
-              ('railway_turntable', 420),
-              ('railway_tram', 410),
-              ('railway_tram-service', 405),
-              ('railway_disused', 400),
-              ('railway_construction', 400),
-              ('highway_motorway', 380),
-              ('highway_trunk', 370),
-              ('highway_primary', 360),
-              ('highway_secondary', 350),
-              ('highway_tertiary', 340),
-              ('highway_residential', 330),
-              ('highway_unclassified', 330),
-              ('highway_road', 330),
-              ('highway_living_street', 320),
-              ('highway_pedestrian', 310),
-              ('highway_raceway', 300),
-              ('highway_motorway_link', 240),
-              ('highway_trunk_link', 230),
-              ('highway_primary_link', 220),
-              ('highway_secondary_link', 210),
-              ('highway_tertiary_link', 200),
-              ('highway_service', 150),
-              ('highway_track', 110),
-              ('highway_path', 100),
-              ('highway_footway', 100),
-              ('highway_bridleway', 100),
-              ('highway_cycleway', 100),
-              ('highway_steps', 100),
-              ('highway_platform', 90),
-              ('railway_platform', 90),
-              ('aeroway_runway', 60),
-              ('aeroway_taxiway', 50),
-              ('highway_construction', 10)
-            ) AS ordertable (feature, prio)
-            USING (feature)
-          ORDER BY
-            layernotnull,
-            prio,
-            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,
-            CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END
-        ) AS tunnels
-    properties:
-      group-by: "layernotnull"
-      minzoom: 9
-    advanced: {}
-  - id: "landuse-overlay"
-    name: "landuse-overlay"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            landuse,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
-          FROM planet_osm_polygon
-          WHERE landuse = 'military'
-            AND building IS NULL
-        ) AS landuse_overlay
-    properties:
-      minzoom: 7
-    advanced: {}
-  - id: "line-barriers"
-    name: "line-barriers"
-    class: "barriers"
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way, COALESCE(historic, barrier) AS feature
-          FROM (SELECT way,
-            ('barrier_' || (CASE WHEN barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail',
-                  'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall') THEN barrier ELSE NULL END)) AS barrier,
-            ('historic_' || (CASE WHEN historic = 'citywalls' THEN historic ELSE NULL END)) AS historic
-            FROM planet_osm_line
-            WHERE barrier IN ('chain', 'city_wall', 'embankment', 'ditch', 'fence', 'guard_rail',
-                  'handrail', 'hedge', 'kerb', 'retaining_wall', 'wall')
-              OR historic = 'citywalls'
-              AND (waterway IS NULL OR waterway NOT IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi'))
-          ) AS features
-        ) AS line_barriers
-    properties:
-      minzoom: 14
-    advanced: {}
-  - id: "cliffs"
-    name: "cliffs"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way, "natural", man_made
-          FROM planet_osm_line
-          WHERE "natural" = 'cliff' OR man_made = 'embankment'
-        ) AS cliffs
-    properties:
-      minzoom: 13
-    advanced: {}
-  - id: "area-barriers"
-    name: "area-barriers"
-    class: "barriers"
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way, barrier AS feature
-          FROM (SELECT way,
-            ('barrier_' || barrier) AS barrier
-            FROM planet_osm_polygon
-            WHERE barrier IS NOT NULL
-          ) AS features
-        ) AS area_barriers
-    properties:
-      minzoom: 16
-    advanced: {}
-  - id: "ferry-routes"
-    name: "ferry-routes"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way
-          FROM planet_osm_line
-          WHERE route = 'ferry'
-        ) AS ferry_routes
-    properties:
-      minzoom: 7
-    advanced: {}
-  - id: "turning-circle-casing"
-    name: "turning-circle-casing"
-    class: ""
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT DISTINCT ON (p.way)
-            p.way AS way, l.highway AS int_tc_type,
-            CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway')
-              THEN 'INT-minor'::text
-              ELSE 'INT-normal'::text
-            END AS int_tc_service
-          FROM planet_osm_point p
-            JOIN planet_osm_line l ON ST_DWithin(p.way, l.way, 0.1) -- Assumes Mercator
-            JOIN (VALUES
-              ('tertiary', 1),
-              ('unclassified', 2),
-              ('residential', 3),
-              ('living_street', 4),
-              ('service', 5)
-              ) AS v (highway, prio)
-              ON v.highway=l.highway
-          WHERE p.highway = 'turning_circle'
-            OR p.highway = 'turning_loop'
-          ORDER BY p.way, v.prio
-        ) AS turning_circle_casing
-    properties:
-      minzoom: 15
-    advanced: {}
-  - id: "highway-area-casing"
-    name: "highway-area-casing"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            COALESCE((
-              'highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'track', 'path', 'platform') THEN highway ELSE NULL END)),
-              ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END))
-            ) AS feature
-          FROM planet_osm_polygon
-          WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform')
-            OR railway IN ('platform')
-          ORDER BY z_order, way_area DESC
-        ) AS highway_area_casing
-    properties:
-      minzoom: 14
-    advanced: {}
-  - name: "roads-casing"
-    id: "roads-casing"
-    class: "roads-casing"
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,
-            horse,
-            foot,
-            bicycle,
-            tracktype,
-            int_surface,
-            access,
-            construction,
-            service,
-            link,
-            layernotnull
-          FROM ( -- subselect that contains both roads and rail/aero
-            SELECT
-                way,
-                ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on
-                horse,
-                foot,
-                bicycle,
-                tracktype,
-                CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
-                                      'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'
-                  WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
-                                      'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
-                  ELSE NULL
-                END AS int_surface,
-                CASE WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                  ELSE NULL
-                END AS access,
-                construction,
-                CASE
-                  WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
-                  ELSE 'INT-normal'::text
-                END AS service,
-                CASE
-                  WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'
-                  ELSE 'no'
-                END AS link,
-                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
-              FROM planet_osm_line
-              WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
-                AND (covered IS NULL OR NOT covered = 'yes')
-                AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))
-                AND highway IS NOT NULL -- end of road select
-            UNION ALL
-            SELECT
-                way,
-                COALESCE(
-                  ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text 
-                                       WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'  
-                                       WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)),
-                  ('aeroway_' || aeroway)
-                ) AS feature,
-                horse,
-                foot,
-                bicycle,
-                tracktype,
-                'null',
-                CASE
-                  WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                  ELSE NULL
-                END AS access,
-                construction,
-                CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
-                'no' AS link,
-                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
-              FROM planet_osm_line
-              WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
-                AND (covered IS NULL OR NOT covered = 'yes')
-                AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))
-                AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select
-            ) AS features
-          JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.
-              ('railway_rail', 440),
-              ('railway_INT-preserved-ssy', 430),
-              ('railway_INT-spur-siding-yard', 430),
-              ('railway_subway', 420),
-              ('railway_narrow_gauge', 420),
-              ('railway_light_rail', 420),
-              ('railway_preserved', 420),
-              ('railway_funicular', 420),
-              ('railway_monorail', 420),
-              ('railway_miniature', 420),
-              ('railway_turntable', 420),
-              ('railway_tram', 410),
-              ('railway_tram-service', 405),
-              ('railway_disused', 400),
-              ('railway_construction', 400),
-              ('highway_motorway', 380),
-              ('highway_trunk', 370),
-              ('highway_primary', 360),
-              ('highway_secondary', 350),
-              ('highway_tertiary', 340),
-              ('highway_residential', 330),
-              ('highway_unclassified', 330),
-              ('highway_road', 330),
-              ('highway_living_street', 320),
-              ('highway_pedestrian', 310),
-              ('highway_raceway', 300),
-              ('highway_motorway_link', 240),
-              ('highway_trunk_link', 230),
-              ('highway_primary_link', 220),
-              ('highway_secondary_link', 210),
-              ('highway_tertiary_link', 200),
-              ('highway_service', 150),
-              ('highway_track', 110),
-              ('highway_path', 100),
-              ('highway_footway', 100),
-              ('highway_bridleway', 100),
-              ('highway_cycleway', 100),
-              ('highway_steps', 100),
-              ('highway_platform', 90),
-              ('railway_platform', 90),
-              ('aeroway_runway', 60),
-              ('aeroway_taxiway', 50),
-              ('highway_construction', 10)
-            ) AS ordertable (feature, prio)
-            USING (feature)
-          ORDER BY
-            layernotnull,
-            prio,
-            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,
-            CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END
-        ) AS roads_casing
-    properties:
-      minzoom: 9
-    advanced: {}
-  - id: "highway-area-fill"
-    name: "highway-area-fill"
-    class: ""
-    # FIXME: No geometry?
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            COALESCE(
-              ('highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 
-                                                    'track', 'path', 'platform', 'services') THEN highway ELSE NULL END)),
-              ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END)),
-              (('aeroway_' || CASE WHEN aeroway IN ('runway', 'taxiway', 'helipad') THEN aeroway ELSE NULL END))
-            ) AS feature
-          FROM planet_osm_polygon
-          WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'living_street', 'track', 'path', 'platform', 'services')
-            OR railway IN ('platform')
-            OR aeroway IN ('runway', 'taxiway', 'helipad')
-          ORDER BY z_order, way_area desc
-        ) AS highway_area_fill
-    properties:
-      minzoom: 14
-    advanced: {}
-  - id: "roads-fill"
-    name: "roads-fill"
-    class: "roads-fill access"
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      # This is one of the most complex layers, so it bears explaining in some detail
-      # It is necessary to
-      # - Have roads and railways in the same layer to get ordering right
-      # - Return two linestrings for ways which are both a road and railway
-      # - Compute z_order here, rather than rely on osm2pgsql z_order
-      table: |-
-        (SELECT
-            way,
-            (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,
-            horse,
-            foot,
-            bicycle,
-            tracktype,
-            int_surface,
-            access,
-            construction,
-            service,
-            link,
-            layernotnull
-          FROM ( -- begin "features" subselect that contains both roads and rail/aero
-            SELECT
-                way,
-                ('highway_' || highway) AS feature, -- only motorway to tertiary links are accepted later on
-                horse,
-                foot,
-                bicycle,
-                tracktype,
-                CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
-                                      'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'
-                  WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
-                                      'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
-                  ELSE NULL
-                END AS int_surface,
-                CASE WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                  ELSE NULL
-                END AS access,
-                construction,
-                CASE
-                  WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
-                  ELSE 'INT-normal'::text
-                END AS service,
-                CASE
-                  WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'
-                  ELSE 'no'
-                END AS link,
-                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
-              FROM planet_osm_line
-              WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
-                AND (covered IS NULL OR NOT covered = 'yes')
-                AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))
-                AND highway IS NOT NULL -- end of road select
-            UNION ALL
-            SELECT
-                way,
-                COALESCE(
-                  ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text 
-                                       WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'  
-                                       WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)),
-                  ('aeroway_' || aeroway)
-                ) AS feature,
-                horse,
-                foot,
-                bicycle,
-                tracktype,
-                'null' AS surface, -- Should be a SQL NULL?
-                CASE
-                  WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                  ELSE NULL
-                END AS access,
-                construction,
-                CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
-                'no' AS link,
-                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
-              FROM planet_osm_line
-              WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
-                AND (covered IS NULL OR NOT covered = 'yes')
-                AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))
-                AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select
-            ) AS features
-          JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.
-              ('railway_rail', 440),
-              ('railway_INT-preserved-ssy', 430),
-              ('railway_INT-spur-siding-yard', 430),
-              ('railway_subway', 420),
-              ('railway_narrow_gauge', 420),
-              ('railway_light_rail', 420),
-              ('railway_preserved', 420),
-              ('railway_funicular', 420),
-              ('railway_monorail', 420),
-              ('railway_miniature', 420),
-              ('railway_turntable', 420),
-              ('railway_tram', 410),
-              ('railway_tram-service', 405),
-              ('railway_disused', 400),
-              ('railway_construction', 400),
-              ('highway_motorway', 380),
-              ('highway_trunk', 370),
-              ('highway_primary', 360),
-              ('highway_secondary', 350),
-              ('highway_tertiary', 340),
-              ('highway_residential', 330),
-              ('highway_unclassified', 330),
-              ('highway_road', 330),
-              ('highway_living_street', 320),
-              ('highway_pedestrian', 310),
-              ('highway_raceway', 300),
-              ('highway_motorway_link', 240),
-              ('highway_trunk_link', 230),
-              ('highway_primary_link', 220),
-              ('highway_secondary_link', 210),
-              ('highway_tertiary_link', 200),
-              ('highway_service', 150),
-              ('highway_track', 110),
-              ('highway_path', 100),
-              ('highway_footway', 100),
-              ('highway_bridleway', 100),
-              ('highway_cycleway', 100),
-              ('highway_steps', 100),
-              ('highway_platform', 90),
-              ('railway_platform', 90),
-              ('aeroway_runway', 60),
-              ('aeroway_taxiway', 50),
-              ('highway_construction', 10)
-            ) AS ordertable (feature, prio)
-            USING (feature)
-          ORDER BY
-            layernotnull,
-            prio,
-            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,
-            CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END
-        ) AS roads_fill
-    properties:
-      minzoom: 10
-    advanced: {}
-  - id: "turning-circle-fill"
-    name: "turning-circle-fill"
-    class: ""
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            DISTINCT on (p.way)
-            p.way AS way, l.highway AS int_tc_type,
-            CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
-              ELSE 'INT-normal'::text END AS int_tc_service
-          FROM planet_osm_point p
-            JOIN planet_osm_line l
-              ON ST_DWithin(p.way, l.way, 0.1)
-            JOIN (VALUES
-              ('tertiary', 1),
-              ('unclassified', 2),
-              ('residential', 3),
-              ('living_street', 4),
-              ('service', 5),
-              ('track', 6)
-            ) AS v (highway, prio)
-              ON v.highway=l.highway
-          WHERE p.highway = 'turning_circle' OR p.highway = 'turning_loop'
-          ORDER BY p.way, v.prio
-        ) AS turning_circle_fill
-    properties:
-      minzoom: 15
-    advanced: {}
-  - id: "aerialways"
-    name: "aerialways"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            aerialway
-          FROM planet_osm_line
-          WHERE aerialway IS NOT NULL
-        ) AS aerialways
-    properties:
-      minzoom: 12
-    advanced: {}
-  - id: "roads-low-zoom"
-    name: "roads-low-zoom"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            COALESCE(
-              ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway end)),
-              ('railway_' || (CASE WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' 
-                                   WHEN railway IN ('rail', 'tram', 'light_rail', 'funicular', 'narrow_gauge') THEN railway ELSE NULL END))
-            ) AS feature,
-            CASE WHEN tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes' THEN 'yes' ELSE 'no' END AS int_tunnel,
-            CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' ELSE 'no' END AS link,
-            CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
-                                  'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'
-              WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
-                                  'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
-              ELSE NULL
-            END AS int_surface
-          FROM planet_osm_roads
-          WHERE highway IS NOT NULL
-            OR (railway IS NOT NULL AND railway != 'preserved'
-              AND (service IS NULL OR service NOT IN ('spur', 'siding', 'yard')))
-          ORDER BY z_order
-        ) AS roads_low_zoom
-    properties:
-      minzoom: 5
-      maxzoom: 9
-    advanced: {}
-  - id: "waterway-bridges"
-    name: "waterway-bridges"
-    class: "water-lines"
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            waterway,
-            name,
-            intermittent,
-            CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel,
-            'yes' AS bridge
-          FROM planet_osm_line
-          WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')
-            AND bridge IN ('yes', 'aqueduct')
-          ORDER BY z_order
-        ) AS waterway_bridges
-    properties:
-      minzoom: 15
-    advanced: {}
-  - id: "bridges"
-    name: "bridges"
-    class: "bridges-fill bridges-casing access"
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            (CASE WHEN substr(feature, length(feature)-3, 4) = 'link' THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,
-            horse,
-            foot,
-            bicycle,
-            tracktype,
-            int_surface,
-            access,
-            construction,
-            service,
-            link,
-            layernotnull
-          FROM ( -- subselect that contains both roads and rail/aero
-            SELECT
-                way,
-                ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on
-                horse,
-                foot,
-                bicycle,
-                tracktype,
-                CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
-                                      'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay') THEN 'unpaved'
-                  WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
-                                      'concrete:plates', 'paving_stones', 'metal', 'wood') THEN 'paved'
-                  ELSE NULL
-                END AS int_surface,
-                CASE WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                  ELSE NULL
-                END AS access,
-                construction,
-                CASE
-                  WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
-                  ELSE 'INT-normal'::text
-                END AS service,
-                CASE
-                  WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'
-                  ELSE 'no'
-                END AS link,
-                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
-              FROM planet_osm_line
-              WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')
-                AND highway IS NOT NULL -- end of road select
-            UNION ALL
-            SELECT
-                way,
-                COALESCE(
-                  ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text 
-                                       WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' 
-                                       WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END)),
-                  ('aeroway_' || aeroway)
-                ) AS feature,
-                horse,
-                foot,
-                bicycle,
-                tracktype,
-                'null',
-                CASE
-                  WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                  ELSE NULL
-                END AS access,
-                construction,
-                CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
-                'no' AS link,
-                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
-              FROM planet_osm_line
-              WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')
-                AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select
-            ) AS features
-          JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.
-              ('railway_rail', 440),
-              ('railway_INT-preserved-ssy', 430),
-              ('railway_INT-spur-siding-yard', 430),
-              ('railway_subway', 420),
-              ('railway_narrow_gauge', 420),
-              ('railway_light_rail', 420),
-              ('railway_preserved', 420),
-              ('railway_funicular', 420),
-              ('railway_monorail', 420),
-              ('railway_miniature', 420),
-              ('railway_turntable', 420),
-              ('railway_tram', 410),
-              ('railway_tram-service', 405),
-              ('railway_disused', 400),
-              ('railway_construction', 400),
-              ('highway_motorway', 380),
-              ('highway_trunk', 370),
-              ('highway_primary', 360),
-              ('highway_secondary', 350),
-              ('highway_tertiary', 340),
-              ('highway_residential', 330),
-              ('highway_unclassified', 330),
-              ('highway_road', 330),
-              ('highway_living_street', 320),
-              ('highway_pedestrian', 310),
-              ('highway_raceway', 300),
-              ('highway_motorway_link', 240),
-              ('highway_trunk_link', 230),
-              ('highway_primary_link', 220),
-              ('highway_secondary_link', 210),
-              ('highway_tertiary_link', 200),
-              ('highway_service', 150),
-              ('highway_track', 110),
-              ('highway_path', 100),
-              ('highway_footway', 100),
-              ('highway_bridleway', 100),
-              ('highway_cycleway', 100),
-              ('highway_steps', 100),
-              ('highway_platform', 90),
-              ('railway_platform', 90),
-              ('aeroway_runway', 60),
-              ('aeroway_taxiway', 50),
-              ('highway_construction', 10)
-            ) AS ordertable (feature, prio)
-            USING (feature)
-          ORDER BY
-            layernotnull,
-            prio,
-            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,
-            CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END
-        ) AS bridges
-    properties:
-      group-by: "layernotnull"
-      minzoom: 9
-    advanced: {}
-  - id: "guideways"
-    name: "guideways"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way
-          FROM planet_osm_line
-          WHERE highway = 'bus_guideway'
-        ) AS guideways
-    properties:
-      minzoom: 13
-    advanced: {}
-  - name: "admin-low-zoom"
-    id: "admin-low-zoom"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            admin_level
-          FROM planet_osm_roads
-          WHERE boundary = 'administrative'
-            AND admin_level IN ('0', '1', '2', '3', '4')
-            AND osm_id < 0
-          ORDER BY admin_level DESC
-        ) AS admin_low_zoom
-    properties:
-      minzoom: 4
-      maxzoom: 10
-    advanced: {}
-  - id: "admin-mid-zoom"
-    name: "admin-mid-zoom"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            admin_level
-          FROM planet_osm_roads
-          WHERE boundary = 'administrative'
-            AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8')
-            AND osm_id < 0
-          ORDER BY admin_level DESC
-        ) AS admin_mid_zoom
-    properties:
-      minzoom: 11
-      maxzoom: 12
-    advanced: {}
-  - id: "admin-high-zoom"
-    name: "admin-high-zoom"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            admin_level
-          FROM planet_osm_roads
-          WHERE boundary = 'administrative'
-            AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10')
-            AND osm_id < 0
-          ORDER BY admin_level::integer DESC -- With 10 as a valid value, we need to do a numeric ordering, not a text ordering
-        ) AS admin_high_zoom
-    properties:
-      minzoom: 13
-    advanced: {}
-  - id: "power-minorline"
-    name: "power-minorline"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way
-          FROM planet_osm_line
-          WHERE power = 'minor_line'
-        ) AS power_minorline
-    properties:
-      minzoom: 16
-    advanced: {}
-  - id: "power-line"
-    name: "power-line"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way
-          FROM planet_osm_line
-          WHERE power = 'line'
-        ) AS power_line
-    properties:
-      minzoom: 14
-    advanced: {}
-  - id: "nature-reserve-boundaries"
-    name: "nature-reserve-boundaries"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            name,
-            boundary,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
-          FROM planet_osm_polygon
-          WHERE (boundary = 'national_park' OR leisure = 'nature_reserve')
-            AND building IS NULL
-            AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
-        ) AS national_park_boundaries
-    properties:
-      minzoom: 7
-    advanced: {}
-  - id: "tourism-boundary"
-    name: "tourism-boundary"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
-            name,
-            tourism
-          FROM planet_osm_polygon
-          WHERE tourism = 'theme_park'
-            OR tourism = 'zoo'
-        ) AS tourism_boundary
-    properties:
-      minzoom: 10
-    advanced: {}
-  - id: "trees"
-    name: "trees"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way, "natural"
-          FROM planet_osm_point
-          WHERE "natural" = 'tree'
-        UNION ALL
-        SELECT
-            way, "natural"
-          FROM planet_osm_line
-          WHERE "natural" = 'tree_row'
-        ) AS trees
-    properties:
-      minzoom: 16
-    advanced: {}
-  - id: "country-names"
-    name: "country-names"
-    class: "country"
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
-            name
-          FROM planet_osm_polygon
-          WHERE boundary = 'administrative'
-            AND admin_level = '2'
-            AND name IS NOT NULL
-            AND way_area > 100*!pixel_width!::real*!pixel_height!::real
-          ORDER BY way_area DESC
-        ) AS country_names
-    properties:
-      minzoom: 2
-  - id: "capital-names"
-    name: "capital-names"
-    class: ""
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            name,
-            CASE
-              WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER ELSE 0
-            END as population,
-            round(ascii(md5(osm_id::text)) / 55) AS dir -- base direction factor on geometry to be consistent across metatiles
-          FROM planet_osm_point
-          WHERE place IN ('city', 'town')
-            AND name IS NOT NULL
-            AND capital = 'yes'
-            AND admin_level = '2'
-          ORDER BY population DESC
-        ) AS capital_names
-    properties:
-      minzoom: 3
-      maxzoom: 15
-    advanced: {}
-  - id: "state-names"
-    name: "state-names"
-    class: "state"
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
-            name,
-            ref
-          FROM planet_osm_polygon
-          WHERE boundary = 'administrative'
-            AND admin_level = '4'
-            AND name IS NOT NULL
-            AND way_area > 100*!pixel_width!::real*!pixel_height!::real
-          ORDER BY way_area DESC
-        ) AS state_names
-    properties:
-      minzoom: 4
-    advanced: {}
-  - id: "placenames-medium"
-    name: "placenames-medium"
-    class: ""
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            name,
-            score,
-            CASE
-              WHEN (place = 'city') THEN 1
-              ELSE 2
-            END as category,
-            round(ascii(md5(osm_id::text)) / 55) AS dir -- base direction factor on geometry to be consistent across metatiles
-          FROM 
-            (SELECT
-                osm_id,
-                way,
-                place,
-                name,
-                (
-                  (CASE
-                    WHEN (population ~ '^[0-9]{1,8}$') THEN population::INTEGER
-                    WHEN (place = 'city') THEN 100000
-                    WHEN (place = 'town') THEN 1000
-                    ELSE 1
-                  END)
-                  *
-                  (CASE
-                    WHEN (capital = '4' OR (capital = 'yes' AND admin_level = '4')) THEN 2
-                    ELSE 1
-                  END)
-                ) AS score
-              FROM planet_osm_point
-              WHERE place IN ('city', 'town')
-                AND name IS NOT NULL
-                AND (capital IS NULL OR capital != 'yes' OR (capital = 'yes' AND (admin_level IS NULL OR admin_level != '2')))
-            ) as p
-          ORDER BY score DESC, length(name) DESC, name
-        ) AS placenames_medium
-    properties:
-      minzoom: 4
-      maxzoom: 15
-    advanced: {}
-  - id: "placenames-small"
-    name: "placenames-small"
-    class: ""
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            place,
-            name
-          FROM planet_osm_point
-          WHERE place IN ('suburb', 'village', 'hamlet', 'neighbourhood', 'locality', 'isolated_dwelling', 'farm')
-            AND name IS NOT NULL
-          ORDER BY CASE
-              WHEN place = 'suburb' THEN 3
-              WHEN place = 'village' THEN 4
-              WHEN place = 'hamlet' THEN 5
-              WHEN place = 'neighbourhood' THEN 6
-              WHEN place = 'locality' THEN 7
-              WHEN place = 'isolated_dwelling' THEN 8
-              WHEN place = 'farm' THEN 9
-            END ASC, length(name) DESC, name
-        ) AS placenames_small
-    properties:
-      minzoom: 12
-    advanced: {}
-  - id: "stations"
-    class: "stations"
-    name: "stations"
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            name,
-            railway,
-            aerialway,
-            CASE railway 
-              WHEN 'station' THEN 1 
-              WHEN 'subway_entrance' THEN 3
-              ELSE 2
-            END
-              AS prio
-          FROM planet_osm_point
-          WHERE railway IN ('station', 'halt', 'tram_stop', 'subway_entrance')
-            OR aerialway = 'station'
-          ORDER BY prio
-        ) AS stations
-    properties:
-      minzoom: 12
-    advanced: {}
-  - id: "stations-poly"
-    name: "stations-poly"
-    class: "stations"
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            name,
-            railway,
-            aerialway
-        FROM planet_osm_polygon
-        WHERE railway IN ('station', 'halt', 'tram_stop')
-          OR aerialway = 'station'
-        ) AS stations_poly
-    properties:
-      minzoom: 12
-    advanced: {}
-  - id: "amenity-points-poly"
-    name: "amenity-points-poly"
-    class: "points"
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            COALESCE(
-              'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,
-              'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 
-                                                  'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,
-              'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 
-                                                  'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', 'fire_station', 'fountain',
-                                                  'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 'townhall', 'parking', 
-                                                  'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', 
-                                                  'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', 
-                                                  'fast_food', 'telephone', 'emergency_phone', 'taxi', 'theatre', 'toilets', 'drinking_water', 
-                                                  'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility',
-                                                  'charging_station') THEN amenity ELSE NULL END,
-              'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 
-                                            'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 
-                                            'garden_centre', 'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 
-                                            'photo', 'photo_studio', 'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 
-                                            'mobile_phone', 'motorcycle', 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 
-                                            'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 
-                                            'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 
-                                            'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop 
-                              WHEN shop IN ('no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE 'other' END,
-              'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table') THEN leisure ELSE NULL END,
-              'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') THEN man_made ELSE NULL END,
-              'natural_' || CASE WHEN "natural" IN ('spring') THEN "natural" ELSE NULL END,
-              'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END,
-              'highway_'|| CASE WHEN highway IN ('bus_stop', 'elevator', 'traffic_signals') THEN highway ELSE NULL END,
-              'power_' || CASE WHEN power IN ('generator') THEN power ELSE NULL END,
-              'tourism_' || CASE WHEN tourism IN ('viewpoint') THEN tourism ELSE NULL END
-            ) AS feature,
-            access,
-            religion,
-            denomination,
-            "generator:source",
-            power_source,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
-          FROM planet_osm_polygon
-          -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering
-          WHERE aeroway IN ('helipad', 'aerodrome')
-            OR tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', 
-                           'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site')
-            OR amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 
-                           'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre',
-                           'fire_station', 'fountain', 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 
-                           'townhall', 'parking', 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 
-                           'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', 
-                           'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', 'taxi', 
-                           'theatre', 'toilets', 'drinking_water', 'prison', 'hunting_stand', 'nightclub', 'veterinary',
-                           'social_facility', 'charging_station')
-            OR shop IS NOT NULL -- skip checking a huge list and use a null check
-            OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table')
-            OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk')
-            OR "natural" IN ('spring')
-            OR historic IN ('memorial', 'monument', 'archaeological_site')
-            OR highway IN ('bus_stop', 'elevator', 'traffic_signals')
-            OR (power = 'generator' AND ("generator:source" = 'wind' OR power_source = 'wind'))
-          ORDER BY way_area desc
-        ) AS amenity_points_poly
-    properties:
-      minzoom: 10
-    advanced: {}
-  - id: "amenity-points"
-    name: "amenity-points"
-    class: "points"
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            COALESCE(
-              'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,
-              'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', 
-                                                  'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,
-              'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 
-                                                  'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', 'fire_station', 'fountain',
-                                                  'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 'townhall', 'parking', 
-                                                  'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', 
-                                                  'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', 
-                                                  'fast_food', 'telephone', 'emergency_phone', 'taxi', 'theatre', 'toilets', 'drinking_water', 
-                                                  'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility',
-                                                  'charging_station') THEN amenity ELSE NULL END,
-              'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 
-                                            'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', 
-                                            'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', 
-                                            'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', 
-                                            'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', 
-                                            'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', 
-                                            'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop 
-                              WHEN shop IN ('no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE 'other' END,
-              'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway',
-                                                  'dog_park') THEN leisure ELSE NULL END,
-              'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'obelisk') THEN man_made ELSE NULL END,
-              'natural_' || CASE WHEN "natural" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance') THEN "natural" ELSE NULL END,
-              'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END,
-              'highway_'|| CASE WHEN highway IN ('bus_stop', 'elevator', 'traffic_signals', 'ford') THEN highway ELSE NULL END,
-              'power_' || CASE WHEN power IN ('generator') THEN power ELSE NULL END,
-              'tourism_' || CASE WHEN tourism IN ('viewpoint') THEN tourism ELSE NULL END,
-              'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END,
-              'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END
-            ) AS feature,
-            access,
-            CASE
-              WHEN "natural" IN ('peak', 'volcano', 'saddle') THEN
-                CASE
-                  WHEN ele ~ '^-?\d{1,4}(\.\d+)?$' THEN ele::NUMERIC
-                  ELSE NULL
-                END
-              ELSE NULL
-            END AS score,
-            religion,
-            denomination,
-            "generator:source",
-            power_source,
-            NULL AS way_pixels
-          FROM planet_osm_point
-          -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering
-          WHERE aeroway IN ('helipad', 'aerodrome')
-            OR tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', 
-                           'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site')
-            OR amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 
-                           'car_rental',  'car_wash', 'cinema', 'clinic', 'community_centre',
-                           'fire_station', 'fountain', 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 
-                           'townhall', 'parking', 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 
-                           'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', 
-                           'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', 
-                           'taxi', 'theatre', 'toilets', 'drinking_water', 'prison', 'hunting_stand', 'nightclub', 
-                           'veterinary', 'social_facility', 'charging_station')
-            OR shop IS NOT NULL -- skip checking a huge list and use a null check
-            OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway',
-                           'dog_park')
-            OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill', 'cross', 'obelisk')
-            OR "natural" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance')
-            OR historic IN ('memorial', 'monument', 'archaeological_site', 'wayside_cross')
-            OR highway IN ('bus_stop', 'elevator', 'traffic_signals', 'ford')
-            OR (power = 'generator' AND ("generator:source" = 'wind' OR power_source = 'wind'))
-          ORDER BY score DESC NULLS LAST
-          ) AS amenity_points
-    properties:
-      minzoom: 10
-    advanced: {}
-  - id: "power-towers"
-    name: "power-towers"
-    class: ""
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way
-          FROM planet_osm_point
-          WHERE power = 'tower'
-        ) AS power_towers
-    properties:
-      minzoom: 14
-    advanced: {}
-  - id: "power-poles"
-    name: "power-poles"
-    class: ""
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way
-          FROM planet_osm_point
-          WHERE power = 'pole'
-        ) AS power_poles
-    properties:
-      minzoom: 16
-    advanced: {}
-  - id: "roads-text-ref-low-zoom"
-    name: "roads-text-ref-low-zoom"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            highway,
-            height,
-            width,
-            refs
-          FROM (
-            SELECT
-                way, highway,
-                array_length(refs,1) AS height,
-                (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width,
-                array_to_string(refs, E'\n') AS refs
-              FROM (
-                SELECT
-                    way,
-                    highway,
-                    string_to_array(ref, ';') AS refs
-                FROM planet_osm_roads
-                  WHERE highway IN ('motorway', 'trunk', 'primary', 'secondary')
-                  AND ref IS NOT NULL
-              ) AS p) AS q
-          WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom
-    properties:
-      minzoom: 10
-      maxzoom: 12
-    advanced: {}
-  - id: "junctions"
-    name: "junctions"
-    class: ""
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            highway,
-            junction,
-            ref,
-            name
-          FROM planet_osm_point
-          WHERE highway = 'motorway_junction' OR highway = 'traffic_signals' OR junction = 'yes'
-        ) AS junctions
-    properties:
-      minzoom: 11
-    advanced: {}
-  - id: "bridge-text"
-    name: "bridge-text"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
-            man_made,
-            name
-          FROM planet_osm_polygon
-          WHERE man_made = 'bridge'
-        ) AS bridge_text
-    properties:
-      minzoom: 11
-    advanced: {}
-  - id: "roads-text-ref"
-    name: "roads-text-ref"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            highway,
-            height,
-            width,
-            refs
-          FROM (
-            SELECT
-                way, highway,
-                array_length(refs,1) AS height,
-                (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width,
-                array_to_string(refs, E'\n') AS refs
-              FROM (
-                SELECT
-                    way,
-                    COALESCE(
-                      CASE WHEN highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') THEN highway ELSE NULL END,
-                      CASE WHEN aeroway IN ('runway', 'taxiway') THEN aeroway ELSE NULL END
-                    ) AS highway,
-                    string_to_array(ref, ';') AS refs
-                  FROM planet_osm_line
-                    WHERE (highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') OR aeroway IN ('runway', 'taxiway'))
-                      AND ref IS NOT NULL
-              ) AS p) AS q
-          WHERE height <= 4 AND width <= 11) AS roads_text_ref
-    properties:
-      minzoom: 13
-    advanced: {}
-  - id: "roads-area-text-name"
-    name: "roads-area-text-name"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
-            highway,
-            name
-          FROM planet_osm_polygon
-          WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 'track', 'path', 'platform')
-            OR railway IN ('platform')
-            AND name IS NOT NULL
-        ) AS roads_area_text_name
-    properties:
-      minzoom: 15
-    advanced: {}
-  - id: "roads-text-name"
-    name: "roads-text-name"
-    class: "directions"
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END,
-            CASE WHEN (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') THEN 'yes' ELSE 'no' END AS tunnel,
-            CASE WHEN construction IN ('service', 'footway', 'cycleway', 'bridleway', 'path', 'track') THEN 'yes' ELSE 'no' END AS int_construction_minor,
-            name,
-            CASE
-              WHEN oneway IN ('yes', '-1') THEN oneway
-              WHEN junction IN ('roundabout') AND (oneway IS NULL OR NOT oneway IN ('no', 'reversible')) THEN 'yes'
-              ELSE NULL
-            END AS oneway,
-            horse, bicycle
-          FROM planet_osm_line
-          WHERE highway IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 
-                            'tertiary_link', 'residential', 'unclassified', 'road', 'service', 'pedestrian', 'raceway', 'living_street', 'construction')
-            AND (name IS NOT NULL
-              OR oneway IN ('yes', '-1')
-              OR junction IN ('roundabout'))
-        ) AS roads_text_name
-    properties:
-      minzoom: 13
-    advanced: {}
-  - id: "paths-text-name"
-    name: "paths-text-name"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            highway,
-            name
-          FROM planet_osm_line
-          WHERE highway IN ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps')
-            AND name IS NOT NULL
-        ) AS paths_text_name
-    properties:
-      minzoom: 15
-    advanced: {}
-  - id: "text-poly-low-zoom"
-    name: "text-poly-low-zoom"
-    class: "text-low-zoom"
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
-            COALESCE(
-              'landuse_' || CASE WHEN landuse IN ('forest', 'military') THEN landuse ELSE NULL END,
-              'natural_' || CASE WHEN "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock') THEN "natural" ELSE NULL END,
-              'place_' || CASE WHEN place IN ('island') THEN place ELSE NULL END,
-              'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END,
-              'leisure_' || CASE WHEN leisure IN ('nature_reserve') THEN leisure ELSE NULL END
-            ) AS feature,
-            name,
-            CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building -- always no with the where conditions
-          FROM planet_osm_polygon
-          WHERE (landuse IN ('forest', 'military')
-              OR "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock')
-              OR "place" IN ('island')
-              OR boundary IN ('national_park')
-              OR leisure IN ('nature_reserve'))
-            AND building IS NULL
-            AND name IS NOT NULL
-          ORDER BY way_area DESC
-        ) AS text_poly_low_zoom
-    properties:
-      minzoom: 7
-      maxzoom: 9
-    advanced: {}
-  - id: "text-poly"
-    name: "text-poly"
-    class: "text"
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      # Include values that are rendered as icon without label to prevent mismatch between icons and labels,
-      # see https://github.com/gravitystorm/openstreetmap-carto/pull/1349#issuecomment-77805678
-      table: |-
-        (SELECT
-            way,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
-            COALESCE(
-              'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,
-              'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 
-                                                  'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END,
-              'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 
-                                                  'theatre', 'courthouse', 'townhall', 'cinema', 'clinic', 'community_centre', 'parking', 
-                                                  'bicycle_parking', 'motorcycle_parking', 'police', 'fire_station', 'fountain', 'place_of_worship', 
-                                                  'grave_yard', 'shelter', 'bank', 'embassy', 'fuel', 'bus_station', 'prison', 'university', 
-                                                  'school', 'college', 'kindergarten', 'hospital', 'ice_cream', 'pharmacy', 'doctors', 'dentist', 
-                                                  'atm', 'bicycle_rental', 'car_rental', 'car_wash', 'post_box', 'post_office',
-                                                  'recycling', 'telephone', 'emergency_phone', 'toilets', 'taxi', 'drinking_water', 'hunting_stand', 
-                                                  'nightclub', 'veterinary', 'social_facility', 'charging_station') THEN amenity ELSE NULL END,
-              'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 
-                                            'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', 
-                                            'hairdresser', 'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', 
-                                            'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', 
-                                            'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', 
-                                            'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', 
-                                            'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop 
-                              WHEN shop IN ('no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE 'other' END,
-              'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', 
-                                                  'pitch', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', 
-                                                  'picnic_table', 'dog_park') THEN leisure ELSE NULL END,
-              'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END,
-              'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 
-                                                  'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 
-                                                  'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 
-                                                  'construction', 'military') THEN landuse ELSE NULL END,
-              'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk') THEN man_made ELSE NULL END,
-              'natural_' || CASE WHEN "natural" IN ('wood', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath', 
-                                                    'grassland', 'scrub', 'beach', 'shoal', 'reef', 'glacier') THEN "natural" ELSE NULL END,
-              'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END,
-              'military_' || CASE WHEN military IN ('danger_area') THEN military ELSE NULL END,
-              'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END,
-              'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford') THEN highway ELSE NULL END,
-              'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END,
-              'waterway_' || CASE WHEN waterway IN ('dam') THEN waterway ELSE NULL END,
-              'tourism_' || CASE WHEN tourism IN ('viewpoint', 'attraction') THEN tourism ELSE NULL END
-            ) AS feature,
-            access,
-            name,
-            operator,
-            ref,
-            way_area,
-            CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building
-          FROM planet_osm_polygon
-          -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering
-          WHERE (aeroway IN ('gate', 'apron', 'helipad', 'aerodrome')
-              OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', 
-                             'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site')
-              OR amenity IS NOT NULL -- skip checking a huge list and use a null check
-              OR shop IS NOT NULL
-              OR leisure IS NOT NULL
-              OR landuse IS NOT NULL
-              OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk')
-              OR "natural" IS NOT NULL
-              OR place IN ('island', 'islet')
-              OR military IN ('danger_area')
-              OR historic IN ('memorial', 'monument', 'archaeological_site')
-              OR highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford')
-              OR power IN ('plant', 'station', 'generator', 'sub_station', 'substation')
-              OR boundary IN ('national_park')
-              OR waterway = 'dam')
-            AND (name IS NOT NULL
-                 OR (ref IS NOT NULL AND aeroway IN ('gate'))
-                )
-          ORDER BY way_area DESC
-        ) AS text_poly
-    properties:
-      minzoom: 10
-    advanced: {}
-  - id: "text-line"
-    name: "text-line"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-          way,
-            NULL as way_pixels,
-            COALESCE('man_made_' || man_made, 'waterway_' || waterway, 'natural_' || "natural") AS feature,
-            access,
-            name,
-            operator,
-            ref,
-            NULL AS way_area,
-            CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building
-          FROM planet_osm_line
-          WHERE (man_made IN ('pier', 'breakwater', 'groyne', 'embankment')
-              OR waterway IN ('dam', 'weir')
-              OR "natural" IN ('cliff'))
-            AND name IS NOT NULL
-        ) AS text_line
-    advanced: {}
-    properties:
-      minzoom: 10
-  - id: "text-point"
-    name: "text-point"
-    class: "text"
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      # Include values that are rendered as icon without label to prevent mismatch between icons and labels,
-      # see https://github.com/gravitystorm/openstreetmap-carto/pull/1349#issuecomment-77805678
-      table: |-
-        (SELECT
-            way,
-            way_pixels,
-            feature,
-            access,
-            CONCAT(
-                name,
-                CASE WHEN name IS NOT NULL AND elevation IS NOT NULL THEN E'\n' ELSE NULL END,
-                CASE WHEN elevation IS NOT NULL THEN CONCAT(REPLACE(ROUND(elevation)::TEXT, '-', U&'\2212'), U&'\00A0', 'm') ELSE NULL END
-            ) AS name,
-            CASE
-              WHEN "natural" IN ('peak', 'volcano', 'saddle') THEN elevation
-              ELSE NULL
-            END AS score,
-            operator,
-            ref,
-            way_area,
-            is_building
-          FROM
-            (SELECT
-                way,
-                NULL AS way_pixels,
-                COALESCE(
-                  'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,
-                  'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 
-                                                      'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END,
-                  'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 'theatre', 
-                                                      'courthouse', 'townhall', 'cinema', 'clinic', 'community_centre', 'parking', 'bicycle_parking', 
-                                                      'motorcycle_parking', 'police', 'fire_station', 'fountain', 'place_of_worship', 'grave_yard', 'shelter', 'bank', 
-                                                      'embassy', 'fuel', 'bus_station', 'prison', 'university', 'school', 'college', 'kindergarten', 'hospital', 
-                                                      'ice_cream', 'pharmacy', 'doctors', 'dentist', 'atm', 'bicycle_rental', 'car_rental',
-                                                      'car_wash', 'post_box', 'post_office', 'recycling', 'telephone', 'emergency_phone', 'toilets', 'taxi', 
-                                                      'drinking_water', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility',
-                                                      'charging_station') THEN amenity ELSE NULL END,
-                  'shop_' || CASE WHEN shop IN ('supermarket', 'bag','bakery', 'beauty', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 'fashion', 
-                                                'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', 'hairdresser', 
-                                                'hifi', 'ice_cream', 'car', 'car_repair', 'bicycle', 'mall', 'pet', 'photo', 'photo_studio', 'photography', 
-                                                'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk', 'mobile_phone', 'motorcycle', 'musical_instrument', 
-                                                'newsagent', 'optician', 'jewelry', 'jewellery', 'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', 
-                                                'greengrocer', 'farm', 'stationery', 'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', 
-                                                'variety_store', 'wine', 'outdoor', 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea') THEN shop 
-                                  WHEN shop IN ('no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE 'other' END,
-                  'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track',  
-                                                      'pitch','playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina',  
-                                                      'slipway', 'picnic_table', 'dog_park') THEN leisure ELSE NULL END,
-                  'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END,
-                  'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 
-                                                      'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 
-                                                      'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 
-                                                      'construction', 'military') THEN landuse ELSE NULL END,
-                  'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'obelisk') THEN man_made ELSE NULL END,
-                  'natural_' || CASE WHEN "natural" IN ('wood', 'peak', 'volcano', 'saddle', 'cave_entrance', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', 
-                                                        'scree', 'shingle', 'bare_rock', 'sand', 'heath', 'grassland', 'scrub', 'beach', 'glacier', 'tree') 
-                                                        THEN "natural" ELSE NULL END,
-                  'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END,
-                  'military_' || CASE WHEN military IN ('danger_area') THEN military ELSE NULL END,
-                  'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site') THEN historic ELSE NULL END,
-                  'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'elevator', 'ford') THEN highway ELSE NULL END,
-                  'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END,
-                  'waterway_' || CASE WHEN waterway IN ('dam', 'weir') THEN waterway ELSE NULL END,
-                  'tourism_' || CASE WHEN tourism IN ('viewpoint', 'attraction') THEN tourism ELSE NULL END,
-                  'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END,
-                  'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END
-                ) AS feature,
-                access,
-                name,
-                CASE
-                  WHEN "natural" IN ('peak', 'volcano', 'saddle') OR tourism = 'alpine_hut' OR amenity = 'shelter' THEN
-                    CASE
-                      WHEN ele ~ '^-?\d{1,4}(\.\d+)?$' THEN ele::NUMERIC
-                      ELSE NULL
-                    END
-                  ELSE NULL
-                END AS elevation,
-                "natural",
-                operator,
-                ref,
-                NULL AS way_area,
-                CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building
-              FROM planet_osm_point
-              -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering
-              WHERE (aeroway IN ('gate', 'apron', 'helipad', 'aerodrome')
-                  OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', 
-                                 'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site')
-                  OR amenity IS NOT NULL -- skip checking a huge list and use a null check
-                  OR shop IS NOT NULL
-                  OR leisure IS NOT NULL
-                  OR landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 
-                                 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'greenhouse_horticulture', 
-                                 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military')
-                  OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'cross', 'obelisk')
-                  OR "natural" IS NOT NULL
-                  OR place IN ('island', 'islet')
-                  OR military IN ('danger_area')
-                  OR historic IN ('memorial', 'monument', 'archaeological_site', 'wayside_cross')
-                  OR highway IN ('bus_stop', 'services', 'rest_area', 'elevator', 'ford')
-                  OR power IN ('plant', 'station', 'generator', 'sub_station', 'substation')
-                  OR boundary IN ('national_park')
-                  OR waterway IN ('dam', 'weir'))
-                AND (name IS NOT NULL
-                     OR (ele IS NOT NULL AND ("natural" IN ('peak', 'volcano', 'saddle') OR tourism = 'alpine_hut' OR amenity = 'shelter'))
-                     OR (ref IS NOT NULL AND aeroway IN ('gate'))
-                    )
-              ) AS p
-          ORDER BY score DESC NULLS LAST
-          ) AS text
-    properties:
-      minzoom: 10
-    advanced: {}
-  - id: "building-text"
-    name: "building-text"
-    class: ""
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            name,
-            way,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
-          FROM planet_osm_polygon
-          WHERE building IS NOT NULL
-            AND building NOT IN ('no')
-            AND name IS NOT NULL
-          ORDER BY way_area DESC
-        ) AS building_text
-    properties:
-      minzoom: 14
-    advanced: {}
-  - id: "interpolation"
-    name: "interpolation"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way
-          FROM planet_osm_line
-          WHERE "addr:interpolation" IS NOT NULL
-        ) AS interpolation
-    properties:
-      minzoom: 17
-    advanced: {}
-  - id: "addresses"
-    name: "addresses"
-    class: ""
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            "addr:housenumber" AS addr_housenumber,
-            "addr:housename" AS addr_housename,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
-          FROM planet_osm_polygon
-          WHERE (("addr:housenumber" IS NOT NULL) OR ("addr:housename" IS NOT NULL))
-            AND building IS NOT NULL
-        UNION ALL
-        SELECT
-            way,
-            "addr:housenumber" AS addr_housenumber,
-            "addr:housename" AS addr_housename,
-            NULL AS way_pixels
-          FROM planet_osm_point
-          WHERE ("addr:housenumber" IS NOT NULL) OR ("addr:housename" IS NOT NULL)
-          ORDER BY way_pixels DESC NULLS LAST
-        ) AS addresses
-    properties:
-      minzoom: 17
-    advanced: {}
-  - id: "water-lines-text"
-    name: "water-lines-text"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            waterway,
-            lock,
-            name,
-            intermittent,
-            CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel
-          FROM planet_osm_line
-          WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')
-            AND (tunnel IS NULL or tunnel != 'culvert')
-            AND name IS NOT NULL
-          ORDER BY z_order
-        ) AS water_lines_text
-    properties:
-      minzoom: 13
-    advanced: {}
-  - id: "ferry-routes-text"
-    name: "ferry-routes-text"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            name
-          FROM planet_osm_line
-          WHERE route = 'ferry'
-            AND name IS NOT NULL
-        ) AS ferry_routes_text
-    properties:
-      minzoom: 13
-    advanced: {}
-  - id: "admin-text"
-    name: "admin-text"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            name,
-            admin_level
-          FROM planet_osm_polygon
-          WHERE boundary = 'administrative'
-            AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10')
-            AND name IS NOT NULL
-          ORDER BY admin_level::integer ASC, way_area DESC
-        ) AS admin_text
-    properties:
-      minzoom: 16
-    advanced: {}
-  - id: "nature-reserve-text"
-    name: "nature-reserve-text"
-    class: ""
-    geometry: "linestring"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            name,
-            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
-          FROM planet_osm_polygon
-          WHERE (boundary = 'national_park' OR leisure = 'nature_reserve')
-            AND name IS NOT NULL
-        ) AS nature_reserve_text
-    properties:
-      minzoom: 13
-    advanced: {}
-  - id: "amenity-low-priority"
-    name: "amenity-low-priority"
-    class: "amenity-low-priority"
-    geometry: "point"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            COALESCE(
-              'highway_' || CASE WHEN highway IN ('mini_roundabout') THEN highway ELSE NULL END,
-              'railway_' || CASE WHEN railway IN ('level_crossing', 'crossing') THEN railway ELSE NULL END,
-              'amenity_' || CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'bench', 'waste_basket') THEN amenity ELSE NULL END,
-              'historic_' || CASE WHEN historic IN ('wayside_cross') THEN historic ELSE NULL END,
-              'man_made_' || CASE WHEN man_made IN ('cross') THEN man_made ELSE NULL END,
-              'barrier_' || CASE WHEN barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') THEN barrier ELSE NULL END
-            )  AS feature,
-            access,
-            CASE WHEN amenity='waste_basket' THEN 2 ELSE 1 END AS prio
-          FROM planet_osm_point p
-          WHERE highway IN ('mini_roundabout')
-             OR railway IN ('level_crossing', 'crossing')
-             OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'bench', 'waste_basket')
-             OR historic IN ('wayside_cross')
-             OR man_made IN ('cross')
-             OR barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block')
-          ORDER BY prio
-          ) AS amenity_low_priority
-    properties:
-      minzoom: 14
-    advanced: {}
-  - id: "amenity-low-priority-poly"
-    name: "amenity-low-priority-poly"
-    class: "amenity-low-priority"
-    geometry: "polygon"
-    <<: *extents
-    Datasource:
-      <<: *osm2pgsql
-      table: |-
-        (SELECT
-            way,
-            COALESCE(
-              'amenity_' || CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking') THEN amenity ELSE NULL END,
-              'barrier_' || CASE WHEN barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block') THEN barrier ELSE NULL END
-            )  AS feature,
-            access
-          FROM planet_osm_polygon p
-          WHERE amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking')
-             OR barrier IN ('bollard', 'gate', 'lift_gate', 'swing_gate', 'block')
-          ) AS amenity_low_priority_poly
-    properties:
-      minzoom: 14
-    advanced: {}
diff --git a/scripts/get-shapefiles.py b/scripts/get-shapefiles.py
new file mode 100755
index 0000000..32862f3
--- /dev/null
+++ b/scripts/get-shapefiles.py
@@ -0,0 +1,387 @@
+#!/usr/bin/env python
+
+# This script generates and populates the 'data' directory with all needed
+# shapefiles.
+
+from __future__ import (
+    division,
+    absolute_import,
+    print_function,
+    unicode_literals)
+import os
+import errno
+import tarfile
+import zipfile
+import subprocess
+import distutils.spawn
+import argparse
+import sys
+import tempfile
+import logging
+import time
+import email.utils
+
+if sys.version_info >= (3,):
+    import urllib.request as urllib2
+    import urllib.parse as urlparse
+else:
+    import urllib2
+    import urlparse
+
+data_dir = 'data'
+settings = {
+    # Keys 1, 2, 3, ... set the arg short-options and the related process
+    # ordering. Use > 0 to allow processing.
+    1: {
+        'directory': 'world_boundaries',
+        'url': 'http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz',  # noqa
+        'type': 'tgz',
+        'index': [
+            'world_bnd_m.shp',
+            'builtup_area.shp',
+            'places.shp',
+            'world_boundaries_m.shp'],
+        'long_opt': '--world-boundaries'
+    },
+
+    2: {
+        'directory': 'simplified-land-polygons-complete-3857',
+        'url': 'http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip',  # noqa
+        'type': 'zip',
+        'index': ['simplified_land_polygons.shp'],
+        'long_opt': '--simplified-land'
+    },
+
+    3: {
+        'directory': 'ne_110m_admin_0_boundary_lines_land',
+        'url': 'http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip',  # noqa
+        'type': 'zip_dir',
+        'index': ['ne_110m_admin_0_boundary_lines_land.shp'],
+        'long_opt': '--ne-admin'
+    },
+
+    4: {
+        'directory': 'land-polygons-split-3857',
+        'url': 'http://data.openstreetmapdata.com/land-polygons-split-3857.zip',  # noqa
+        'type': 'zip',
+        'index': ['land_polygons.shp'],
+        'long_opt': '--land-polygons'
+    },
+
+    5: {
+        'directory': 'antarctica-icesheet-polygons-3857',
+        'url': 'http://data.openstreetmapdata.com/antarctica-icesheet-polygons-3857.zip',  # noqa
+        'type': 'zip',
+        'index': ['icesheet_polygons.shp'],
+        'long_opt': '--icesheet-polygons'
+    },
+
+    6: {
+        'directory': 'antarctica-icesheet-outlines-3857',
+        'url': 'http://data.openstreetmapdata.com/antarctica-icesheet-outlines-3857.zip',  # noqa
+        'type': 'zip',
+        'index': ['icesheet_outlines.shp'],
+        'long_opt': '--icesheet-outlines'
+    }
+}
+
+u_prompt = True
+
+
+def download_file(
+    url,
+    desc=None,
+    option_force_update=False,
+        option_no_curl=False):
+    global u_prompt
+    try:
+        scheme, netloc, path, query, fragment = urlparse.urlsplit(url)
+        file_name = os.path.basename(path)
+        if not file_name:
+            file_name = 'downloaded.file'
+        if desc:
+            file_name = os.path.join(desc, file_name)
+
+        curl_used = 0
+        if not option_no_curl and distutils.spawn.find_executable("curl"):
+            curl_used = 1
+            sys.stdout.flush()
+            if os.path.exists(file_name) and not option_force_update:
+                if subprocess.call(
+                    ["curl", "-z", file_name, "-L", "-o", file_name, url],
+                        stderr=subprocess.STDOUT) != 0:
+                    sys.exit("\n\n   'curl' error: download failed.\n")
+                curl_used = 2
+            else:
+                if subprocess.call(
+                    ["curl", "-L", "-o", file_name, url],
+                        stderr=subprocess.STDOUT) != 0:
+                    sys.exit("\n\n   'curl' error: download failed.\n")
+            sys.stdout.flush()
+
+        u = urllib2.urlopen(url)
+        meta = u.info()
+
+        # Compare dates and sizes
+        local_file_modified = None
+        local_file_size = None
+        if os.path.exists(file_name):
+            local_file_modified = time.localtime((os.path.getmtime(file_name)))
+            local_file_size = int(os.path.getsize(file_name))
+        meta_func = meta.getheaders if hasattr(
+            meta, 'getheaders') else meta.get_all
+        host_file_modified = email.utils.parsedate(
+            meta_func("last-modified")[0])
+        meta_length = meta_func("Content-Length")
+        host_file_size = None
+        if meta_length:
+            host_file_size = int(meta_length[0])
+
+        # Do a file check control after using curl (which looks like not
+        # including it internally)
+        if curl_used == 2 and (host_file_size != local_file_size):
+            print(
+                "     Warning: file size differs. Downloading the file again.")
+            curl_used = 0
+        if curl_used > 0:
+            u.close()
+            return file_name
+
+        if (not option_force_update and os.path.exists(file_name) and
+                (host_file_modified <= local_file_modified) and
+                (host_file_size == local_file_size)):
+            print("     No newer file to download.", end="")
+            if u_prompt:
+                print(" (Use -u to force downloading file)", end="")
+                u_prompt = False
+            print()
+            u.close()
+            return file_name
+
+        with open(file_name, 'wb') as f:
+            print(" Bytes: {0:10}".format(host_file_size))
+
+            file_size_dl = 0
+            block_sz = 65536
+            while True:
+                buffer = u.read(block_sz)
+                if not buffer:
+                    if file_size_dl != host_file_size:
+                        sys.exit("\n\n   Error: download with invalid size.\n")
+                    break
+
+                file_size_dl += len(buffer)
+                f.write(buffer)
+
+                status = "{0:18}".format(file_size_dl)
+                if host_file_size:
+                    status += "   [{0:3.0f}%]".format(
+                        file_size_dl *
+                        100 /
+                        host_file_size)
+                status += chr(13)
+                print(status, end="")
+            f.close()
+            u.close()
+            os.utime(
+                file_name,
+                (time.mktime(host_file_modified),
+                    time.mktime(host_file_modified)))
+            print()
+
+        return file_name
+    except urllib2.HTTPError as e:
+        sys.exit(
+            "\n\n   Error: download failed. (error code: " +
+            str(e.code) +
+            ", error reason: " + e.reason + ")\n")
+    except Exception as e:
+        sys.exit("\n\n   Error: download failed.\n" + str(e) + "\n")
+
+
+def main():
+
+    # Option handling
+
+    parser = argparse.ArgumentParser(
+        epilog="This script generates and populates the '" + data_dir +
+        "' directory with all needed shapefiles, including indexing " +
+        " them through shapeindex.")
+    parser.add_argument(
+        '-c', "--check", dest='option_check_mode', action='store_true',
+        help="check whether the '" + data_dir + "' directory already exists")
+    parser.add_argument(
+        "-d", "--directory", dest="data_dir",
+        help="set the name of the data directory (default: '" +
+        data_dir + "')",
+        default=data_dir, metavar="<directory name>")
+    parser.add_argument(
+        '-e', "--no-extract", dest='option_no_extract', action='store_true',
+        help="do not populate target directories with the expansion " +
+        "of downloaded data")
+    parser.add_argument(
+        '-f', "--force", dest='option_force', action='store_true',
+        help="force continuing even if project.mml does not exist")
+    parser.add_argument(
+        '-l', "--no-curl", dest='option_no_curl', action='store_true',
+        help="do not use 'curl' even if available")
+    parser.add_argument(
+        '-n', "--no-download", dest='option_no_download', action='store_true',
+        help="do not download archive if already existing locally")
+    parser.add_argument(
+        '-p', "--pause", dest='option_pause_mode', action='store_true',
+        help="pause before starting")
+    parser.add_argument(
+        '-r', "--remove", dest='option_remove', action='store_true',
+        help="remove each downloaded archive after its expansion")
+    parser.add_argument(
+        '-s', "--no-shape", dest='option_no_shape', action='store_true',
+        help="do not run shapeindex")
+    parser.add_argument(
+        '-u', "--update", dest='option_force_update', action='store_true',
+        help="force downloading files even if not newer than the locally " +
+        "existing ones")
+    for element in sorted(settings):
+        parser.add_argument(
+            settings[element]['long_opt'],
+            dest='option_filter', action='append_const', const=element,
+            help="only process " + settings[element]['directory'])
+
+    args = parser.parse_args()
+
+    # Initial checks
+
+    if not args.option_no_shape and (
+            not distutils.spawn.find_executable("shapeindex")):
+        sys.exit(
+            """\n   Error: you need shapeindex (or shapeindex is not in the
+   PATH). Otherwise, use '-s' option to skip shapeindex
+   (indexing shapes is suggested for performance improvement).\n""")
+
+    if args.option_force:
+        os.chdir(os.path.dirname(__file__))
+    else:
+        os.chdir(os.path.join(os.path.dirname(__file__), '..'))
+        if not os.path.isfile("project.mml"):
+            sys.exit(
+                """\n   Error: project.mml not found.
+   Are you sure you are in the correct folder?
+   Otherwise, use '-f' option to go on creating or updating the '""" +
+                args.data_dir + """' directory
+   placed in the same path of this script.\n""")
+
+    if args.option_check_mode:
+        if os.path.isdir("data"):
+            sys.exit(
+                """\n   A directory named '""" + args.data_dir +
+                """' already exists.
+   Please consider renaming it.
+   Otherwise, remove '-c' option to allow updating.\n""")
+
+    if args.option_pause_mode:
+        print(
+            "\nThis script generates and populates the '" + args.data_dir +
+            "' directory with all needed shapefiles.\n")
+        try:
+            input(
+                "Press Enter to continue " +
+                "(remove '-p' option to avoid this message)...")
+        except Exception:
+            pass
+
+    print()
+    # Processing
+
+    for element in sorted(settings):
+
+        if (not args.option_filter or
+                (args.option_filter and
+                 element in args.option_filter)) and element > 0:
+
+            dir_name = settings[element]['directory']
+            dir_path = os.path.join(args.data_dir, dir_name)
+            path_name = os.path.join(
+                args.data_dir,
+                settings[element]['url'].rsplit('/', 1)[-1])
+
+            # Creating directory
+            if not os.path.exists(dir_path):
+                os.makedirs(dir_path)
+
+            # Downloading
+            if not args.option_no_download or not os.path.isfile(path_name):
+                print(str(element) + "-1. Downloading '" + dir_name + "'...")
+                file_name = download_file(
+                    settings[element]['url'], args.data_dir,
+                    args.option_force_update, args.option_no_curl)
+
+            # Expanding
+            if not args.option_no_extract:
+                sys.stdout.flush()
+                print()
+                print(
+                    str(element) + "-2. Expanding '" + dir_name + "'...",
+                    end="")
+                sys.stdout.flush()
+                if settings[element]['type'] == 'tgz':
+                    tar = tarfile.open(path_name)
+                    try:
+                        tar.extractall(args.data_dir)
+                    except Exception:
+                        sys.exit(" Failed (try with -u option).\n")
+                    tar.close()
+                elif settings[element]['type'] == 'zip':
+                    zip = zipfile.ZipFile(path_name)
+                    try:
+                        zip.extractall(args.data_dir)
+                    except Exception:
+                        sys.exit(" Failed (try with -u option).\n")
+                    zip.close()
+                elif settings[element]['type'] == 'zip_dir':
+                    zip = zipfile.ZipFile(path_name)
+                    try:
+                        zip.extractall(dir_path)
+                    except Exception:
+                        sys.exit(" Failed (try with -u option).\n")
+                    zip.close()
+                else:
+                    sys.exit(
+                        "\n\nInternal error: unmanaged 'type'='" +
+                        settings[element]['type'] + "'.\n")
+                sys.stdout.flush()
+                print(" Done.\n")
+
+            # Removing archive
+            if args.option_remove:
+                try:
+                    os.remove(path_name)
+                except OSError:
+                    pass
+
+            # Indexing
+            if not args.option_no_shape:
+                for item, index in enumerate(settings[element]['index']):
+                    if len(settings[element]['index']) == 1:
+                        print(str(element) + "-3" + ". Indexing '" +
+                              index + "'...")
+                    else:
+                        print(str(element) + "-3-" + str(
+                            item + 1) + ". Indexing '" + index + "'...")
+                    sys.stdout.flush()
+                    if (subprocess.call(["shapeindex", "--shape_files",
+                                        os.path.join(dir_path, index)],
+                                        stderr=subprocess.STDOUT) != 0):
+                        sys.exit("\n   Indexing error: shapeindex failed.\n")
+                    sys.stdout.flush()
+                    print()
+
+    # Finishing
+    print("...script completed.\n")
+
+if __name__ == '__main__':
+    try:
+        main()
+    except KeyboardInterrupt:
+        sys.exit("\n\n\nYou pressed Ctrl+C!\n")
+    except Exception as e:
+        sys.exit("\n   Error. " + str(e) + "\n")
diff --git a/scripts/travis_check_project_files b/scripts/travis_check_project_files
deleted file mode 100755
index ea451dd..0000000
--- a/scripts/travis_check_project_files
+++ /dev/null
@@ -1,15 +0,0 @@
-#/bin/sh
-if json=$(scripts/yaml2mml.py --check); then
-  echo -n "${json}" | diff -q project.mml -
-  ret=$?
-  if [ $ret -ne 0 ]; then
-    echo "project.yaml and project.mml are not in sync!" >&2
-    echo "You should only modify project.yaml, not project.mml and run scripts/yaml2mml.py before committing." >&2
-    echo "Read https://github.com/gravitystorm/openstreetmap-carto/blob/master/CONTRIBUTING.md#editing-layers for further information." >&2
-    exit $ret
-  fi
-else
-  echo "error with yaml2mml, is project.yaml valid?" >&2
-  exit 1
-fi
-
diff --git a/scripts/yaml2mml.py b/scripts/yaml2mml.py
deleted file mode 100755
index a284bf2..0000000
--- a/scripts/yaml2mml.py
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env python
-
-from __future__ import print_function
-import argparse
-import json
-import os
-import sys
-import yaml
-
-parser = argparse.ArgumentParser(description='Keeps project files in sync by converting project.yaml to project.mml.')
-parser.add_argument('--check', dest='check',
-                    help='write generated JSON to stdout instead to project.mml',
-                    required=False, action='store_true', default=False)
-args = parser.parse_args()
-
-yaml_path = os.path.join(os.path.dirname(__file__), '../project.yaml')
-mml_path = os.path.join(os.path.dirname(__file__), '../project.mml')
-
-try:
-    yaml_file = open(yaml_path)
-    yaml = yaml.safe_load(yaml_file)
-    yaml_file.close()
-
-    try:
-        if not args.check:
-            mml_file = open(mml_path, 'wb')
-            json.dump(yaml, mml_file, indent=2, separators=(',', ': '))
-            mml_file.close()
-        else:
-            json.dump(yaml, sys.stdout, indent=2, separators=(',', ': '))
-    except IOError:
-        print('Could not save MML file. Aborting.')
-        sys.exit(1)
-except IOError:
-    print('Could not read YAML file. Aborting.')
-    sys.exit(1)
diff --git a/stations.mss b/stations.mss
index a1cf20f..6b9b226 100644
--- a/stations.mss
+++ b/stations.mss
@@ -7,6 +7,17 @@
     marker-placement: interior;
     marker-fill: @transportation-icon;
     marker-clip: false;
+    [zoom >= 19] {
+      text-name: [ref];
+      text-face-name: @book-fonts;
+      text-size: 10;
+      text-fill: @transportation-icon;
+      text-dy: 10;
+      text-halo-radius: @standard-halo-radius * 1.5;
+      text-halo-fill: @standard-halo-fill;
+      text-wrap-width: 0;
+      text-placement: interior;
+    }
   }
 
   [railway = 'station'][zoom >= 12] {
diff --git a/style.mss b/style.mss
index 4c05199..c9e3838 100644
--- a/style.mss
+++ b/style.mss
@@ -28,11 +28,12 @@ but there are some exceptions
     See also https://github.com/gravitystorm/openstreetmap-carto/issues/2208)
 
 2. Noto provides three variants of Arabic: Noto Kufi Arabic, Noto Naskh Arabic
-and Noto Nastaliq Urdu. Noto Kufi Arabic is the one that is most similiar to a
-Sans style, so this one is used while both other variants are ignored. Arabic
-fonts are placed behind Sans fonts because they might re-define some commonly
-used signs like parenthesis or quotation marks, and the arabic design should
-not overwrite the standard design.
+and Noto Nastaliq Urdu. Naskh is the most commonly used style of Arabic.
+Furthermore, Noto Naskh is the Arabic font of the Noto family with the greatest
+coverage and the only one that has an UI variant. Therefor this style uses
+Noto Naskh Arabic UI. The Arabic fonts are placed behind Sans fonts because
+they might re-define some commonly used signs like parenthesis or quotation
+marks, and the arabic design should not overwrite the standard design.
 
 3. Noto provides two variants of Emoji: Noto Color Emoji and Noto Emoji. The
 colour variant is a SVG flavoured OpenType font that contains coloured emojis.
@@ -111,7 +112,7 @@ A regular style.
                 "Noto Sans Vai Regular",
                 "Noto Sans Yi Regular",
 
-                "Noto Kufi Arabic Regular",
+                "Noto Naskh Arabic UI Regular",
 
                 "Noto Emoji Regular",
 
@@ -188,9 +189,9 @@ regular text and can be used for emphasis. Fallback is a regular style.
                 "Noto Sans Vai Regular",
                 "Noto Sans Yi Regular",
 
-                "Noto Kufi Arabic Bold",
+                "Noto Naskh Arabic UI Bold",
 
-                "Noto Kufi Arabic Regular",
+                "Noto Naskh Arabic UI Regular",
 
                 "Noto Emoji Regular",
 
@@ -263,7 +264,7 @@ For a considerable number of labels this style will make no difference to the re
                 "Noto Sans Vai Regular",
                 "Noto Sans Yi Regular",
 
-                "Noto Kufi Arabic Regular",
+                "Noto Naskh Arabic UI Regular",
 
                 "Noto Emoji Regular",
 
diff --git a/symbols/place/place-4-z7.svg b/symbols/place/place-4-z7.svg
index 4130e8d..9e80620 100644
--- a/symbols/place/place-4-z7.svg
+++ b/symbols/place/place-4-z7.svg
@@ -1,30 +1,10 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    version="1.1"
    width="4"
-   height="4"
-   id="svg2">
-  <defs
-     id="defs4" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
+   height="4">
   <path
-     style="fill:#fdfdfc;fill-opacity:1;stroke:#424236;stroke-width:0.49999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="path2987"
-     d="m 3.7500001,2.000001 a 1.7500001,1.7500007 0 0 1 -3.50000009,0 1.7500001,1.7500007 0 1 1 3.50000009,0 z" />
+     style="fill:#fdfdfc;stroke:#424236;stroke-width:0.5"
+     d="m 3.75,2 a 1.75,1.75 0 0 1 -3.5,0 1.75,1.75 0 1 1 3.5,0 z" />
 </svg>
diff --git a/symbols/place/place-4.svg b/symbols/place/place-4.svg
index 1150401..627c7c6 100644
--- a/symbols/place/place-4.svg
+++ b/symbols/place/place-4.svg
@@ -1,30 +1,10 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    version="1.1"
    width="4"
-   height="4"
-   id="svg2">
-  <defs
-     id="defs4" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
+   height="4">
   <path
-     style="fill:#fdfdfc;fill-opacity:1;stroke:#575749;stroke-width:0.49999997;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="path2987"
-     d="m 3.7500001,2.000001 a 1.7500001,1.7500007 0 0 1 -3.50000009,0 1.7500001,1.7500007 0 1 1 3.50000009,0 z" />
+     style="fill:#fdfdfc;stroke:#575749;stroke-width:0.5"
+     d="m 3.75,2 a 1.75,1.75 0 0 1 -3.5,0 1.75,1.75 0 1 1 3.5,0 z" />
 </svg>
diff --git a/symbols/place/place-6-z7.svg b/symbols/place/place-6-z7.svg
index c4fe4ef..9ef66b7 100644
--- a/symbols/place/place-6-z7.svg
+++ b/symbols/place/place-6-z7.svg
@@ -1,30 +1,9 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
-   id="svg2"
    height="6"
-   width="6"
-   version="1.1">
-  <defs
-     id="defs4" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
+   width="6">
   <path
-     d="M 5.6,3 A 2.6,2.6000012 0 0 1 0.39999998,3 2.6,2.6000012 0 1 1 5.6,3 Z"
-     id="path2987"
-     style="fill:#f9f9f7;fill-opacity:1;stroke:#6f6f5b;stroke-width:0.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    style="fill:#f9f9f7;stroke:#6f6f5b;stroke-width:0.8"
+     d="M 5.6,3 A 2.6,2.6 0 0 1 0.4,3 2.6,2.6 0 1 1 5.6,3 Z"/>
 </svg>
diff --git a/symbols/place/place-6.svg b/symbols/place/place-6.svg
index e0abe6d..7f83b77 100644
--- a/symbols/place/place-6.svg
+++ b/symbols/place/place-6.svg
@@ -1,30 +1,10 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    version="1.1"
    width="6"
-   height="6"
-   id="svg2">
-  <defs
-     id="defs4" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
+   height="6">
   <path
-     style="fill:#f9f9f7;fill-opacity:1;stroke:#7e7e6a;stroke-width:0.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="path2987"
-     d="M 5.6,3 A 2.6,2.6000012 0 0 1 0.39999998,3 2.6,2.6000012 0 1 1 5.6,3 Z" />
+     style="fill:#f9f9f7;stroke:#7e7e6a;stroke-width:0.8"
+     d="M 5.6,3 A 2.6,2.6 0 0 1 0.4,3 2.6,2.6 0 1 1 5.6,3 Z" />
 </svg>
diff --git a/symbols/place/place-capital-6.svg b/symbols/place/place-capital-6.svg
index 645aeb5..8d81dc4 100644
--- a/symbols/place/place-capital-6.svg
+++ b/symbols/place/place-capital-6.svg
@@ -1,34 +1,13 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    version="1.1"
    width="6"
-   height="6"
-   id="svg2">
-  <defs
-     id="defs4" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
+   height="6">
   <path
-     style="fill:#fdfdfc;fill-opacity:1;stroke:#575749;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-     id="path2987"
-     d="m 5.5,3.000081 a 2.5,2.5 0 0 1 -5.00000001,0 2.5,2.5 0 1 1 5.00000001,0 z" />
+     style="fill:#fdfdfc;stroke:#575749;stroke-width:1"
+     d="m 5.5,3 a 2.5,2.5 0 0 1 -5,0 2.5,2.5 0 1 1 5,0 z" />
   <path
-     d="M 4,3 A 1,1 0 0 1 2,3 1,1 0 1 1 4,3 z"
-     id="path2986"
-     style="fill:#575749;fill-opacity:1;stroke:none" />
+     style="fill:#575749;stroke:none"
+     d="M 4,3 A 1,1 0 0 1 2,3 1,1 0 1 1 4,3 z" />
 </svg>
diff --git a/symbols/place/place-capital-8.svg b/symbols/place/place-capital-8.svg
index e385e1a..42a9906 100644
--- a/symbols/place/place-capital-8.svg
+++ b/symbols/place/place-capital-8.svg
@@ -1,38 +1,13 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    version="1.1"
    width="8"
-   height="8"
-   id="svg2">
-  <defs
-     id="defs4" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="matrix(1.5057013,0,0,1.5010517,-0.0107513,-1571.7666)"
-     id="layer1">
-    <path
-       d="m 4.9210516,1049.7756 a 2.2573419,2.2657569 0 0 1 -4.5146837,0 2.2573419,2.2657569 0 1 1 4.5146837,0 z"
-       id="path2987"
-       style="fill:#fdfdfc;fill-opacity:1;stroke:#525244;stroke-width:0.79820418;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-  </g>
+   height="8">
   <path
-     d="m 5.5,4 a 1.5,1.5 0 0 1 -3,0 1.5,1.5 0 1 1 3,0 z"
-     id="path2986"
-     style="fill:#525244;fill-opacity:1;stroke:none" />
+     style="fill:#fdfdfc;stroke:#525244;stroke-width:1"
+     d="m 7.5,4 a 3.5,3.5 0 0 1 -7,0 3.5,3.5 0 1 1 7,0 z" />
+  <path
+     style="fill:#525244;fill-opacity:1;stroke:none"
+     d="m 5.5,4 a 1.5,1.5 0 0 1 -3,0 1.5,1.5 0 1 1 3,0 z" />
 </svg>
diff --git a/symbols/wilderness_hut.svg b/symbols/wilderness_hut.svg
new file mode 100644
index 0000000..6ae10e9
--- /dev/null
+++ b/symbols/wilderness_hut.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="14"
+   height="14"
+   viewBox="0 0 14 14"
+   id="svg2">
+  <metadata
+     id="metadata8">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs6" />
+  <rect
+     width="14"
+     height="14"
+     x="0"
+     y="0"
+     id="canvas"
+     style="fill:none;stroke:none;visibility:hidden" />
+  <path
+     id="wilderness-hut"
+     d="M 8,0 8,2 7,1.5 0,5 0,7 1.5,6.3496094 1.5,14 3,14 3,5.6992188 7,4 8,4.4257812 8,9 4.5,9 c 0.025314,1.65157 -0.034277,3.38952 0,5 l 5,0 C 9.518206,11.046736 9.50603,8.0503867 9.5,5.0625 L 11,5.6992188 11,14 12.5,14 12.5,6.3496094 14,7 14,5 9.5,2.75 C 9.4984477,1.8314022 9.5,0.9158261 9.5,0 L 8,0 Z M 7,11 c 0,0 1,0 1,1 l 0,1 -2,0 0,-1 c 0,-1 1,-1 1,-1 z" style="fill:#000000;fill-opacity:1;stroke:none" />
+</svg>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/openstreetmap-carto.git



More information about the Pkg-grass-devel mailing list