[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