summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--CARTOGRAPHY.md37
-rw-r--r--LICENSE.txt15
-rw-r--r--README.md153
-rw-r--r--TODO.md28
-rw-r--r--addressing.mss49
-rw-r--r--admin.mss117
-rw-r--r--aerialways.mss20
-rw-r--r--amenity-points.mss1148
-rw-r--r--amenity-symbols.mss112
-rw-r--r--buildings.mss52
-rw-r--r--citywalls.mss24
-rw-r--r--ferry-routes.mss11
-rwxr-xr-xget-shapefiles.sh65
-rw-r--r--landcover.mss436
-rw-r--r--openstreetmap-carto.style226
-rw-r--r--placenames.mss142
-rw-r--r--power.mss34
-rw-r--r--project.mml1757
-rw-r--r--roads.mss2449
-rw-r--r--shapefiles.mss37
-rw-r--r--stations.mss54
-rw-r--r--style.mss12
-rw-r--r--symbols/aerodrome.p.16.pngbin0 -> 377 bytes
-rw-r--r--symbols/aerodrome.pngbin0 -> 888 bytes
-rw-r--r--symbols/aiga_parking1.pngbin0 -> 1542 bytes
-rw-r--r--symbols/allotments.pngbin0 -> 911 bytes
-rw-r--r--symbols/alpinehut.p.16.pngbin0 -> 565 bytes
-rw-r--r--symbols/amenity_court.p.20.pngbin0 -> 802 bytes
-rw-r--r--symbols/amenity_prison.p.20.pngbin0 -> 417 bytes
-rw-r--r--symbols/arrow.pngbin0 -> 320 bytes
-rw-r--r--symbols/arrow_back.pngbin0 -> 353 bytes
-rw-r--r--symbols/atm.pngbin0 -> 222 bytes
-rw-r--r--symbols/atm2.p.16.pngbin0 -> 437 bytes
-rw-r--r--symbols/bandb.p.20.pngbin0 -> 398 bytes
-rw-r--r--symbols/bank2.p.16.pngbin0 -> 410 bytes
-rw-r--r--symbols/bar.p.20.pngbin0 -> 459 bytes
-rw-r--r--symbols/beach.pngbin0 -> 162 bytes
-rw-r--r--symbols/biergarten.p.16.pngbin0 -> 501 bytes
-rw-r--r--symbols/bollard.pngbin0 -> 104 bytes
-rw-r--r--symbols/buddhist.pngbin0 -> 406 bytes
-rw-r--r--symbols/bus_station.n.16.pngbin0 -> 552 bytes
-rw-r--r--symbols/bus_stop.p.12.pngbin0 -> 353 bytes
-rw-r--r--symbols/bus_stop.pngbin0 -> 904 bytes
-rw-r--r--symbols/bus_stop_small.pngbin0 -> 95 bytes
-rw-r--r--symbols/cable_car.pngbin0 -> 229 bytes
-rw-r--r--symbols/cafe.p.16.pngbin0 -> 361 bytes
-rw-r--r--symbols/camping.n.16.pngbin0 -> 517 bytes
-rw-r--r--symbols/car_share.p.16.pngbin0 -> 489 bytes
-rw-r--r--symbols/caravan_park.p.24.pngbin0 -> 486 bytes
-rw-r--r--symbols/cemetery_jewish.18.pngbin0 -> 400 bytes
-rw-r--r--symbols/chair_lift.pngbin0 -> 230 bytes
-rw-r--r--symbols/chalet.p.16.pngbin0 -> 440 bytes
-rw-r--r--symbols/christian3.p.14.pngbin0 -> 252 bytes
-rw-r--r--symbols/cinema.p.24.pngbin0 -> 791 bytes
-rw-r--r--symbols/cliff.pngbin0 -> 26214 bytes
-rw-r--r--symbols/cliff2.pngbin0 -> 26214 bytes
-rw-r--r--symbols/communications.p.20.pngbin0 -> 445 bytes
-rw-r--r--symbols/danger.pngbin0 -> 146 bytes
-rw-r--r--symbols/department_store.p.16.pngbin0 -> 993 bytes
-rw-r--r--symbols/embassy.pngbin0 -> 2893 bytes
-rw-r--r--symbols/fast_food.pngbin0 -> 3091 bytes
-rw-r--r--symbols/firestation.p.16.pngbin0 -> 479 bytes
-rw-r--r--symbols/florist.p.16.pngbin0 -> 422 bytes
-rw-r--r--symbols/food_bar.p.16.pngbin0 -> 376 bytes
-rw-r--r--symbols/food_drinkingtap.p.20.pngbin0 -> 386 bytes
-rw-r--r--symbols/forest.pngbin0 -> 190 bytes
-rw-r--r--symbols/fuel.p.16.pngbin0 -> 306 bytes
-rw-r--r--symbols/gate.pngbin0 -> 106 bytes
-rw-r--r--symbols/gate2.pngbin0 -> 111 bytes
-rw-r--r--symbols/glacier.pngbin0 -> 122 bytes
-rw-r--r--symbols/glacier2.pngbin0 -> 199 bytes
-rw-r--r--symbols/grave_yard.pngbin0 -> 291 bytes
-rw-r--r--symbols/grave_yard_generic.pngbin0 -> 1013 bytes
-rw-r--r--symbols/guest_house.p.16.pngbin0 -> 503 bytes
-rw-r--r--symbols/halt.pngbin0 -> 94 bytes
-rw-r--r--symbols/helipad.p.16.pngbin0 -> 519 bytes
-rw-r--r--symbols/hindu.pngbin0 -> 464 bytes
-rw-r--r--symbols/hospital.p.16.pngbin0 -> 557 bytes
-rw-r--r--symbols/hospital.pngbin0 -> 491 bytes
-rw-r--r--symbols/hostel.p.20.pngbin0 -> 539 bytes
-rw-r--r--symbols/hotel2.p.20.pngbin0 -> 368 bytes
-rw-r--r--symbols/information.p.16.pngbin0 -> 294 bytes
-rw-r--r--symbols/islamic3.p.16.pngbin0 -> 387 bytes
-rw-r--r--symbols/jewish3.p.16.pngbin0 -> 397 bytes
-rw-r--r--symbols/landfill.pngbin0 -> 122 bytes
-rw-r--r--symbols/level_crossing.pngbin0 -> 124 bytes
-rw-r--r--symbols/level_crossing2.pngbin0 -> 154 bytes
-rw-r--r--symbols/library.p.20.pngbin0 -> 715 bytes
-rw-r--r--symbols/liftgate.pngbin0 -> 166 bytes
-rw-r--r--symbols/lighthouse.p.20.pngbin0 -> 487 bytes
-rw-r--r--symbols/lock_gate.pngbin0 -> 172 bytes
-rw-r--r--symbols/london-tube-24.pngbin0 -> 621 bytes
-rw-r--r--symbols/marsh.pngbin0 -> 621 bytes
-rw-r--r--symbols/memorial.pngbin0 -> 3055 bytes
-rw-r--r--symbols/military_red_hatch.pngbin0 -> 132 bytes
-rw-r--r--symbols/mini_round.pngbin0 -> 26852 bytes
-rw-r--r--symbols/mosque.pngbin0 -> 1023 bytes
-rw-r--r--symbols/mot_shield1.pngbin0 -> 412 bytes
-rw-r--r--symbols/mot_shield2.pngbin0 -> 439 bytes
-rw-r--r--symbols/mot_shield3.pngbin0 -> 441 bytes
-rw-r--r--symbols/mot_shield4.pngbin0 -> 445 bytes
-rw-r--r--symbols/mot_shield5.pngbin0 -> 446 bytes
-rw-r--r--symbols/mot_shield6.pngbin0 -> 447 bytes
-rw-r--r--symbols/mot_shield7.pngbin0 -> 447 bytes
-rw-r--r--symbols/mot_shield8.pngbin0 -> 450 bytes
-rw-r--r--symbols/motel.p.20.pngbin0 -> 657 bytes
-rw-r--r--symbols/motorway_shield1.pngbin0 -> 176 bytes
-rw-r--r--symbols/motorway_shield2.pngbin0 -> 256 bytes
-rw-r--r--symbols/motorway_shield3.pngbin0 -> 251 bytes
-rw-r--r--symbols/motorway_shield4.pngbin0 -> 239 bytes
-rw-r--r--symbols/motorway_shield5.pngbin0 -> 205 bytes
-rw-r--r--symbols/motorway_shield6.pngbin0 -> 207 bytes
-rw-r--r--symbols/mud.pngbin0 -> 104 bytes
-rw-r--r--symbols/museum.p.16.pngbin0 -> 311 bytes
-rw-r--r--symbols/nature_reserve.pngbin0 -> 141 bytes
-rw-r--r--symbols/nature_reserve2.pngbin0 -> 170 bytes
-rw-r--r--symbols/nature_reserve2T.pngbin0 -> 246 bytes
-rw-r--r--symbols/nature_reserve5.pngbin0 -> 341 bytes
-rw-r--r--symbols/nature_reserve6.pngbin0 -> 365 bytes
-rw-r--r--symbols/nature_reserveT.pngbin0 -> 209 bytes
-rw-r--r--symbols/orchard.pngbin0 -> 110 bytes
-rw-r--r--symbols/parking.p.16.pngbin0 -> 312 bytes
-rw-r--r--symbols/parking.pngbin0 -> 409 bytes
-rw-r--r--symbols/parking_private.p.16.pngbin0 -> 377 bytes
-rw-r--r--symbols/peak.pngbin0 -> 119 bytes
-rw-r--r--symbols/pharmacy.p.16.pngbin0 -> 341 bytes
-rw-r--r--symbols/picnic.p.16.pngbin0 -> 409 bytes
-rw-r--r--symbols/pint.pngbin0 -> 486 bytes
-rw-r--r--symbols/place_of_worship.pngbin0 -> 209 bytes
-rw-r--r--symbols/place_of_worship3.p.16.pngbin0 -> 190 bytes
-rw-r--r--symbols/place_of_worship3.pngbin0 -> 103 bytes
-rw-r--r--symbols/playground.p.20.pngbin0 -> 575 bytes
-rw-r--r--symbols/poi_cave.p.16.pngbin0 -> 270 bytes
-rw-r--r--symbols/police.p.16.pngbin0 -> 657 bytes
-rw-r--r--symbols/post_box.p.16.pngbin0 -> 367 bytes
-rw-r--r--symbols/post_box.pngbin0 -> 337 bytes
-rw-r--r--symbols/post_office.p.16.pngbin0 -> 494 bytes
-rw-r--r--symbols/post_office.pngbin0 -> 413 bytes
-rw-r--r--symbols/postoffice.pngbin0 -> 297 bytes
-rw-r--r--symbols/power_line.pngbin0 -> 131 bytes
-rw-r--r--symbols/power_pole.pngbin0 -> 94 bytes
-rw-r--r--symbols/power_tower.pngbin0 -> 115 bytes
-rw-r--r--symbols/power_tower_3x3.pngbin0 -> 933 bytes
-rw-r--r--symbols/power_tower_5x5.pngbin0 -> 947 bytes
-rw-r--r--symbols/power_wind.pngbin0 -> 638 bytes
-rw-r--r--symbols/pri_shield1.pngbin0 -> 422 bytes
-rw-r--r--symbols/pri_shield2.pngbin0 -> 431 bytes
-rw-r--r--symbols/pri_shield3.pngbin0 -> 433 bytes
-rw-r--r--symbols/pri_shield4.pngbin0 -> 437 bytes
-rw-r--r--symbols/pri_shield5.pngbin0 -> 439 bytes
-rw-r--r--symbols/pri_shield6.pngbin0 -> 440 bytes
-rw-r--r--symbols/pri_shield7.pngbin0 -> 440 bytes
-rw-r--r--symbols/pri_shield8.pngbin0 -> 442 bytes
-rw-r--r--symbols/primary_shield1.pngbin0 -> 175 bytes
-rw-r--r--symbols/primary_shield2.pngbin0 -> 181 bytes
-rw-r--r--symbols/primary_shield3.pngbin0 -> 181 bytes
-rw-r--r--symbols/primary_shield4.pngbin0 -> 197 bytes
-rw-r--r--symbols/primary_shield5.pngbin0 -> 197 bytes
-rw-r--r--symbols/primary_shield6.pngbin0 -> 199 bytes
-rw-r--r--symbols/primary_shield7.pngbin0 -> 199 bytes
-rw-r--r--symbols/primary_shield8.pngbin0 -> 207 bytes
-rw-r--r--symbols/pub.p.16.pngbin0 -> 433 bytes
-rw-r--r--symbols/pub.pngbin0 -> 307 bytes
-rw-r--r--symbols/quarry.pngbin0 -> 131 bytes
-rw-r--r--symbols/quarry2.pngbin0 -> 139 bytes
-rw-r--r--symbols/recycle.pngbin0 -> 1118 bytes
-rw-r--r--symbols/recycling.p.16.pngbin0 -> 562 bytes
-rw-r--r--symbols/recycling.pngbin0 -> 645 bytes
-rw-r--r--symbols/rental_bicycle.p.20.pngbin0 -> 802 bytes
-rw-r--r--symbols/restaurant.p.16.pngbin0 -> 502 bytes
-rw-r--r--symbols/school.pngbin0 -> 3136 bytes
-rw-r--r--symbols/scrub.pngbin0 -> 166 bytes
-rw-r--r--symbols/sec_shield1.pngbin0 -> 422 bytes
-rw-r--r--symbols/sec_shield2.pngbin0 -> 431 bytes
-rw-r--r--symbols/sec_shield3.pngbin0 -> 433 bytes
-rw-r--r--symbols/sec_shield4.pngbin0 -> 437 bytes
-rw-r--r--symbols/sec_shield5.pngbin0 -> 439 bytes
-rw-r--r--symbols/sec_shield6.pngbin0 -> 440 bytes
-rw-r--r--symbols/sec_shield7.pngbin0 -> 440 bytes
-rw-r--r--symbols/sec_shield8.pngbin0 -> 442 bytes
-rw-r--r--symbols/secondary_shield1.pngbin0 -> 168 bytes
-rw-r--r--symbols/secondary_shield2.pngbin0 -> 174 bytes
-rw-r--r--symbols/secondary_shield3.pngbin0 -> 176 bytes
-rw-r--r--symbols/secondary_shield4.pngbin0 -> 191 bytes
-rw-r--r--symbols/secondary_shield5.pngbin0 -> 194 bytes
-rw-r--r--symbols/secondary_shield6.pngbin0 -> 196 bytes
-rw-r--r--symbols/secondary_shield7.pngbin0 -> 195 bytes
-rw-r--r--symbols/secondary_shield8.pngbin0 -> 202 bytes
-rw-r--r--symbols/shelter2.p.16.pngbin0 -> 571 bytes
-rw-r--r--symbols/shinto.pngbin0 -> 413 bytes
-rw-r--r--symbols/shop_bakery.p.16.pngbin0 -> 441 bytes
-rw-r--r--symbols/shop_butcher.pngbin0 -> 780 bytes
-rw-r--r--symbols/shop_clothes.p.16.pngbin0 -> 312 bytes
-rw-r--r--symbols/shop_convenience.p.16.pngbin0 -> 373 bytes
-rw-r--r--symbols/shop_diy.p.16.pngbin0 -> 383 bytes
-rw-r--r--symbols/shop_hairdresser.p.16.pngbin0 -> 472 bytes
-rw-r--r--symbols/shop_supermarket.p.16.pngbin0 -> 425 bytes
-rw-r--r--symbols/shopping_bicycle.p.16.pngbin0 -> 522 bytes
-rw-r--r--symbols/shopping_car.p.16.pngbin0 -> 438 bytes
-rw-r--r--symbols/shopping_car_repair.p.16.pngbin0 -> 457 bytes
-rw-r--r--symbols/sikh.pngbin0 -> 1297 bytes
-rw-r--r--symbols/sikh3.p.16.pngbin0 -> 400 bytes
-rw-r--r--symbols/sosphone.pngbin0 -> 508 bytes
-rw-r--r--symbols/spring.pngbin0 -> 108 bytes
-rw-r--r--symbols/station.pngbin0 -> 95 bytes
-rw-r--r--symbols/station_disused.pngbin0 -> 95 bytes
-rw-r--r--symbols/station_small.pngbin0 -> 95 bytes
-rw-r--r--symbols/synagogue.pngbin0 -> 376 bytes
-rw-r--r--symbols/taoist.pngbin0 -> 536 bytes
-rw-r--r--symbols/telephone.p.16.pngbin0 -> 444 bytes
-rw-r--r--symbols/ter_shield1.pngbin0 -> 422 bytes
-rw-r--r--symbols/ter_shield2.pngbin0 -> 431 bytes
-rw-r--r--symbols/ter_shield3.pngbin0 -> 433 bytes
-rw-r--r--symbols/ter_shield4.pngbin0 -> 437 bytes
-rw-r--r--symbols/ter_shield5.pngbin0 -> 439 bytes
-rw-r--r--symbols/ter_shield6.pngbin0 -> 440 bytes
-rw-r--r--symbols/ter_shield7.pngbin0 -> 440 bytes
-rw-r--r--symbols/ter_shield8.pngbin0 -> 442 bytes
-rw-r--r--symbols/tertiary_shield1.pngbin0 -> 176 bytes
-rw-r--r--symbols/tertiary_shield2.pngbin0 -> 182 bytes
-rw-r--r--symbols/tertiary_shield3.pngbin0 -> 184 bytes
-rw-r--r--symbols/tertiary_shield4.pngbin0 -> 204 bytes
-rw-r--r--symbols/tertiary_shield5.pngbin0 -> 204 bytes
-rw-r--r--symbols/tertiary_shield6.pngbin0 -> 206 bytes
-rw-r--r--symbols/tertiary_shield7.pngbin0 -> 206 bytes
-rw-r--r--symbols/tertiary_shield8.pngbin0 -> 214 bytes
-rw-r--r--symbols/theatre.p.20.pngbin0 -> 785 bytes
-rw-r--r--symbols/toilets.p.20.pngbin0 -> 586 bytes
-rw-r--r--symbols/tourist_archaeological2.glow.24.pngbin0 -> 1134 bytes
-rw-r--r--symbols/tourist_memorial.p.20.pngbin0 -> 533 bytes
-rw-r--r--symbols/tower.pngbin0 -> 327 bytes
-rw-r--r--symbols/tower_water.p.20.pngbin0 -> 477 bytes
-rw-r--r--symbols/traffic_light.pngbin0 -> 1169 bytes
-rw-r--r--symbols/transport_ford.p.16.pngbin0 -> 490 bytes
-rw-r--r--symbols/transport_slipway.p.20.pngbin0 -> 604 bytes
-rw-r--r--symbols/tree.pngbin0 -> 102 bytes
-rw-r--r--symbols/tree2.pngbin0 -> 120 bytes
-rw-r--r--symbols/tru_shield1.pngbin0 -> 422 bytes
-rw-r--r--symbols/tru_shield2.pngbin0 -> 431 bytes
-rw-r--r--symbols/tru_shield3.pngbin0 -> 433 bytes
-rw-r--r--symbols/tru_shield4.pngbin0 -> 437 bytes
-rw-r--r--symbols/tru_shield5.pngbin0 -> 441 bytes
-rw-r--r--symbols/tru_shield6.pngbin0 -> 440 bytes
-rw-r--r--symbols/tru_shield7.pngbin0 -> 440 bytes
-rw-r--r--symbols/tru_shield8.pngbin0 -> 442 bytes
-rw-r--r--symbols/trunk_shield1.pngbin0 -> 175 bytes
-rw-r--r--symbols/trunk_shield2.pngbin0 -> 181 bytes
-rw-r--r--symbols/trunk_shield3.pngbin0 -> 184 bytes
-rw-r--r--symbols/trunk_shield4.pngbin0 -> 202 bytes
-rw-r--r--symbols/trunk_shield5.pngbin0 -> 202 bytes
-rw-r--r--symbols/trunk_shield6.pngbin0 -> 205 bytes
-rw-r--r--symbols/trunk_shield7.pngbin0 -> 204 bytes
-rw-r--r--symbols/trunk_shield8.pngbin0 -> 212 bytes
-rw-r--r--symbols/view_point.p.16.pngbin0 -> 636 bytes
-rw-r--r--symbols/vineyard.pngbin0 -> 149 bytes
-rw-r--r--symbols/volcano.pngbin0 -> 264 bytes
-rw-r--r--symbols/walking.n.12.pngbin0 -> 372 bytes
-rw-r--r--symbols/windmill.pngbin0 -> 186 bytes
-rw-r--r--symbols/zoo.pngbin0 -> 129 bytes
-rw-r--r--water-features.mss72
-rw-r--r--water.mss313
262 files changed, 7367 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..59f0845
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.thumb.png
+layers/
+data/
+*.xml
diff --git a/CARTOGRAPHY.md b/CARTOGRAPHY.md
new file mode 100644
index 0000000..8b2b9a0
--- /dev/null
+++ b/CARTOGRAPHY.md
@@ -0,0 +1,37 @@
+# Cartography
+
+This is a style that serves multiple purposes, so here are some guidelines when considering cartographic changes.
+
+## Purposes
+
+There are multiple primary purposes of the map style, which pull in different directions
+
+* It's the primary feedback mechanism for mappers to validate their edits - so detail is useful
+* It's a major part of the impression visitors to osm.org receive - so clear design is useful
+* It's an examplar stylesheet for rendering OSM data - so easy customisation is useful
+
+It must always be borne in mind that a map style cannot show every detail of the OSM data, and in many cases it is more appropriate to show the detail in other, more specialist styles.
+
+## Colours
+
+Firstly, this is a map, not merely a colourful 2-dimensional visualisation of the database. Colours should be chosen based on their effectiveness and to make things look nice, not chosen for distinctiveness.
+
+The colour palette should be moving towards pastel/light/desaturated for background layers, midtones for streets and save highlights/bolds/saturated for points of interest. If colourspace can be left unused, that enables overlays for third parties.
+
+Colour definitions should, where useful, be put into variables at the top of the file, to enable easier customisation.
+
+## Data manipulation
+
+OpenStreetMap data has to be manipulated for rendering, but since this style is intended for use by mappers to check their work, it should minimise any distortions. For example, line-smoothing improves the look of railways and rivers, but introduces confusion for mappers. Post processing of geometries can improve the cartographic results, but breaks the cause-and-effect between editing the data and seeing the results.
+
+For similar reasons, use of external non-OSM data should be avoided.
+
+## Legibility
+
+I mean this not only in terms of font size, but in the ability of users to be able to "read" the map style. For example, a user might not be familiar with our exact road colours, but should be able to understand their relative importance via intensity of colour, width or other attributes. Important features should be more easily spotted and understood than less important information. It should be possible to gain an understanding of the majority of the map without using a legend.
+
+## The Mapper Feedback Loop
+
+If you thought that mappers were happy just to press "Save" on their editor, you'd be wrong. A key part of their feedback loop - to reassure them their work has been saved, and also to check that they have mapped 'correctly' - is waiting to see the results of their mapping on the main map layer on www.osm.org
+
+While this desire is in obvious conflict with the above comments on level of detail, it has a second impact on the map style. We need to, wherever possible, avoid accidentally encouraging mistakes - that is, avoiding the situation where a clearly misspelled or misused tag leads to the originally expected result. So `highway=mtorway` shouldn't show up as if it was `highway=motorway`, and so on. This has been a problem with "catch-all" rules in queries and filters, such as `where leisure is not null` or `[amenity != ""]`. Avoid these situations. \ No newline at end of file
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..86cca83
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,15 @@
+OpenStreetMap Carto: A global map style for OpenStreetMap maps.
+
+Created by Andy Allan <andy@gravitystorm.co.uk> and contributors.
+Based on original cartography by Steve Chilton and others.
+
+This software and associated documentation files (the "Software") is
+released under the CC0 Public Domain Dedication, version 1.0, as
+published by Creative Commons. To the extent possible under law, the
+author(s) have dedicated all copyright and related and neighboring
+rights to the Software to the public domain worldwide. The Software is
+distributed WITHOUT ANY WARRANTY.
+
+If you did not receive a copy of the CC0 Public Domain Dedication
+along with the Software, see
+<http://creativecommons.org/publicdomain/zero/1.0/> \ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..ec1f1cc
--- /dev/null
+++ b/README.md
@@ -0,0 +1,153 @@
+# OpenStreetMap Carto
+
+An implemention of the standard OpenStreetMap mapnik style, in CartoCSS.
+
+These stylesheets can be used in your own cartography projects, and are designed to be easily
+customised. They work with [TileMill](http://www.mapbox.com/tilemill/) and also with the command-line [CartoCSS](https://github.com/mapbox/carto) processor.
+
+Since August 2013 these stylesheets are used on the OSMF tileservers (tile.openstreetmap.org), and
+are updated from each point release. They supersede the previous [XML-based stylesheets](https://trac.openstreetmap.org/browser/subversion/applications/rendering/mapnik)
+
+# Setup
+
+You need OpenStreetMap data loaded into a PostGIS database (see below for [dependencies](https://github.com/gravitystorm/openstreetmap-carto#dependencies)). These stylesheets currently work only with the osm2pgsql defaults (i.e. database name is 'gis', table names are 'planet_osm_point' etc).
+
+It's probably easiest to grab an PBF of OSM data from [metro.teczno.com](http://metro.teczno.com/) or [geofabrik](http://download.geofabrik.de/). Once you've set up your PostGIS database, import with osm2pgsql:
+
+```
+osm2pgsql -d gis ~/path/to/data.osm.pbf --style openstreetmap-carto.style
+```
+
+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.
+
+```
+sh get-shapefiles.sh
+```
+
+## Manual download
+
+You can also download them manually at the following paths:
+
+* `simplified-land-polygons.shp` [download](http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip)
+* `land-polygon.shp` [download](http://data.openstreetmapdata.com/land-polygons-split-3857.zip)
+* `builtup_area.shp` [download](http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz)
+* `ne_110m_admin_0_boundary_lines_land.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip)
+* `ne_10m_populated_places_fixed.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip) (and see below)
+
+Put these shapefiles at path/to/opentreetmap-carto/data
+
+### Populated places shapefile
+
+The Natural Earth 2.0 populated places shapefile contains data that triggers a bug in mapnik. As
+a workaround we run the shapefile through ogr2ogr to clean up the data.
+
+```
+ogr2ogr ne_10m_populated_places_fixed.shp ne_10m_populated_places.shp
+```
+
+See https://github.com/mapnik/mapnik/issues/1605 for more details.
+
+## Fonts
+The stylesheet depends on a number of openly licensed fonts for support of all the languages found on the map. The package which supplies these fonts on Ubuntu is indicated.
+
+If a font is missing, it will skip to the next available font which contains those characters. If you are not concerned with a particular language, you do not need its fonts. DejaVu Sans and Unifont are the two required fonts, and included on most systems.
+
+### Global
+* DejaVu Sans, for most languages (``ttf-dejavu``)
+* Droid Sans Fallback, as a reasonable fallback (``fonts-droid``)
+* Unifont, as a last resort fallback (``ttf-unifont``)
+
+### Southeast Asia
+* Arundina Sans, for Thai (``fonts-sipa-arundina``)
+* Padauk, for Burmese (``fonts-sil-padauk``)
+* Khmer OS Metal Chrieng Regular, for Khmer (``fonts-khmeros``)
+
+## Dependencies
+
+* [TileMill](http://mapbox.com/tilemill) - This is a TileMill project you can copy (or symlink) directly into your Mapbox/project directory
+
+If you aren't using TileMill, you can compile the CartoCSS stylesheets into Mapnik XML using the command-line `carto` command.
+
+* [carto](https://github.com/mapbox/carto) >= 0.9.3 (we're using instances with cascading rules)
+* [mapnik](https://github.com/mapnik/mapnik/wiki/Mapnik-Installation) >= 2.1.0
+
+---
+
+* [osm2pgsql](http://wiki.openstreetmap.org/wiki/Osm2pgsql) to import your data into a PostGIS database
+* [PostgreSQL](http://www.postgresql.org/)
+* [PostGIS](http://postgis.org/)
+* [ogr2ogr](http://www.gdal.org/) command line GDAL utility for processing vector data. here we use it to work around a encoding bug in the Nautral Earth data.
+* curl, unzip for downloading and decompressing files
+* shapeindex (a companion utility to Mapnik found in the mapnik-utils package) for indexing downloaded shapefiles
+
+# Roadmap
+
+## Initial Release (v1.0.0, December 2012)
+
+This was a full re-implementation of the original OSM style, with only a few bugs discovered later. There's been
+no interest in creating further point releases in the v1.x series.
+
+## Easier to wrangle (v2.x)
+
+There are a number of refactorings that can be made to the style, either to fix glitches
+with the current style, or to leverage new features in carto / mapnik to simplify the stylesheets
+with only small changes to the output. It's also appropriate to pull out some of the 'old-skool'
+tagging methods that are now rarely used.
+
+Care is being taken to not get too clever with variables and expressions. While these often make
+it easier to customise, experience has shown that over-cleverness (e.g. [interpolated entities][cleverness])
+can discourage contributions.
+
+The end goal will be a style that hews close to the current look of the standard style, but is
+much more suitable for further development, and/or forking for third-parties to customise.
+
+## Tackle the backlog (v3.x)
+
+There are over [400 open requests][trac] on trac, some that have been open for years. These need
+reviewing and dividing into obvious fixes, or additional new features that need some cartographic
+judgement. The work done already in v1.0 and v2.0 will make it much easier to process these.
+
+# CartoCSS Style Guidelines
+
+* Always specify zoom levels as either >= or < . Don't use = or =< or >
+* Open curly braces on the same line, and close on an empty line.
+* One space before and after = etc
+* Two space indents. No tabs.
+* space after : but not before
+* Dashes, not underscores, in layer names
+* Name SQL subqueries after the layer name (but use underscores)
+* Avoid restating defaults, e.g. don't add `point-allow-overlap = false`
+* Avoid repeating the layer name for layers with mutiple attachments, i.e., prefer
+
+```
+#layer {
+ ::outline {
+ line-width: 6;
+ line-color: black;
+ }
+ ::inline {
+ line-width: 2;
+ line-color: white;
+ }
+}
+```
+instead of
+
+```
+#layer::outline {
+ line-width: 6;
+ line-color: black;
+}
+#layer::inline {
+ line-width: 2;
+ line-color: white;
+}
+```
+* Order the selectors in a style-sheet in rough order of importance (i.e., highway=primary, then highway=secondary) and beyond that, add layers that are rendered later (i.e., higher) lower in the file.
+
+[trac]: https://trac.openstreetmap.org/query?component=mapnik&status=!closed&order=changetime&desc=1&max=500
+[cleverness]: https://github.com/openstreetmap/mapnik-stylesheets/blob/master/inc/settings.xml.inc.template#L16
diff --git a/TODO.md b/TODO.md
new file mode 100644
index 0000000..c496e12
--- /dev/null
+++ b/TODO.md
@@ -0,0 +1,28 @@
+# TODO
+
+## Roads
+
+turning circles for living streets
+turning circles for service
+widths for living streets
+highway area casing - should be wider
+highway area casing and fills should be variables
+tunnel casing widths
+tunnel fill widths
+motorway links are narrower than motorways (fair enough) but nothing else is (fix)
+service casing and fill widths
+pedestrian widths
+residential 10-13 width
+highway = road widths
+bridge casing widths
+paths etc widths
+paths etc colours
+railway colours
+paths etc tunnels
+track colours, width and dasharray
+track tunnels
+bridge casing
+bridge colour
+lowzoom widths
+tram width and colour
+guideways width and colour
diff --git a/addressing.mss b/addressing.mss
new file mode 100644
index 0000000..a01a46b
--- /dev/null
+++ b/addressing.mss
@@ -0,0 +1,49 @@
+#interpolation {
+ [zoom >= 17] {
+ line-color: #888;
+ line-width: 1;
+ line-dasharray: 2,4;
+ }
+}
+
+#housenumbers {
+ [zoom >= 17] {
+ text-name: "[addr:housenumber]";
+ text-placement: interior;
+ text-min-distance: 1;
+ text-wrap-width: 0;
+ text-face-name: @book-fonts;
+ text-fill: #444;
+ text-size: 9;
+ }
+}
+
+#housenames {
+ [zoom >= 17] {
+ text-name: "[addr:housename]";
+ text-placement: interior;
+ text-wrap-width: 20;
+ text-face-name: @book-fonts;
+ text-size: 8;
+ text-fill: #444;
+ [zoom >= 18] {
+ text-size: 9;
+ }
+ }
+}
+
+#building-text {
+ [way_area >= 150000][zoom >= 14],
+ [way_area >= 80000][zoom >= 15],
+ [way_area >= 20000][zoom >= 16],
+ [zoom >= 17] {
+ text-name: "[name]";
+ text-size: 11;
+ text-fill: #444;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 20;
+ text-halo-fill: rgba(255,255,255,0.5);
+ text-placement: interior;
+ }
+}
diff --git a/admin.mss b/admin.mss
new file mode 100644
index 0000000..dd7bdb9
--- /dev/null
+++ b/admin.mss
@@ -0,0 +1,117 @@
+@admin-boundaries: #ac46ac;
+
+#admin-01234 {
+ [admin_level = '2'],
+ [admin_level = '3'] {
+ [zoom >= 4] {
+ line-color: @admin-boundaries;
+ line-width: 0.6;
+ }
+ [zoom >= 7] {
+ line-width: 2;
+ }
+ [zoom >= 10] {
+ [admin_level = '2'] {
+ line-width: 6;
+ }
+ [admin_level = '3'] {
+ line-width: 5;
+ line-dasharray: 4,2;
+ line-clip: false;
+ }
+ }
+ }
+ [admin_level = '4'] {
+ [zoom >= 4] {
+ line-color: @admin-boundaries;
+ line-width: 0.6;
+ line-dasharray: 4,3;
+ line-clip: false;
+ }
+ [zoom >= 7] {
+ line-width: 1;
+ }
+ [zoom >= 11] {
+ line-width: 3;
+ }
+ }
+ opacity: 0.4;
+}
+
+#admin-5678 {
+ [admin_level = '5'][zoom >= 11] {
+ line-color: @admin-boundaries;
+ line-width: 2;
+ line-dasharray: 6,3,2,3,2,3;
+ line-clip: false;
+ }
+ [admin_level = '6'][zoom >= 11] {
+ line-color: @admin-boundaries;
+ line-width: 2;
+ line-dasharray: 6,3,2,3;
+ line-clip: false;
+ }
+ [admin_level = '7'],
+ [admin_level = '8'] {
+ [zoom >= 12] {
+ line-color: @admin-boundaries;
+ line-width: 1.5;
+ line-dasharray: 5,2;
+ line-clip: false;
+ }
+ }
+ opacity: 0.5;
+}
+
+#admin-other {
+ [admin_level = '9'],
+ [admin_level = '10'] {
+ [zoom >= 13] {
+ line-color: @admin-boundaries;
+ line-width: 2;
+ line-dasharray: 2,3;
+ line-clip: false;
+ }
+ }
+ opacity: 0.5;
+}
+
+#admin-text[zoom >= 16] {
+ text-name: "[name]";
+ text-face-name: @book-fonts;
+ text-fill: @admin-boundaries;
+ text-placement: line;
+ text-halo-radius: 1.0;
+ text-placement: line;
+ text-dy: -10;
+}
+
+#national-park-boundaries {
+ [zoom >= 7] {
+ ::fill [zoom < 13] {
+ opacity: 0.05;
+ polygon-fill: green;
+ }
+ ::line {
+ opacity: 0.15;
+ line-color: green;
+ line-width: 1.5;
+ line-dasharray: 4,2;
+ [zoom >= 10] {
+ line-width: 3;
+ line-dasharray: 6,2;
+ line-join: bevel;
+ }
+ }
+ }
+ [way_area > 200000000][zoom >= 8][zoom < 12],
+ [zoom >= 11][zoom < 12] {
+ text-name: "[name]";
+ text-size: 8;
+ text-fill: #9c9;
+ text-face-name: @bold-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 14;
+ [zoom >= 11] { text-size: 11; }
+ }
+}
diff --git a/aerialways.mss b/aerialways.mss
new file mode 100644
index 0000000..6fef77f
--- /dev/null
+++ b/aerialways.mss
@@ -0,0 +1,20 @@
+#aerialways {
+ [aerialway = 'cable_car'],
+ [aerialway = 'gondola'],
+ [aerialway = 'goods'] {
+ [zoom >= 12] {
+ line-pattern-file: url('symbols/cable_car.png');
+ }
+ }
+
+ [aerialway = 'chair_lift'],
+ [aerialway = 'drag_lift'],
+ [aerialway = 't-bar'],
+ [aerialway = 'j-bar'],
+ [aerialway = 'platter'],
+ [aerialway = 'rope_tow'] {
+ [zoom >= 12] {
+ line-pattern-file: url('symbols/chair_lift.png');
+ }
+ }
+}
diff --git a/amenity-points.mss b/amenity-points.mss
new file mode 100644
index 0000000..42640f7
--- /dev/null
+++ b/amenity-points.mss
@@ -0,0 +1,1148 @@
+@marina-text: #576ddf; // also swimming_pool
+@military-text: #99001a;
+@park-text: #2c4b2c;
+
+.points {
+ [tourism = 'alpine_hut'][zoom >= 13]::tourism {
+ point-file: url('symbols/alpinehut.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'shelter'][zoom >= 16]::amenity {
+ point-file: url('symbols/shelter2.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'atm'][zoom >=17]::amenity {
+ point-file: url('symbols/atm2.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'bank'][zoom >= 17]::amenity {
+ point-file: url('symbols/bank2.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'bar'][zoom >=17]::amenity {
+ point-file: url('symbols/bar.p.20.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'bicycle_rental'][zoom >= 17]::amenity {
+ point-file: url('symbols/rental_bicycle.p.20.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'bus_stop']::amenity,
+ [highway = 'bus_stop']::highway {
+ [zoom >= 16] {
+ point-file: url('symbols/bus_stop_small.png');
+ point-placement: interior;
+ }
+ [zoom >= 17] {
+ point-file: url('symbols/bus_stop.p.12.png');
+ }
+ }
+
+ [amenity = 'bus_station'][zoom >= 16]::amenity {
+ point-file: url('symbols/bus_station.n.16.png');
+ point-placement: interior;
+ }
+
+ [highway = 'traffic_signals'][zoom >= 17]::highway {
+ point-file: url('symbols/traffic_light.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'cafe'][zoom >=17]::amenity {
+ point-file: url('symbols/cafe.p.16.png');
+ point-placement: interior;
+ }
+
+ [tourism = 'camp_site'][zoom >= 16]::tourism {
+ point-file: url('symbols/camping.n.16.png');
+ point-placement: interior;
+ }
+
+ [highway = 'ford'][zoom >= 16]::highway {
+ point-file: url('symbols/transport_ford.p.16.png');
+ point-placement: interior;
+ }
+
+ [tourism = 'caravan_site'][zoom >= 16]::tourism {
+ point-file: url('symbols/caravan_park.p.24.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'car_sharing'][zoom >= 16]::amenity {
+ point-file: url('symbols/car_share.p.16.png');
+ point-placement: interior;
+ }
+
+ [tourism = 'chalet'][zoom >= 17]::tourism {
+ point-file: url('symbols/chalet.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'cinema'][zoom >= 17]::amenity {
+ point-file: url('symbols/cinema.p.24.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'fire_station'][zoom >= 17]::amenity {
+ point-file: url('symbols/firestation.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'fuel'][zoom >= 17]::amenity {
+ point-file: url('symbols/fuel.p.16.png');
+ point-placement: interior;
+ }
+
+ [tourism = 'guest_house'][zoom >= 17]::tourism {
+ point-file: url('symbols/guest_house.p.16.png');
+ point-placement: interior;
+ }
+
+ [tourism = 'bed_and_breakfast'][zoom >= 17]::tourism {
+ point-file: url('symbols/bandb.p.20.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'hospital'][zoom >= 15]::amenity {
+ point-file: url('symbols/hospital.p.16.png');
+ point-placement: interior;
+ }
+
+ [tourism = 'hostel'][zoom >= 17]::tourism {
+ point-file: url('symbols/hostel.p.20.png');
+ point-placement: interior;
+ }
+
+ [tourism = 'hotel'][zoom >= 17]::tourism {
+ point-file: url('symbols/hotel2.p.20.png');
+ point-placement: interior;
+ }
+
+ [tourism = 'motel'][zoom >= 17]::tourism {
+ point-file: url('symbols/motel.p.20.png');
+ point-placement: interior;
+ }
+
+ [tourism = 'information'][zoom >= 16]::tourism {
+ point-file: url('symbols/information.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'embassy'][zoom >= 17]::amenity {
+ point-file: url('symbols/embassy.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'library'][zoom >= 17]::amenity {
+ point-file: url('symbols/library.p.20.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'courthouse'][zoom > 17]::amenity {
+ point-file: url('symbols/amenity_court.p.20.png');
+ point-placement: interior;
+ }
+
+ [waterway = 'lock']::waterway,
+ [lock = 'yes']::lock {
+ [zoom >= 15] {
+ point-file: url('symbols/lock_gate.png');
+ point-placement: interior;
+ }
+ }
+
+ [man_made = 'mast'][zoom >= 17]::man_made {
+ point-file: url('symbols/communications.p.20.png');
+ point-placement: interior;
+ }
+
+ [tourism = 'museum'][zoom >= 17]::tourism {
+ point-file: url('symbols/museum.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'parking'][zoom >= 15]::amenity {
+ point-file: url('symbols/parking.p.16.png');
+ point-placement: interior;
+ [access != ''][access != 'public'][access != 'yes'] {
+ point-file: url('symbols/parking_private.p.16.png');
+ }
+ }
+
+ [amenity = 'pharmacy'][zoom >= 17]::amenity {
+ point-file: url('symbols/pharmacy.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'place_of_worship'][zoom >= 16]::amenity {
+ point-file: url('symbols/place_of_worship3.p.16.png');
+ point-placement: interior;
+ [religion = 'christian'] {
+ point-file: url('symbols/christian3.p.14.png');
+ }
+ [religion = 'muslim'] {
+ point-file: url('symbols/islamic3.p.16.png');
+ }
+ [religion = 'sikh'] {
+ point-file: url('symbols/sikh3.p.16.png');
+ }
+ [religion = 'jewish'] {
+ point-file: url('symbols/jewish3.p.16.png');
+ }
+ [religion = 'hindu'] {
+ point-file: url('symbols/hindu.png');
+ }
+ [religion = 'buddhist'] {
+ point-file: url('symbols/buddhist.png');
+ }
+ [religion = 'shinto'] {
+ point-file: url('symbols/shinto.png');
+ }
+ [religion = 'taoist'] {
+ point-file: url('symbols/taoist.png');
+ }
+ }
+
+ [amenity = 'police'][zoom >= 17]::amenity {
+ point-file: url('symbols/police.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'post_box'][zoom >= 17]::amenity {
+ point-file: url('symbols/post_box.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'post_office'][zoom >= 17]::amenity {
+ point-file: url('symbols/post_office.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'pub'][zoom >= 16]::amenity {
+ point-file: url('symbols/pub.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'biergarten'][zoom >= 16]::amenity {
+ point-file: url('symbols/biergarten.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'recycling'][zoom >= 16]::amenity {
+ point-file: url('symbols/recycling.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'restaurant'][zoom >= 17]::amenity {
+ point-file: url('symbols/restaurant.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'fast_food'][zoom >= 17]::amenity {
+ point-file: url('symbols/fast_food.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'telephone'][zoom >= 17]::amenity {
+ point-file: url('symbols/telephone.p.16.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'emergency_phone'][zoom >= 17]::amenity {
+ point-file: url('symbols/sosphone.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'theatre'][zoom >= 17]::amenity {
+ point-file: url('symbols/theatre.p.20.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'toilets'][zoom >= 17]::amenity {
+ point-file: url('symbols/toilets.p.20.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'drinking_water'][zoom >= 17]::amenity {
+ point-file: url('symbols/food_drinkingtap.p.20.png');
+ point-placement: interior;
+ }
+
+ [amenity = 'prison'][zoom >= 17]::amenity {
+ point-file: url('symbols/amenity_prison.p.20.png');
+ point-placement: interior;
+ }
+
+ [tourism = 'viewpoint'][zoom >= 16]::tourism {
+ point-file: url('symbols/view_point.p.16.png');
+ point-placement: interior;
+ }
+
+ [man_made = 'water_tower'][zoom >= 17]::man_made {
+ point-file: url('symbols/tower_water.p.20.png');
+ point-placement: interior;
+ }
+
+ [historic = 'memorial'][zoom >= 17]::historic {
+ point-file: url('symbols/tourist_memorial.p.20.png');
+ point-placement: interior;
+ }
+
+ [historic = 'archaeological_site'][zoom >= 16]::historic {
+ point-file: url('symbols/tourist_archaeological2.glow.24.png');
+ point-placement: interior;
+ }
+
+ [shop = 'supermarket'][zoom >= 16]::shop {
+ point-file: url('symbols/shop_supermarket.p.16.png');
+ point-placement: interior;
+ }
+
+ [shop = 'bakery'][zoom >= 17]::shop {
+ point-file: url('symbols/shop_bakery.p.16.png');
+ point-placement: interior;
+ }
+
+ [shop = 'butcher'][zoom >= 17]::shop {
+ point-file: url('symbols/shop_butcher.png');
+ point-placement: interior;
+ }
+
+ [shop = 'clothes']::shop,
+ [shop = 'fashion']::shop {
+ [zoom >= 17] {
+ point-file: url('symbols/shop_clothes.p.16.png');
+ point-placement: interior;
+ }
+ }
+
+ [shop = 'convenience'][zoom >= 17]::shop {
+ point-file: url('symbols/shop_convenience.p.16.png');
+ point-placement: interior;
+ }
+
+ [shop = 'department_store'][zoom >= 16]::shop {
+ point-file: url('symbols/department_store.p.16.png');
+ point-placement: interior;
+ }
+
+ [shop = 'doityourself'][zoom >= 17]::shop {
+ point-file: url('symbols/shop_diy.p.16.png');
+ point-placement: interior;
+ }
+
+ [shop = 'florist'][zoom >= 17]::shop {
+ point-file: url('symbols/florist.p.16.png');
+ point-placement: interior;
+ }
+
+ [shop = 'hairdresser'][zoom >= 17]::shop {
+ point-file: url('symbols/shop_hairdresser.p.16.png');
+ point-placement: interior;
+ }
+
+ [shop = 'car'][zoom >= 17]::shop {
+ point-file: url('symbols/shopping_car.p.16.png');
+ point-placement: interior;
+ }
+
+ [shop = 'car_repair'][zoom >= 17]::shop {
+ point-file: url('symbols/shopping_car_repair.p.16.png');
+ point-placement: interior;
+ }
+
+ [shop = 'bicycle'][zoom >= 17]::shop {
+ point-file: url('symbols/shopping_bicycle.p.16.png');
+ point-placement: interior;
+ }
+
+ [leisure = 'playground'][zoom >= 17]::leisure {
+ point-file: url('symbols/playground.p.20.png');
+ point-placement: interior;
+ }
+
+ [tourism = 'picnic_site'][zoom >= 16]::tourism {
+ point-file: url('symbols/picnic.p.16.png');
+ point-placement: interior;
+ }
+
+ [leisure = 'picnic_table'][zoom >= 17]::leisure {
+ point-file: url('symbols/picnic.p.16.png');
+ point-placement: interior;
+ }
+
+ [leisure = 'slipway'][zoom >= 17]::leisure {
+ point-file: url('symbols/transport_slipway.p.20.png');
+ point-placement: interior;
+ }
+}
+
+
+.text {
+ [place = 'island'][zoom >= 12]::place {
+ text-name: "[name]";
+ text-fill: #000;
+ text-size: 9;
+ text-face-name: @oblique-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ }
+
+ [amenity = 'pub']::amenity,
+ [amenity = 'restaurant']::amenity,
+ [amenity = 'cafe']::amenity,
+ [amenity = 'fast_food']::amenity,
+ [amenity = 'biergarten']::amenity {
+ [zoom >= 17] {
+ text-name: "[name]";
+ text-fill: #734a08;
+ text-size: 10;
+ text-dy: 9;
+ text-face-name: @bold-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 34;
+ text-placement: interior;
+ }
+ }
+
+ [amenity = 'bar'][zoom >= 17]::amenity {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #734a08;
+ text-dy: 11;
+ text-face-name: @bold-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ }
+
+ [amenity = 'library']::amenity,
+ [amenity = 'theatre']::amenity,
+ [amenity = 'courthouse']::amenity {
+ [zoom >= 17] {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #734a08;
+ text-dy: 12;
+ text-face-name: @bold-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ }
+ }
+
+ [amenity = 'cinema'][zoom >= 17]::amenity {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #734a08;
+ text-dy: 14;
+ text-face-name: @bold-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ }
+
+ [amenity = 'parking'][zoom >= 17]::amenity {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #0066ff;
+ text-dy: 9;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 34;
+ text-placement: interior;
+ [access != ''][access != 'public'][access != 'yes'] {
+ text-fill: #66ccaf;
+ }
+ }
+
+ [amenity = 'police'][zoom >= 17]::amenity {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #734a08;
+ text-dy: 10;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 30;
+ text-placement: interior;
+ }
+
+ [amenity = 'fire_station'][zoom >= 17]::amenity {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #734a08;
+ text-dy: 9;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 30;
+ text-placement: interior;
+ }
+
+ [amenity = 'place_of_worship'][zoom >= 17]::amenity {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #000033;
+ text-dy: 12;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 30;
+ text-placement: interior;
+ }
+
+ [natural = 'wood'][zoom >= 15]::natural {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: darken(@wood, 50%);
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ text-placement: interior;
+ }
+
+ [natural = 'peak']::natural,
+ [natural = 'volcano']::natural {
+ [zoom >= 13] {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: brown;
+ text-dy: 7;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ ele/text-name: "[ele]";
+ ele/text-size: 9;
+ ele/text-fill: brown;
+ ele/text-dy: 6;
+ ele/text-face-name: @oblique-fonts;
+ ele/text-halo-radius: 1;
+ ele/text-placement: interior;
+ [name != ''] {
+ ele/text-dy: 19;
+ }
+ }
+ }
+
+ [natural = 'cave_entrance'][zoom >= 15]::natural {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: brown;
+ text-dy: 9;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 20;
+ text-placement: interior;
+ }
+
+ [historic = 'memorial'][zoom >= 17]::historic {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: brown;
+ text-dy: 13;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 20;
+ text-placement: interior;
+ }
+
+ [historic = 'archaeological_site'][zoom >= 17]::historic {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: brown;
+ text-dy: 15;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 20;
+ text-placement: interior;
+ }
+
+ [natural = 'water']::natural,
+ [natural = 'lake']::natural,
+ [landuse = 'reservoir']::landuse,
+ [landuse = 'basin']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 12;
+ text-fill: @water-text;
+ text-face-name: @oblique-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 20;
+ text-placement: interior;
+ }
+ }
+
+ [leisure = 'swimming_pool']::leisure {
+ [zoom >= 17] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: @marina-text;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ text-placement: interior;
+ }
+ }
+
+ [leisure = 'sports_centre']::leisure,
+ [leisure = 'stadium']::leisure,
+ [leisure = 'track']::leisure,
+ [leisure = 'pitch']::leisure {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@stadium, 30%);
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ text-placement: interior;
+ }
+ }
+
+ [leisure = 'playground']::leisure,
+ [leisure = 'park']::leisure,
+ [leisure = 'recreation_ground']::leisure,
+ [landuse = 'recreation_ground']::landuse,
+ [landuse = 'conservation']::landuse,
+ [landuse = 'village_green']::landuse,
+ [leisure = 'common']::leisure,
+ [leisure = 'garden']::leisure,
+ [leisure = 'golf_course']::leisure,
+ [leisure = 'nature_reserve']::leisure {
+ [way_area >= 150000][zoom >= 14],
+ [way_area >= 80000][zoom >= 15],
+ [way_area >= 20000][zoom >= 16],
+ [zoom >= 17] {
+ text-name: "[name]";
+ text-size: 11;
+ text-fill: @park-text;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-halo-fill: rgba(255,255,255,0.6);
+ text-wrap-width: 30;
+ text-placement: interior;
+ }
+ }
+
+ [landuse = 'quarry']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #000;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'vineyard']::landuse,
+ [landuse = 'orchard']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@vineyard, 50%);
+ text-face-name: @book-fonts;
+ // extra halo needed to overpower the cemetery polygon pattern
+ text-halo-radius: 1.5;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'cemetery']::landuse,
+ [landuse = 'grave_yard']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@cemetery, 50%);
+ text-face-name: @book-fonts;
+ // extra halo needed to overpower the cemetery polygon pattern
+ text-halo-radius: 1.5;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'residential']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #000;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'garages']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@garages, 50%);
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'field']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@field, 50%);
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'meadow']::landuse,
+ [landuse = 'grass']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@grass, 65%);
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'allotments']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@allotments, 60%);
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'forest']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@forest, 50%);
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'farm']::landuse,
+ [landuse = 'farmland']::landuse,
+ [landuse = 'farmyard']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@farm, 70%);
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'retail']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@retail, 60%);
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'industrial']::landuse,
+ [landuse = 'railway']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@industrial, 60%);
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'commercial']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@commercial, 60%);
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ }
+ }
+
+ [landuse = 'brownfield']::landuse,
+ [landuse = 'landfill']::landuse,
+ [landuse = 'greenfield']::landuse,
+ [landuse = 'construction']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: darken(@construction, 50%);
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ }
+ }
+
+ [natural = 'bay'][zoom >= 14]::natural {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #6699cc;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 20;
+ text-placement: interior;
+ }
+
+ [natural = 'spring'][zoom >= 16]::natural {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #6699cc;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 20;
+ text-placement: interior;
+ text-dy: 6;
+ }
+
+ [tourism = 'alpine_hut'][zoom >= 15]::tourism {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #6699cc;
+ text-dy: 10;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ [zoom >= 16] {
+ ele/text-name: "[ele]";
+ ele/text-size: 8;
+ ele/text-fill: #6699cc;
+ ele/text-dy: 22;
+ ele/text-face-name: @oblique-fonts;
+ ele/text-halo-radius: 1;
+ ele/text-placement: interior;
+ }
+ }
+
+ [amenity = 'shelter'][zoom >= 17]::amenity {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #6699cc;
+ text-dy: 10;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ ele/text-name: "[ele]";
+ ele/text-size: 8;
+ ele/text-fill: #6699cc;
+ ele/text-dy: 22;
+ ele/text-face-name: @oblique-fonts;
+ ele/text-halo-radius: 1;
+ ele/text-placement: interior;
+ }
+
+ [amenity = 'bank'][zoom >= 17]::amenity {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: black;
+ text-dy: 9;
+ text-halo-radius: 1;
+ text-placement: interior;
+ text-face-name: @book-fonts;
+ }
+
+ [tourism = 'hotel']::tourism,
+ [tourism = 'motel']::tourism,
+ [tourism = 'hostel']::tourism,
+ [tourism = 'chalet']::tourism {
+ [zoom >= 17] {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #0066ff;
+ text-dy: 11;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ }
+ }
+
+ [amenity = 'embassy'][zoom >= 17]::amenity {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #0066ff;
+ text-dy: 8;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ }
+
+ [tourism = 'guest_house'][zoom >= 17]::tourism {
+ text-name: "[name]";
+ text-size: 8;
+ text-fill: #0066ff;
+ text-dy: 10;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ }
+
+ [tourism = 'bed_and_breakfast'][zoom >= 17]::tourism {
+ text-name: "[name]";
+ text-size: 8;
+ text-fill: #0066ff;
+ text-dy: 8;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ }
+
+ [amenity = 'fuel']::amenity,
+ [amenity = 'bus_station']::amenity {
+ [zoom >= 17] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #0066ff;
+ text-dy: 9;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ }
+ }
+
+ [tourism = 'camp_site'][zoom >= 17]::tourism {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #0066ff;
+ text-dy: 15;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 70;
+ }
+
+ [tourism = 'caravan_site'][zoom >= 17]::tourism {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #0066ff;
+ text-dy: 19;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 70;
+ }
+
+ [waterway = 'lock'][zoom >= 15]::waterway {
+ text-name: "[name]";
+ text-size: 9;
+ text-dy: 10;
+ text-fill: #0066ff;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 70;
+ }
+
+ [leisure = 'marina'][zoom >= 15]::leisure {
+ text-name: "[name]";
+ text-size: 8;
+ text-fill: @marina-text;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 30;
+ text-placement: interior;
+ [zoom >= 17] {
+ text-size: 10;
+ }
+ }
+
+ [tourism = 'theme_park'][zoom >= 14]::tourism {
+ text-name: "[name]";
+ text-size: 8;
+ text-fill: #734a08;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 30;
+ text-placement: interior;
+ [zoom >= 16] {
+ text-size: 10;
+ }
+ }
+
+ [tourism = 'museum'][zoom >= 17]::tourism {
+ text-name: "[name]";
+ text-size: 10;
+ text-dy: 10;
+ text-fill: #734a08;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ }
+
+ [amenity = 'prison'][zoom >= 17]::amenity {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #734a08;
+ text-dy: 16;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ }
+
+ [tourism = 'attraction'][zoom >= 16]::tourism {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #660033;
+ text-face-name: @book-fonts;
+ text-halo-radius: 2;
+ text-wrap-width: 10;
+ text-placement: interior;
+ }
+
+ [amenity = 'university'][zoom >= 15]::amenity {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #000033;
+ text-face-name: @bold-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 16;
+ text-placement: interior;
+ }
+
+ [amenity = 'school']::amenity,
+ [amenity = 'college']::amenity {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #000033;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 14;
+ text-placement: interior;
+ }
+ }
+
+ [amenity = 'kindergarten'][zoom >= 16]::amenity {
+ text-name: "[name]";
+ text-size: 8;
+ text-fill: #000033;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 14;
+ text-placement: interior;
+ }
+
+ [man_made = 'lighthouse'][zoom >= 15]::man_made {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #000033;
+ text-dy: 16;
+ text-face-name: @book-fonts;
+ text-halo-radius: 2;
+ text-wrap-width: 12;
+ text-placement: interior;
+ }
+
+ [man_made = 'windmill'][zoom >= 17]::man_made {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #734a08;
+ text-dy: 12;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 20;
+ text-placement: interior;
+ }
+
+ [amenity = 'hospital'][zoom >= 16]::amenity {
+ text-name: "[name]";
+ text-fill: #da0092;
+ text-size: 8;
+ text-dy: 10;
+ text-face-name: @book-fonts;
+ text-halo-radius: 2;
+ text-wrap-width: 24;
+ text-placement: interior;
+ }
+
+ [amenity = 'pharmacy'][zoom >= 17]::amenity {
+ text-name: "[name]";
+ text-size: 8;
+ text-dy: 10;
+ text-fill: #da0092;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 12;
+ text-placement: interior;
+ }
+
+ [shop = 'bakery']::shop,
+ [shop = 'clothes']::shop,
+ [shop = 'fashion']::shop,
+ [shop = 'convenience']::shop,
+ [shop = 'doityourself']::shop,
+ [shop = 'hairdresser']::shop,
+ [shop = 'butcher']::shop,
+ [shop = 'car']::shop,
+ [shop = 'car_repair']::shop,
+ [shop = 'bicycle']::shop,
+ [shop = 'florist']::shop {
+ [zoom >= 17] {
+ text-name: "[name]";
+ text-size: 8;
+ text-dy: 10;
+ text-fill: #939;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 12;
+ text-placement: interior;
+ }
+ }
+
+ [shop = 'supermarket']::shop,
+ [shop = 'department_store']::shop {
+ [zoom >= 16] {
+ text-name: "[name]";
+ text-size: 9;
+ text-dy: 9;
+ text-fill: #939;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 20;
+ text-placement: interior;
+ }
+ }
+
+ [military = 'danger_area'][zoom >= 12]::military {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: @military-text;
+ text-face-name: @bold-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ text-placement: interior;
+ }
+
+ [landuse = 'military']::landuse {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: @military-text;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ text-placement: interior;
+ }
+ }
+
+ [aeroway = 'gate'][zoom >= 17]::aeroway {
+ text-name: "[ref]";
+ text-size: 10;
+ text-fill: #aa66cc;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ text-wrap-width: 10;
+ text-placement: interior;
+ }
+}
diff --git a/amenity-symbols.mss b/amenity-symbols.mss
new file mode 100644
index 0000000..f1699da
--- /dev/null
+++ b/amenity-symbols.mss
@@ -0,0 +1,112 @@
+.symbols {
+ [aeroway = 'helipad'][zoom >= 16]::aeroway {
+ point-file: url('symbols/helipad.p.16.png');
+ text-name: "[name]";
+ text-size: 8;
+ text-fill: #6692da;
+ text-dy: -10;
+ text-face-name: @bold-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ }
+
+ [aeroway = 'aerodrome'][zoom >= 10][zoom < 13]::aeroway {
+ [zoom < 11] {
+ point-file: url('symbols/aerodrome.p.16.png');
+ text-dy: -12;
+ }
+ text-name: "[name]";
+ text-size: 8;
+ text-fill: #6692da;
+ text-face-name: @oblique-fonts;
+ text-halo-radius: 1;
+ text-placement: interior;
+ }
+
+ [railway = 'level_crossing'][zoom >= 14]::railway {
+ point-file: url('symbols/level_crossing.png');
+ point-placement: interior;
+ [zoom >= 16] {
+ point-file: url('symbols/level_crossing2.png');
+ }
+ }
+
+ [man_made = 'lighthouse'][zoom >= 15]::man_made {
+ point-file: url('symbols/lighthouse.p.20.png');
+ point-placement: interior;
+ }
+
+ [natural = 'peak'][zoom >= 11]::natural {
+ point-file: url('symbols/peak.png');
+ point-placement: interior;
+ }
+
+ [natural = 'volcano'][zoom >= 11]::natural {
+ point-file: url('symbols/volcano.png');
+ point-placement: interior;
+ }
+
+ [natural = 'cave_entrance'][zoom >= 15]::natural {
+ point-file: url('symbols/poi_cave.p.16.png');
+ point-placement: interior;
+ }
+
+ [natural = 'spring'][zoom >= 14]::natural {
+ point-file: url('symbols/spring.png');
+ point-placement: interior;
+ }
+
+ [natural = 'tree'][zoom >= 16]::natural {
+ point-file: url('symbols/tree.png');
+ point-ignore-placement: true;
+ point-placement: interior;
+ [zoom >= 17] {
+ point-file: url('symbols/tree2.png');
+ }
+ }
+
+ [power = 'generator']['generator:source' = 'wind']::power,
+ [power = 'generator'][power_source = 'wind']::power,
+ [man_made = 'power_wind'] {
+ [zoom >= 15] {
+ point-file: url('symbols/power_wind.png');
+ point-placement: interior;
+ }
+ }
+
+ [man_made = 'windmill'][zoom >= 16]::man_made {
+ point-file: url('symbols/windmill.png');
+ point-placement: interior;
+ }
+
+ [man_made = 'mast'][zoom >= 17]::man_made {
+ point-file: url('symbols/communications.p.20.png');
+ point-placement: interior;
+ }
+
+ [highway = 'mini_roundabout'][zoom >= 15]::highway {
+ point-file: url('symbols/mini_round.png');
+ point-placement: interior;
+ }
+
+ [highway = 'gate']::highway,
+ [barrier = 'gate']::barrier {
+ [zoom >= 15] {
+ point-file: url('symbols/gate2.png');
+ point-placement: interior;
+ }
+ }
+
+ [barrier = 'lift_gate'][zoom >= 16]::barrier {
+ point-file: url('symbols/liftgate.png');
+ point-placement: interior;
+ }
+
+ [barrier = 'bollard'],
+ [barrier = 'block'] {
+ [zoom >= 16] {
+ point-file: url('symbols/bollard.png');
+ point-placement: interior;
+ }
+ }
+}
diff --git a/buildings.mss b/buildings.mss
new file mode 100644
index 0000000..9e988c4
--- /dev/null
+++ b/buildings.mss
@@ -0,0 +1,52 @@
+#buildings-lz {
+ [zoom >= 10] {
+ [railway = 'station']::railway,
+ [building = 'station'] {
+ polygon-fill: #d4aaaa;
+ polygon-clip: false;
+ }
+
+ [building = 'supermarket'] {
+ polygon-fill: pink;
+ polygon-opacity: 0.5;
+ polygon-clip: false;
+ }
+
+ [amenity = 'place_of_worship']::amenity {
+ polygon-opacity: 0.5;
+ polygon-fill: #777;
+ polygon-clip: false;
+ [zoom >= 15] {
+ polygon-opacity: 0.9;
+ polygon-fill: #aaa;
+ line-width: 0.3;
+ line-color: #111;
+ }
+ }
+ }
+}
+
+#buildings {
+ [building = 'INT-light'][zoom >= 12] {
+ polygon-fill: #bca9a9;
+ polygon-opacity: 0.7;
+ polygon-clip: false;
+ }
+ [building != 'INT-light'][building != ''][zoom >= 12] {
+ polygon-fill: #bca9a9;
+ polygon-opacity: 0.9;
+ polygon-clip: false;
+ [zoom >= 16] {
+ line-color: #330066;
+ line-width: 0.2;
+ }
+ }
+ [aeroway = 'terminal'][zoom >= 12]::aeroway {
+ polygon-fill: #cc99ff;
+ polygon-clip: false;
+ [zoom >= 14] {
+ line-color: #330066;
+ line-width: 0.2;
+ }
+ }
+}
diff --git a/citywalls.mss b/citywalls.mss
new file mode 100644
index 0000000..02ae59d
--- /dev/null
+++ b/citywalls.mss
@@ -0,0 +1,24 @@
+#citywalls {
+ [zoom >= 14] {
+ line-color: grey;
+ line-width: 4;
+ line-opacity: 0.8;
+ [zoom >= 15] {
+ line-width: 6;
+ }
+ [zoom >= 16] {
+ line-width: 9;
+ }
+ }
+}
+
+.castlewalls {
+ [zoom >= 14] {
+ line-color: #999;
+ line-width: 1;
+ }
+ [zoom >= 16] {
+ line-color: #888;
+ line-width: 2;
+ }
+}
diff --git a/ferry-routes.mss b/ferry-routes.mss
new file mode 100644
index 0000000..57145df
--- /dev/null
+++ b/ferry-routes.mss
@@ -0,0 +1,11 @@
+#ferry-routes {
+ [zoom >= 7] {
+ line-color: #66f;
+ line-width: 0.4;
+ line-dasharray: 4,4;
+ [zoom >= 11] {
+ line-width: 0.8;
+ line-dasharray: 6,6;
+ }
+ }
+}
diff --git a/get-shapefiles.sh b/get-shapefiles.sh
new file mode 100755
index 0000000..e21945f
--- /dev/null
+++ b/get-shapefiles.sh
@@ -0,0 +1,65 @@
+#!/bin/bash
+set -e -u
+
+UNZIP_OPTS=-qqu
+
+# 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/ne_10m_populated_places
+mkdir -p data/land-polygons-split-3857
+
+# world_boundaries
+echo "dowloading 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,shx,prj,dbf,cpg} -d data/
+
+# ne_110m_admin_0_boundary_lines_land
+echo "dowloading 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 -d data/ne_110m_admin_0_boundary_lines_land/
+
+# ne_10m_populated_places
+echo "dowloading ne_10m_populated_places..."
+curl -z data/ne_10m_populated_places.zip -L -o data/ne_10m_populated_places.zip http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip
+echo "expanding ne_10m_populated_places..."
+unzip $UNZIP_OPTS data/ne_10m_populated_places.zip -d data/ne_10m_populated_places/
+
+# land-polygons-split-3857
+echo "dowloading 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 -d data/
+
+
+#process populated places
+echo "processing ne_10m_populated_places..."
+rm -f data/ne_10m_populated_places/ne_10m_populated_places_fixed.*
+ogr2ogr --config SHAPE_ENCODING UTF8 data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp data/ne_10m_populated_places/ne_10m_populated_places.shp
+
+#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/ne_10m_populated_places/ne_10m_populated_places_fixed.shp \
+data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp
+
+
+#clean up
+echo "cleaning up..."
+rm data/ne_10m_populated_places/ne_10m_populated_places.*
+
+echo "...done!"
diff --git a/landcover.mss b/landcover.mss
new file mode 100644
index 0000000..b460703
--- /dev/null
+++ b/landcover.mss
@@ -0,0 +1,436 @@
+// --- Parks, woods, other green things ---
+
+@forest: #a0cf85;
+@grass: #cfeca8; // also meadow, common, garden, village_green, conservation
+@golf_course: #b5e3b5;
+@natural: #c6e4b4; // also grassland
+@park: #b6fdb6; // also recreation_ground
+@wood: #aed1a0;
+@vineyard: #abdf96;
+
+// --- sports ---
+
+@stadium: #3c9; // also sports_centre
+@track: #74dcba;
+@pitch: #8ad3af;
+
+// --- Other ----
+
+@aerodrome: #ccc;
+@allotments: #e5c7ab;
+@apron: #e9d1ff;
+@attraction: #f2caea;
+@barracks: #ff8f8f;
+@campsite: #ccff99; // also caravan_site, picnic_site
+@cemetery: #aacbaf; // also grave_yard
+@construction: #9d9d6c;
+@commercial: #efc8c8;
+@danger_area: pink;
+@desert: #e3b57a;
+@field: #660;
+@garages: #996;
+@heath: #d6d99f;
+@industrial: #dfd1d6; // also railway
+@farmyard: #ddbf92;
+@farm: #ead8bd; // also farmland
+@parking: #f7efb7;
+@playground: #ccfff1;
+@power: #bbb;
+@rest_area: #efc8c8; // also services
+@retail: #f1dada;
+@residential: #ddd;
+@sand: #ffdf88;
+@school: #f0f0d8; // also university, college, hospital, kindergarten
+
+#landcover {
+ [feature = 'leisure_swimming_pool'][zoom >= 14] {
+ polygon-fill: @water-color;
+ line-color: blue;
+ line-width: 0.5;
+ }
+
+ [feature = 'leisure_playground'][zoom >= 13] {
+ polygon-fill: @playground;
+ line-color: #666;
+ line-width: 0.3;
+ }
+
+ [feature = 'tourism_camp_site'],
+ [feature = 'tourism_caravan_site'],
+ [feature = 'tourism_picnic_site'] {
+ [zoom >= 13] {
+ polygon-fill: @campsite;
+ polygon-opacity: 0.5;
+ line-color: #666;
+ line-width: 0.3;
+ }
+ }
+
+ [feature = 'tourism_attraction'][zoom >= 10] {
+ polygon-fill: @attraction;
+ }
+
+ [feature = 'landuse_quarry'][zoom >= 11] {
+ polygon-pattern-file: url('symbols/quarry2.png');
+ line-width: 0.5;
+ line-color: grey;
+ }
+
+ [feature = 'landuse_vineyard'] {
+ [zoom >= 10][zoom < 13] {
+ polygon-fill: @vineyard;
+ }
+ [zoom >= 13] {
+ polygon-pattern-file: url('symbols/vineyard.png');
+ }
+ }
+
+ [feature = 'landuse_orchard'][zoom >= 10] {
+ polygon-pattern-file: url('symbols/orchard.png');
+ }
+
+ [feature = 'landuse_cemetery'],
+ [feature = 'landuse_grave_yard'],
+ [feature = 'amenity_grave_yard'] {
+ [zoom >= 10][zoom < 14] {
+ polygon-fill: @cemetery;
+ }
+ [zoom >= 14] {
+ [religion = 'jewish'] { polygon-pattern-file: url('symbols/cemetery_jewish.18.png'); }
+ [religion = 'christian'] { polygon-pattern-file: url('symbols/grave_yard.png'); }
+ [religion = 'INT-generic'] { polygon-pattern-file: url('symbols/grave_yard_generic.png'); }
+ }
+ }
+
+ [feature = 'landuse_residential'][zoom >= 10] {
+ polygon-fill: @residential;
+ }
+
+ [feature = 'landuse_garages'][zoom >= 12] {
+ polygon-fill: @garages;
+ polygon-opacity: 0.2;
+ }
+
+ [feature = 'military_barracks'][zoom >= 10] {
+ polygon-fill: @barracks;
+ }
+
+ [feature = 'landuse_field'],
+ [feature = 'natural_field'] {
+ [zoom >= 10] {
+ polygon-fill: @field;
+ polygon-opacity: 0.2;
+ [zoom >= 14] {
+ line-width: 0.3;
+ line-opacity: 0.4;
+ line-color: #660;
+ }
+ }
+ }
+
+ [feature = 'military_danger_area'] {
+ [zoom >= 9][zoom < 11] {
+ polygon-fill: @danger_area;
+ polygon-opacity: 0.3;
+ }
+ [zoom >= 11] {
+ polygon-pattern-file: url('symbols/danger.png');
+ }
+ }
+
+ [feature = 'landuse_meadow'],
+ [feature = 'landuse_grass'] {
+ [zoom >= 10] {
+ polygon-fill: @grass;
+ }
+ }
+
+ [feature = 'leisure_park'],
+ [feature = 'leisure_recreation_ground'] {
+ [zoom >= 10] {
+ polygon-fill: @park;
+ polygon-opacity: 0.6;
+ }
+ }
+
+ [feature = 'tourism_zoo'][zoom >= 10] {
+ polygon-pattern-file: url('symbols/zoo.png');
+ }
+
+ [feature = 'leisure_common'][zoom >= 10] {
+ polygon-fill: @grass;
+ }
+
+ [feature = 'leisure_garden'][zoom >= 10] {
+ polygon-fill: @grass;
+ }
+
+ [feature = 'leisure_golf_course'][zoom >= 10] {
+ polygon-fill: @golf_course;
+ }
+
+ [feature = 'landuse_allotments'] {
+ [zoom >= 10][zoom < 14] {
+ polygon-fill: @allotments;
+ }
+ [zoom >= 14] {
+ polygon-pattern-file: url('symbols/allotments.png');
+ }
+ }
+
+ [feature = 'landuse_forest'] {
+ [zoom >= 8] {
+ polygon-fill: @forest;
+ }
+ [zoom >= 14] {
+ polygon-pattern-file: url('symbols/forest.png');
+ }
+ }
+
+ [feature = 'landuse_farmyard'][zoom >= 9] {
+ polygon-fill: @farmyard;
+ }
+
+ [feature = 'landuse_farm'],
+ [feature = 'landuse_farmland'] {
+ [zoom >= 9] {
+ polygon-fill: @farm;
+ }
+ }
+
+ [feature = 'landuse_recreation_ground'],
+ [feature = 'landuse_conservation'] {
+ [zoom >= 10] {
+ polygon-fill: @grass;
+ }
+ }
+
+ [feature = 'landuse_village_green'][zoom >= 11] {
+ polygon-fill: @grass;
+ }
+
+ [feature = 'landuse_retail'][zoom >= 10] {
+ polygon-fill: @retail;
+ [zoom >= 15] {
+ line-width: 0.3;
+ line-color: red;
+ }
+ }
+
+ [feature = 'landuse_industrial'],
+ [feature = 'landuse_railway'] {
+ [zoom >= 10] {
+ polygon-fill: @industrial;
+ }
+ }
+
+ [feature = 'power_station'],
+ [feature = 'power_generator'] {
+ [zoom >= 10] {
+ polygon-fill: @power;
+ [zoom >= 12] {
+ line-width: 0.4;
+ line-color: #555;
+ }
+ }
+ }
+
+ [feature = 'power_sub_station'][zoom >= 13] {
+ polygon-fill: @power;
+ line-width: 0.4;
+ line-color: #555;
+ }
+
+ [feature = 'landuse_commercial'][zoom >= 10] {
+ polygon-fill: @commercial;
+ }
+
+ [feature = 'landuse_brownfield'],
+ [feature = 'landuse_landfill'],
+ [feature = 'landuse_greenfield'],
+ [feature = 'landuse_construction'] {
+ [zoom >= 10] {
+ polygon-fill: @construction;
+ polygon-opacity: 0.7;
+ }
+ }
+
+ [feature = 'natural_wood'] {
+ [zoom >= 8] {
+ polygon-fill: @wood;
+ }
+ }
+
+ [feature = 'natural_desert'][zoom >= 8] {
+ polygon-fill: @desert;
+ }
+
+ [feature = 'natural_sand'][zoom >= 10] {
+ polygon-fill: @sand;
+ }
+
+ [feature = 'natural_heath'][zoom >= 10] {
+ polygon-fill: @heath;
+ }
+
+ [feature = 'natural_grassland'][zoom >= 10] {
+ polygon-fill: #c6e4b4;
+ }
+
+ [feature = 'natural_scrub'] {
+ [zoom >= 10][zoom < 14] {
+ polygon-fill: #b5e3b5;
+ }
+ [zoom >= 14] {
+ polygon-pattern-file: url('symbols/scrub.png');
+ }
+ }
+
+ [feature = 'amenity_university'],
+ [feature = 'amenity_college'],
+ [feature = 'amenity_school'],
+ [feature = 'amenity_hospital'],
+ [feature = 'amenity_kindergarten'] {
+ [zoom >= 10] {
+ polygon-fill: @school;
+ [zoom >= 12] {
+ line-width: 0.3;
+ line-color: brown;
+ }
+ }
+ }
+
+ [feature = 'amenity_parking'][zoom >= 10] {
+ polygon-fill: @parking;
+ [zoom >= 15] {
+ line-width: 0.3;
+ line-color: @parking;
+ }
+ }
+
+ [feature = 'aeroway_apron'][zoom >= 12] {
+ polygon-fill: @apron;
+ }
+
+ [feature = 'aeroway_aerodrome'][zoom >= 12] {
+ polygon-fill: @aerodrome;
+ polygon-opacity: 0.2;
+ line-width: 0.2;
+ line-color: #555;
+ }
+
+ [feature = 'natural_beach'][zoom >= 13] {
+ polygon-pattern-file: url('symbols/beach.png');
+ }
+
+ [feature = 'highway_services'],
+ [feature = 'highway_rest_area'] {
+ [zoom >= 14] {
+ polygon-fill: @rest_area;
+ }
+ }
+}
+
+/* man_made=cutline */
+#landcover-line {
+ [zoom >= 14] {
+ line-width: 3;
+ line-join: round;
+ line-cap: square;
+ line-color: @land-color;
+ [zoom >= 16] {
+ line-width: 6;
+ }
+ }
+}
+
+#sports-grounds {
+ [leisure = 'sports_centre'],
+ [leisure = 'stadium'] {
+ [zoom >= 10] {
+ polygon-fill: @stadium;
+ }
+ }
+
+ [leisure = 'track'][zoom >= 10] {
+ polygon-fill: @track;
+ line-width: 0.5;
+ line-color: #888;
+ }
+
+ [leisure = 'pitch'][zoom >= 10] {
+ polygon-fill: @pitch;
+ line-width: 0.5;
+ line-color: #888;
+ }
+}
+
+
+#landuse-overlay {
+ [landuse = 'military'][zoom >= 10]::landuse {
+ polygon-pattern-file: url('symbols/military_red_hatch.png');
+ polygon-pattern-alignment: global;
+ line-color: #f55;
+ line-width: 3;
+ line-opacity: 0.329;
+ }
+ [leisure = 'nature_reserve'][zoom >= 10] {
+ polygon-pattern-file: url('symbols/nature_reserve5.png');
+ line-color: #6c3;
+ line-width: 0.5;
+ [zoom >= 14] {
+ polygon-pattern-file: url('symbols/nature_reserve6.png');
+ line-width: 1;
+ }
+ }
+}
+
+#cliffs {
+ [natural = 'cliff'][zoom >= 13] {
+ line-pattern-file: url('symbols/cliff.png');
+ [zoom >= 15] {
+ line-pattern-file: url('symbols/cliff2.png');
+ }
+ }
+ [man_made = 'embankment'][zoom >= 15]::man_made {
+ line-pattern-file: url('symbols/cliff.png');
+ }
+}
+
+#area-barriers {
+ [zoom >= 16] {
+ line-color: #444;
+ line-width: 0.4;
+ [barrier = 'hedge'] {
+ polygon-fill: #aed1a0;
+ }
+ }
+}
+
+.barriers {
+ [zoom >= 16] {
+ line-width: 0.4;
+ line-color: #444;
+ }
+ [barrier = 'embankment'][zoom >= 14] {
+ line-width: 0.4;
+ line-color: #444;
+ }
+ [barrier = 'hedge'][zoom >= 16] {
+ line-width: 3;
+ line-color: #aed1a0;
+ }
+}
+
+
+#theme-park {
+ [tourism = 'theme_park'][zoom >= 13] {
+ line-color: #734a08;
+ line-width: 1.5;
+ line-dasharray: 9,3;
+ line-opacity: 0.6;
+ [zoom >= 15] {
+ line-width: 2.5;
+ }
+ }
+}
diff --git a/openstreetmap-carto.style b/openstreetmap-carto.style
new file mode 100644
index 0000000..1c53f73
--- /dev/null
+++ b/openstreetmap-carto.style
@@ -0,0 +1,226 @@
+# This is the default osm2pgsql .style file that comes with osm2pgsql.
+#
+# A .style file has 4 columns that define how OSM objects end up in tables in
+# the database and what columns are created. It interacts with the command-line
+# hstore options.
+#
+# Columns
+# =======
+#
+# OsmType: This is either "node", "way" or "node,way" and indicates if this tag
+# applies to nodes, ways, or both.
+#
+# Tag: The tag
+#
+# DataType: The type of the column to be created. Normally "text"
+#
+# Flags: Flags that indicate what table the OSM object is moved into.
+#
+# There are 5 possible flags. These flags are used both to indicate if a column
+# should be created, and if ways with the tag are assumed to be areas. The area
+# assumptions can be overridden with an area=yes/no tag
+#
+# polygon - Create a column for this tag, and objects the tag with are areas
+#
+# linear - Create a column for this tag
+#
+# phstore - Don't create a column for this tag, but objects with the tag are areas
+#
+# delete - Drop this tag completely and don't create a column for it. This also
+# prevents the tag from being added to hstore columns
+#
+# nocache - Deprecated and does nothing
+#
+# If an object has a tag that indicates it is an area or has area=yes/1,
+# osm2pgsql will try to turn it into an area. If it succeeds, it places it in
+# the polygon table. If it fails (e.g. not a closed way) it places it in the
+# line table.
+#
+# Nodes are never placed into the polygon or line table and are always placed in
+# the point table.
+#
+# Hstore
+# ======
+#
+# The options --hstore, --hstore-match-only, and --hstore-all interact with
+# the .style file.
+#
+# With --hstore any tags without a column will be added to the hstore column.
+# This will also cause all objects to be kept.
+#
+# With --hstore-match-only the behavior for tags is the same, but objects are
+# only kept if they have a non-NULL value in one of the columns.
+#
+# With --hstore-all all tags are added to the hstore column unless they appear
+# in the style file with a delete flag, causing duplication between the normal
+# columns and the hstore column.
+#
+# Special database columns
+# ========================
+#
+# There are some special database columns that if present in the .style file
+# will be populated by osm2pgsql.
+#
+# These are
+#
+# z_order - datatype int4
+#
+# way_area - datatype real. The area of the way, in the units of the projection
+# (e.g. square mercator meters). Only applies to areas
+#
+# osm_user, osm_uid, osm_version, osm_timestamp - datatype text. Used with the
+# --extra-attributes option to include metadata in the database. If importing
+# with both --hstore and --extra-attributes the meta-data will end up in the
+# tags hstore column regardless of the style file.
+
+# OsmType Tag DataType Flags
+node,way access text linear
+node,way addr:housename text linear
+node,way addr:housenumber text linear
+node,way addr:interpolation text linear
+node,way admin_level text linear
+node,way aerialway text linear
+node,way aeroway text polygon
+node,way amenity text polygon
+node,way area text # hard coded support for area=1/yes => polygon is in osm2pgsql
+node,way barrier text linear
+node,way bicycle text
+node,way brand text linear
+node,way bridge text linear
+node,way boundary text linear
+node,way building text polygon
+node capital text linear
+node,way construction text linear
+node,way covered text linear
+node,way culvert text linear
+node,way cutting text linear
+node,way denomination text linear
+node,way disused text linear
+node ele text linear
+node,way embankment text linear
+node,way foot text linear
+node,way generator:source text linear
+node,way harbour text polygon
+node,way highway text linear
+node,way historic text polygon
+node,way horse text linear
+node,way intermittent text linear
+node,way junction text linear
+node,way landuse text polygon
+node,way layer text linear
+node,way leisure text polygon
+node,way lock text linear
+node,way man_made text polygon
+node,way military text polygon
+node,way motorcar text linear
+node,way name text linear
+node,way natural text polygon # natural=coastline tags are discarded by a hard coded rule in osm2pgsql
+node,way office text polygon
+node,way oneway text linear
+node,way operator text linear
+node,way place text polygon
+node poi text
+node,way population text linear
+node,way power text polygon
+node,way power_source text linear
+node,way public_transport text polygon
+node,way railway text linear
+node,way ref text linear
+node,way religion text nocache
+node,way route text linear
+node,way service text linear
+node,way shop text polygon
+node,way sport text polygon
+node,way surface text linear
+node,way toll text linear
+node,way tourism text polygon
+node,way tower:type text linear
+way tracktype text linear
+node,way tunnel text linear
+node,way water text polygon
+node,way waterway text polygon
+node,way wetland text polygon
+node,way width text linear
+node,way wood text linear
+node,way z_order int4 linear # This is calculated during import
+way way_area real # This is calculated during import
+
+# Area tags
+# We don't make columns for these tags, but objects with them are areas.
+# Mainly for use with hstore
+way abandoned:aeroway text phstore
+way abandoned:amenity text phstore
+way abandoned:building text phstore
+way abandoned:landuse text phstore
+way abandoned:power text phstore
+way area:highway text phstore
+
+# Deleted tags
+# These are tags that are generally regarded as useless for most rendering.
+# Most of them are from imports or intended as internal information for mappers
+# Some of them are automatically deleted by editors.
+# If you want some of them, perhaps for a debugging layer, just delete the lines.
+
+# These tags are used by mappers to keep track of data.
+# They aren't very useful for rendering.
+node,way note text delete
+node,way note:* text delete
+node,way source text delete
+node,way source_ref text delete
+node,way source:* text delete
+node,way attribution text delete
+node,way comment text delete
+node,way fixme text delete
+
+# Tags generally dropped by editors, not otherwise covered
+node,way created_by text delete
+node,way odbl text delete
+node,way odbl:note text delete
+node,way SK53_bulk:load text delete
+
+# Lots of import tags
+# TIGER (US)
+node,way tiger:* text delete
+
+# NHD (US)
+# NHD has been converted every way imaginable
+node,way NHD:* text delete
+node,way nhd:* text delete
+
+# GNIS (US)
+node,way gnis:* text delete
+
+# Geobase (CA)
+node,way geobase:* text delete
+# NHN (CA)
+node,way accuracy:meters text delete
+node,way sub_sea:type text delete
+node,way waterway:type text delete
+
+# KSJ2 (JA)
+# See also note:ja and source_ref above
+node,way KSJ2:* text delete
+# Yahoo/ALPS (JA)
+node,way yh:* text delete
+
+# osak (DK)
+node,way osak:* text delete
+
+# kms (DK)
+node,way kms:* text delete
+
+# ngbe (ES)
+# See also note:es and source:file above
+node,way ngbe:* text delete
+
+# naptan (UK)
+node,way naptan:* text delete
+
+# Corine (CLC) (Europe)
+node,way CLC:* text delete
+
+# misc
+node,way 3dshapes:ggmodelk text delete
+node,way AND_nosr_r text delete
+node,way import text delete
+node,way it:fvg:* text delete
diff --git a/placenames.mss b/placenames.mss
new file mode 100644
index 0000000..d98f2b9
--- /dev/null
+++ b/placenames.mss
@@ -0,0 +1,142 @@
+@placenames: #222;
+@placenames-light: #777777;
+.country {
+ [place = 'country'][zoom >= 2][zoom < 6] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #9d6c9d;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1.5;
+ text-wrap-width: 20;
+ [zoom >= 4] {
+ text-size: 10;
+ }
+ }
+}
+
+.state {
+ [place = 'state'][zoom >= 4][zoom < 9] {
+ text-name: "[ref]";
+ text-size: 9;
+ text-fill: #9d6c9d;
+ text-face-name: @oblique-fonts;
+ text-halo-radius: 1.5;
+ text-wrap-width: 0;
+ [zoom >= 5] {
+ text-name: "[name]";
+ }
+ [zoom >= 7] {
+ text-size: 11;
+ }
+ }
+}
+
+#placenames-capital {
+ [zoom >= 5][zoom < 15] {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: @placenames;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1.5;
+ text-min-distance: 10;
+ [zoom >= 6] {
+ text-size: 12;
+ }
+ [zoom >= 11] {
+ text-size: 15;
+ }
+ }
+}
+
+#placenames-medium::city {
+ [place = 'city'] {
+ [zoom >= 6][zoom < 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: @placenames;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1.5;
+ text-min-distance: 10;
+ [zoom >= 9] {
+ text-size: 12;
+ }
+ [zoom >= 11] {
+ text-size: 15;
+ }
+ }
+ }
+}
+
+#placenames-medium::town {
+ [place = 'town'] {
+ [zoom >= 9] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: @placenames;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1.5;
+ text-wrap-width: 20;
+ text-min-distance: 10;
+ }
+ [zoom >= 11] {
+ text-size: 11;
+ }
+ [zoom >= 14] {
+ text-size: 15;
+ text-fill: @placenames-light;
+ }
+ }
+}
+
+#placenames-small::suburb {
+ [place = 'suburb'][zoom >= 12] {
+ text-name: "[name]";
+ text-size: 11;
+ text-fill: @placenames;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1.5;
+ text-min-distance: 10;
+ [zoom >= 14] {
+ text-size: 14;
+ text-fill: @placenames-light;
+ }
+ }
+}
+
+#placenames-small::village {
+ [place = 'village'] {
+ [zoom >=12] {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: @placenames;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1.5;
+ text-min-distance: 10;
+ [zoom >= 15] {
+ text-size: 13;
+ text-fill: @placenames-light;
+ }
+ }
+ }
+}
+
+#placenames-small::hamlet {
+ [place = 'hamlet'],
+ [place = 'locality'],
+ [place = 'neighbourhood'],
+ [place = 'isolated_dwelling'],
+ [place = 'farm'] {
+ [zoom >= 14] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: @placenames;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1.5;
+ text-min-distance: 10;
+ }
+ [zoom >= 16] {
+ text-size: 12;
+ text-fill: @placenames-light;
+ }
+ }
+}
diff --git a/power.mss b/power.mss
new file mode 100644
index 0000000..e402c0d
--- /dev/null
+++ b/power.mss
@@ -0,0 +1,34 @@
+#power-line {
+ [zoom >= 14] {
+ line-width: 1;
+ line-color: #777;
+ }
+ [zoom >= 16] {
+ line-width: 1.5;
+ }
+}
+
+#power-minorline {
+ [zoom >= 16] {
+ line-width: 0.5;
+ line-color: #777;
+ }
+}
+
+#power-towers {
+ [zoom >= 14] {
+ point-file: url('symbols/power_tower_3x3.png');
+ }
+ [zoom >= 15] {
+ point-file: url('symbols/power_tower_5x5.png');
+ }
+ [zoom >= 17] {
+ point-file: url('symbols/power_tower.png');
+ }
+}
+
+#power-poles {
+ [zoom >= 16] {
+ point-file: url('symbols/power_pole.png');
+ }
+}
diff --git a/project.mml b/project.mml
new file mode 100644
index 0000000..7082f69
--- /dev/null
+++ b/project.mml
@@ -0,0 +1,1757 @@
+{
+ "bounds": [
+ -180,
+ -85.05112877980659,
+ 180,
+ 85.05112877980659
+ ],
+ "center": [
+ 0,
+ 0,
+ 4
+ ],
+ "format": "png",
+ "interactivity": false,
+ "minzoom": 0,
+ "maxzoom": 22,
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "Stylesheet": [
+ "style.mss",
+ "shapefiles.mss",
+ "landcover.mss",
+ "water.mss",
+ "water-features.mss",
+ "roads.mss",
+ "power.mss",
+ "citywalls.mss",
+ "placenames.mss",
+ "buildings.mss",
+ "amenity-symbols.mss",
+ "stations.mss",
+ "amenity-points.mss",
+ "ferry-routes.mss",
+ "aerialways.mss",
+ "admin.mss",
+ "addressing.mss"
+ ],
+ "Layer": [
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -85.051,
+ 179.99999692067183,
+ 83.66933299999998
+ ],
+ "id": "world",
+ "class": "",
+ "Datasource": {
+ "file": "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp",
+ "type": "shape"
+ },
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "world"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -85.051,
+ 179.99999692067183,
+ 83.66933299999998
+ ],
+ "id": "coast-poly",
+ "class": "",
+ "Datasource": {
+ "file": "data/land-polygons-split-3857/land_polygons.shp",
+ "type": "shape"
+ },
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "coast-poly"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.12960815429688,
+ -52.982724914179855,
+ 178.4432525634766,
+ 70.87402746981634
+ ],
+ "id": "builtup",
+ "class": "",
+ "Datasource": {
+ "file": "data/world_boundaries/builtup_area.shp",
+ "type": "shape"
+ },
+ "srs-name": "mercator",
+ "srs": "+proj=merc +datum=WGS84 +over",
+ "advanced": {},
+ "name": "builtup"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -140.99778,
+ -54.89681,
+ 141.03385176001382,
+ 70.16419
+ ],
+ "id": "necountries",
+ "class": "",
+ "Datasource": {
+ "file": "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp",
+ "type": "shape"
+ },
+ "srs-name": "WGS84",
+ "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
+ "advanced": {},
+ "name": "necountries"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way, religion,\ncoalesce (aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) as feature from (\nselect way,\n('aeroway_' || (case when aeroway in ('apron', 'aerodrome') then aeroway else null end)) as aeroway,\n('amenity_' || (case when amenity in ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity,\n('landuse_' || (case when landuse in ('quarry', 'vineyard', 'orchard', 'cemetery', 'grave_yard', 'residential', 'garages', 'field', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'greenfield', 'construction') then landuse else null end)) as landuse,\n('leisure_' || (case when leisure in ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'picnic_table') then leisure else null end)) as leisure,\n('military_' || (case when military in ('barracks', 'danger_area') then military else null end)) as military,\n('natural_' || (case when \"natural\" in ('field','beach','desert','heath','mud','grassland','wood','sand','scrub') then \"natural\" else null end)) as \"natural\",\n('power_' || (case when power in ('station','sub_station','generator') then power else null end)) as power,\n('tourism_' || (case when tourism in ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') then tourism else null end)) as tourism,\n('highway_' || (case when highway in ('services', 'rest_area') then highway else null end)) as highway,\ncase when religion in ('christian','jewish') then religion else 'INT-generic'::text end as religion\n from planet_osm_polygon\n where landuse is not null\n or leisure is not null\n or aeroway in ('apron','aerodrome')\n or amenity in ('parking','university','college','school','hospital','kindergarten','grave_yard')\n or military in ('barracks','danger_area')\n or \"natural\" in ('field','beach','desert','heath','mud','grassland','wood','sand','scrub')\n or power in ('station','sub_station','generator')\n or tourism in ('attraction','camp_site','caravan_site','picnic_site','zoo')\n or highway in ('services','rest_area')\n order by z_order,way_area desc\n ) as landcover\n) as features",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "",
+ "dbname": "gis"
+ },
+ "id": "landcover",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "landcover"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way\nfrom planet_osm_line\nwhere man_made='cutline'\n) as landcover_line",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "landcover-line",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "landcover-line"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,leisure,\ncase when leisure='pitch' then 2\n when leisure='track' then 1\n else 0 end as prio\n from planet_osm_polygon\n where leisure in ('sports_centre','stadium','pitch','track')\n order by z_order,prio,way_area desc\n) as sports_grounds",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "sports-grounds",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "sports-grounds"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,waterway\n from planet_osm_line\n where waterway in ('stream','drain','ditch')\n and (tunnel is null or tunnel != 'yes')\n ) as water_lines_casing",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "water-lines-casing",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "water-lines-casing"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,waterway\n from planet_osm_line\n where waterway='river'\n ) as water_lines_low_zoom",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "water-lines-low-zoom",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "water-lines-low-zoom"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,\"natural\",waterway,landuse,name\n from planet_osm_polygon\n where (waterway in ('dock','mill_pond','riverbank','canal')\n or landuse in ('reservoir','water','basin')\n or \"natural\" in ('lake','water','land','glacier','mud'))\n and building is null\n order by z_order,way_area desc\n ) as water_areas",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "water-areas",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "water-areas"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,\"natural\"\n from planet_osm_polygon\n where \"natural\" in ('marsh','wetland') and building is null\n order by z_order,way_area desc\n ) as water_areas_overlay",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "water-areas-overlay",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "water-areas-overlay"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,waterway,lock,name,tunnel\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n and (bridge is null or bridge not in ('yes','true','1','aqueduct'))\n order by z_order\n ) as water_lines",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "water-lines",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "water-lines"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,name from planet_osm_line where waterway='dam') as dam",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "dam",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "dam"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way from planet_osm_polygon where leisure ='marina') as marinas_area",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "marinas-area",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "marinas-area"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,man_made from planet_osm_polygon where man_made in ('pier','breakwater','groyne')) as piers_area",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "piers-area",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "piers-area"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,man_made from planet_osm_line where man_made in ('pier','breakwater','groyne')) as piers",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "piers",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "piers"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,waterway from planet_osm_point where waterway='lock_gate') as locks",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "locks",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "locks"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,coalesce(('highway_' || highway), ('railway_' ||(case when railway='preserved' and service in ('spur','siding','yard') then 'INT-preserved-ssy'::text when (railway='rail' and service in ('spur','siding','yard')) then 'INT-spur-siding-yard' when railway in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'abandoned', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, case when access in ('permissive') then 'permissive'::text when access in ('destination') then 'destination'::text when access in ('no', 'private') then 'no'::text else null end as access, construction, case when service in ('parking_aisle','drive-through','driveway') then 'INT-minor'::text else 'INT-normal'::text end as service, case when oneway in ('yes', '-1') and highway in ('motorway','motorway_link','trunk','trunk_link','primary','primary_link','secondary','secondary_link','tertiary','tertiary_link','residential','unclassified','road','service','pedestrian','raceway','living_street','construction') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'abandoned', 'construction')) and (tunnel='yes' or tunnel='building_passage' or covered='yes') order by z_order) as tunnels",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "tunnels",
+ "class": "tunnels-fill tunnels-casing access directions",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "tunnels",
+ "properties": {
+ "group-by": "layernotnull"
+ }
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way from planet_osm_line where \"historic\"='citywalls') as citywalls",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "citywalls",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "citywalls"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way from planet_osm_line where \"historic\"='castle_walls') as castlewalls",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "castlewalls",
+ "class": "castlewalls",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "castlewalls"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way from planet_osm_polygon where \"historic\"='castle_walls') as castlewalls_poly",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "castlewalls-poly",
+ "class": "castlewalls",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "castlewalls-poly"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,landuse,leisure\n from planet_osm_polygon\n where (landuse = 'military' or leisure='nature_reserve') and building is null\n ) as landuse_overlay",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "landuse-overlay",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "landuse-overlay"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way, barrier from planet_osm_line where barrier is not null) as line_barriers",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "line-barriers",
+ "class": "barriers",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "line-barriers"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,\"natural\",man_made from planet_osm_line where \"natural\" = 'cliff' or man_made = 'embankment') as cliffs",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "cliffs",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "cliffs"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,barrier from planet_osm_polygon where barrier is not null) as area_barriers",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "area-barriers",
+ "class": "barriers",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "area-barriers"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way from planet_osm_line where route='ferry' ) as ferry_routes",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "ferry-routes",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "ferry-routes"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select distinct on (p.way) p.way as way,l.highway as int_tc_type\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle'\n order by p.way,v.prio\n ) as turning_circle_casing",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "turning-circle-casing",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "turning-circle-casing"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,coalesce(('highway_' || (case when highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform') then highway else null end)), ('railway_' || (case when railway in ('platform') then railway else null end))) as feature from planet_osm_polygon\n where highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform')\n or railway in ('platform')\n order by z_order,way_area desc) as highway_area_casing",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "highway-area-casing",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "highway-area-casing"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,coalesce(('highway_' || highway), ('railway_' ||(case when railway='preserved' and service in ('spur','siding','yard') then 'INT-preserved-ssy'::text when (railway='rail' and service in ('spur','siding','yard')) then 'INT-spur-siding-yard' when railway in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'abandoned', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, case when access in ('permissive') then 'permissive'::text when access in ('destination') then 'destination'::text when access in ('no', 'private') then 'no'::text else null end as access, construction, case when service in ('parking_aisle','drive-through','driveway') then 'INT-minor'::text else 'INT-normal'::text end as service, case when oneway in ('yes', '-1') and highway in ('motorway','motorway_link','trunk','trunk_link','primary','primary_link','secondary','secondary_link','tertiary','tertiary_link','residential','unclassified','road','service','pedestrian','raceway','living_street','construction') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'abandoned', 'construction')) and (tunnel is null or not tunnel in ('yes','true','1')) and (bridge is null or not bridge in ('yes','true','1','viaduct')) order by z_order) as roads",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "roads-casing",
+ "class": "roads-casing",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "roads-casing"
+ },
+ {
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,coalesce(('highway_' || (case when highway in ('residential','unclassified','pedestrian','service','footway','living_street','track','path','platform','services') then highway else null end)), ('railway_' || (case when railway in ('platform') then railway else null end)), (('aeroway_' || case when aeroway in ('runway','taxiway','helipad') then aeroway else null end))) as feature from planet_osm_polygon\n where highway in ('residential','unclassified','pedestrian','service','footway','living_street','track','path','platform','services')\n or railway in ('platform')\n or aeroway in ('runway','taxiway','helipad')\n order by z_order,way_area desc) as highway_area_fill",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "highway-area-fill",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "highway-area-fill"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,building,railway,amenity from planet_osm_polygon\n where railway='station'\n or building in ('station','supermarket')\n or amenity='place_of_worship'\n order by z_order,way_area desc) as buildings_lz",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "buildings-lz",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "buildings-lz"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,aeroway,\n case\n when building in ('residential','house','garage','garages','detached','terrace','apartments') then 'INT-light'::text\n else building\n end as building\n from planet_osm_polygon\n where (building is not null\n and building not in ('no','station','supermarket','planned')\n and (railway is null or railway != 'station')\n and (amenity is null or amenity != 'place_of_worship'))\n or aeroway = 'terminal'\n order by z_order,way_area desc) as buildings",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "buildings",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "buildings"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,coalesce(('highway_' || highway), ('railway_' ||(case when railway='preserved' and service in ('spur','siding','yard') then 'INT-preserved-ssy'::text when (railway='rail' and service in ('spur','siding','yard')) then 'INT-spur-siding-yard' when railway in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'abandoned', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, case when access in ('permissive') then 'permissive'::text when access in ('destination') then 'destination'::text when access in ('no', 'private') then 'no'::text else null end as access, construction, case when service in ('parking_aisle','drive-through','driveway') then 'INT-minor'::text else 'INT-normal'::text end as service, case when oneway in ('yes', '-1') and highway in ('motorway','motorway_link','trunk','trunk_link','primary','primary_link','secondary','secondary_link','tertiary','tertiary_link','residential','unclassified','road','service','pedestrian','raceway','living_street','construction') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'abandoned', 'construction')) and (tunnel is null or not tunnel in ('yes','true','1')) and (bridge is null or not bridge in ('yes','true','1','viaduct')) order by z_order) as roads_fill",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "roads-fill",
+ "class": "roads-fill access directions",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "roads-fill"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select distinct on (p.way) p.way as way,l.highway as int_tc_type\n from planet_osm_point p\n join planet_osm_line l\n on ST_DWithin(p.way,l.way,0.1)\n join (values\n ('tertiary',1),\n ('unclassified',2),\n ('residential',3),\n ('living_street',4),\n ('service',5)\n ) as v (highway,prio)\n on v.highway=l.highway\n where p.highway='turning_circle'\n order by p.way,v.prio\n ) as turning_circle_fill",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "turning-circle-fill",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "turning-circle-fill"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,aerialway from planet_osm_line where aerialway is not null) as aerialways",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "aerialways",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "aerialways"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,coalesce(('highway_' || (case when highway is not null then highway else null end)), ('railway_' || (case when (railway='rail' and service in ('spur','siding','yard')) then 'INT-spur-siding-yard' when railway in ('rail','tram','light_rail','funicular','narrow_gauge') then railway else null end))) as feature,tunnel\n from planet_osm_roads\n where highway is not null\n or (railway is not null and railway!='preserved' and (service is null or service not in ('spur','siding','yard')))\n order by z_order\n ) as roads_low_zoom",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "roads-low-zoom",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "roads-low-zoom"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,name from planet_osm_line where waterway='canal' and bridge in ('yes','true','1','aqueduct') order by z_order) as waterway_bridges",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "waterway-bridges",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "waterway-bridges"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,coalesce(('highway_' || highway), ('railway_' ||(case when railway='preserved' and service in ('spur','siding','yard') then 'INT-preserved-ssy'::text when (railway='rail' and service in ('spur','siding','yard')) then 'INT-spur-siding-yard' when railway in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'abandoned', 'construction', 'miniature', 'turntable') then railway else null end)), ('aeroway_' || aeroway)) as feature, horse, foot, bicycle, tracktype, case when access in ('permissive') then 'permissive'::text when access in ('destination') then 'destination'::text when access in ('no', 'private') then 'no'::text else null end as access, construction, case when service in ('parking_aisle','drive-through','driveway') then 'INT-minor'::text else 'INT-normal'::text end as service, case when oneway in ('yes', '-1') and highway in ('motorway','motorway_link','trunk','trunk_link','primary','primary_link','secondary','secondary_link','tertiary','tertiary_link','residential','unclassified','road','service','pedestrian','raceway','living_street','construction') then oneway else null end as oneway, case when layer is null then '0' else layer end as layernotnull from planet_osm_line where (highway in ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'road', 'unclassified', 'service', 'pedestrian', 'living_street', 'raceway', 'bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'platform', 'proposed', 'construction') or aeroway in ('runway','taxiway') or railway in ('light_rail', 'subway', 'narrow_gauge', 'rail', 'spur', 'siding', 'preserved', 'funicular', 'tram', 'monorail', 'platform', 'miniature', 'turntable', 'disused', 'abandoned', 'construction')) and bridge in ('yes','true','1','viaduct') and (layer is null or (layer in ('0','1','2','3','4','5'))) order by layernotnull, z_order) as bridges",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "bridges",
+ "class": "bridges-fill bridges-casing access directions",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "bridges",
+ "properties": {
+ "group-by": "layernotnull"
+ }
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,railway,bridge from planet_osm_line where railway='tram' and (tunnel is null or tunnel != 'yes')) as trams",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "trams",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "trams"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way from planet_osm_line where highway='bus_guideway' and (tunnel is null or tunnel != 'yes')) as guideways",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "guideways",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "guideways"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('0','1','2','3','4')\n ) as admin_01234",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "admin-01234",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "admin-01234"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('5','6','7','8')\n ) as admin_5678",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "admin-5678",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "admin-5678"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,admin_level\n from planet_osm_roads\n where \"boundary\"='administrative'\n and admin_level in ('9', '10')\n ) as admin_other",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "admin-other",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "admin-other"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way from planet_osm_line where \"power\"='minor_line') as power_minorline",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "power-minorline",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "power-minorline"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way from planet_osm_line where \"power\"='line') as power_line",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "power-line",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "power-line"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.58997888396897,
+ -85.051,
+ 179.38330358817018,
+ 82.48332318035943
+ ],
+ "id": "nepopulated",
+ "class": "",
+ "Datasource": {
+ "file": "data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp",
+ "type": "shape",
+ "encoding": "windows-1252"
+ },
+ "srs-name": "WGS84",
+ "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
+ "advanced": {
+ "encoding": "windows-1252"
+ },
+ "name": "nepopulated"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,place,name,ref\n from planet_osm_point\n where place in ('country','state')\n ) as placenames_large",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "placenames-large",
+ "class": "country state",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "placenames-large"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,place,name,ref\n from planet_osm_point\n where place in ('city','town') and capital='yes'\n ) as placenames_capital",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "placenames-capital",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "placenames-capital"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,place,name\n from planet_osm_point\n where place in ('city','town')\n and (capital is null or capital != 'yes')\n ) as placenames_medium",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "placenames-medium",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "placenames-medium"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,place,name\n from planet_osm_point\n where place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n ) as placenames_small",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "placenames-small",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "placenames-small"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,name,railway,aerialway,disused\n from planet_osm_point\n where railway in ('station','halt','tram_stop','subway_entrance')\n or aerialway='station'\n ) as stations",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "stations",
+ "class": "stations",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "stations"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,name,railway,aerialway,disused\n from planet_osm_polygon\n where railway in ('station','halt','tram_stop')\n or aerialway='station'\n ) as stations_poly",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "stations-poly",
+ "class": "stations",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "stations-poly"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,name,way_area\n from planet_osm_polygon\n where \"natural\"='glacier' and building is null\n order by way_area desc\n ) as glaciers_text",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "glaciers-text",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "glaciers-text"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select *\n from planet_osm_point\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n or railway='level_crossing'\n ) as amenity_symbols",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "amenity-symbols",
+ "class": "symbols",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "amenity-symbols"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select *\n from planet_osm_polygon\n where aeroway in ('aerodrome','helipad')\n or barrier in ('bollard','gate','lift_gate','block')\n or highway in ('mini_roundabout','gate')\n or man_made in ('lighthouse','power_wind','windmill','mast')\n or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n or \"natural\" in ('peak','volcano','spring','tree')\n or railway='level_crossing'\n ) as amenity_symbols_poly",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "amenity-symbols-poly",
+ "class": "symbols",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "amenity-symbols-poly"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,amenity,shop,tourism,highway,man_made,access,religion,waterway,lock,historic,leisure\n from planet_osm_point\n where amenity is not null\n or shop is not null\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals','ford')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or waterway='lock'\n or lock='yes'\n or leisure in ('playground','slipway','picnic_table')\n ) as amenity_points",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "amenity-points",
+ "class": "points",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "amenity-points"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,amenity,shop,tourism,highway,man_made,access,religion,waterway,lock,historic,leisure\n from planet_osm_polygon\n where amenity is not null\n or shop is not null\n or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n or highway in ('bus_stop','traffic_signals')\n or man_made in ('mast','water_tower')\n or historic in ('memorial','archaeological_site')\n or leisure in ('playground', 'picnic_table')\n ) as amenity_points_poly",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "amenity-points-poly",
+ "class": "points",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "amenity-points-poly"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way from planet_osm_point where power='tower') as power_towers",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "power-towers",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "power-towers"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way from planet_osm_point where power='pole') as power_poles",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "power-poles",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "power-poles"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,highway,ref,char_length(ref) as length\n from planet_osm_roads\n where highway in ('motorway','trunk','primary','secondary')\n and ref is not null\n and char_length(ref) between 1 and 8\n ) as roads_text_ref_low_zoom",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "roads-text-ref-low-zoom",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "roads-text-ref-low-zoom"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,ref,name\n from planet_osm_point\n where highway='motorway_junction'\n ) as highway_junctions",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "highway-junctions",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "highway-junctions"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,coalesce(highway,aeroway) as highway,ref,char_length(ref) as length,\n case when bridge in ('yes','true','1') then 'yes'::text else 'no'::text end as bridge\n from planet_osm_line\n where (highway is not null or aeroway is not null)\n and ref is not null\n and char_length(ref) between 1 and 8\n ) as roads_text_ref",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "roads-text-ref",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "roads-text-ref"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way, highway, name\n from planet_osm_polygon\n where highway='pedestrian'\n and name is not null\n ) as roads_area_text_name",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "roads-area-text-name",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "roads-area-text-name"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way, highway, name\n from planet_osm_line\n where highway in ('motorway','motorway_link','trunk','trunk_link','primary','primary_link','secondary','secondary_link','tertiary','tertiary_link','residential','unclassified','road','service','pedestrian','raceway','living_street', 'construction') \n and name is not null\n ) as roads_text_name",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "roads-text-name",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "roads-text-name"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way, highway, name\n from planet_osm_line\n where highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n and name is not null\n ) as paths_text_name",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "paths-text-name",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "paths-text-name"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,amenity,shop,access,leisure,landuse,man_made,\"natural\",place,tourism,ele,name,ref,military,aeroway,waterway,historic,NULL as way_area\n from planet_osm_point\n where amenity is not null\n or shop in ('supermarket','bakery','clothes','fashion','convenience','doityourself','hairdresser','department_store','butcher','car','car_repair','bicycle','florist')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or aeroway='gate'\n or waterway='lock'\n or historic in ('memorial','archaeological_site')\n ) as text",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "text",
+ "class": "text",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "text"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,aeroway,shop,access,amenity,leisure,landuse,man_made,\"natural\",place,tourism,NULL as ele,name,ref,military,waterway,historic,way_area\n from planet_osm_polygon\n where amenity is not null\n or shop in ('supermarket','bakery','clothes','fashion','convenience','doityourself','hairdresser','department_store', 'butcher','car','car_repair','bicycle')\n or leisure is not null\n or landuse is not null\n or tourism is not null\n or \"natural\" is not null\n or man_made in ('lighthouse','windmill')\n or place='island'\n or military='danger_area'\n or historic in ('memorial','archaeological_site')\n ) as text_poly",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "text-poly",
+ "class": "text",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "text-poly"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select name, way, way_area from planet_osm_polygon where building is not null and building not in ('no','station','supermarket')) as building_text",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "building-text",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "building-text"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way from planet_osm_line where \"addr:interpolation\" is not null) as interpolation",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "interpolation",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "interpolation"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,\"addr:housenumber\" from planet_osm_polygon where \"addr:housenumber\" is not null and building is not null\n union\n select way,\"addr:housenumber\" from planet_osm_point where \"addr:housenumber\" is not null\n ) as housenumbers",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "housenumbers",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "housenumbers"
+ },
+ {
+ "geometry": "point",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,\"addr:housename\" from planet_osm_polygon where \"addr:housename\" is not null and building is not null\n union\n select way,\"addr:housename\" from planet_osm_point where \"addr:housename\" is not null\n ) as housenames",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "housenames",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "housenames"
+ },
+ {
+ "geometry": "linestring",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": " (select way,waterway,lock,name,tunnel\n from planet_osm_line\n where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n order by z_order\n ) as water_lines_text",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "water-lines-text",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "water-lines-text"
+ },
+ {
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427098,
+ 179.99999692067183,
+ 84.96651228427099
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way, name, admin_level from planet_osm_polygon where \"boundary\" = 'administrative' and admin_level in ('0','1','2','3','4','5','6','7','8','9','10')) as admin_text",
+ "key_field": "",
+ "geometry_field": "way",
+ "extent_cache": "custom",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "dbname": "gis"
+ },
+ "id": "admin-text",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "admin-text",
+ "geometry": "linestring"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,way_area,name,boundary from planet_osm_polygon where boundary='national_park' and building is null) as national_park_boundaries",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "national-park-boundaries",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "national-park-boundaries"
+ },
+ {
+ "geometry": "polygon",
+ "extent": [
+ -179.99999692067183,
+ -84.96651228427099,
+ 179.99999692067183,
+ 84.96651228427098
+ ],
+ "Datasource": {
+ "type": "postgis",
+ "table": "(select way,name,tourism from planet_osm_polygon where tourism='theme_park') as theme_park",
+ "extent": "-20037508,-19929239,20037508,19929239",
+ "key_field": "",
+ "geometry_field": "way",
+ "dbname": "gis"
+ },
+ "id": "theme-park",
+ "class": "",
+ "srs-name": "900913",
+ "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+ "advanced": {},
+ "name": "theme-park"
+ }
+ ],
+ "scale": 1,
+ "metatile": 2,
+ "name": "OpenStreetMap Carto",
+ "description": "A faithful reimplementation of the standard OpenStreetMap style"
+}
diff --git a/roads.mss b/roads.mss
new file mode 100644
index 0000000..a841e93
--- /dev/null
+++ b/roads.mss
@@ -0,0 +1,2449 @@
+/* For the main linear features, such as roads and railways. */
+
+@motorway-fill: #89a4cb;
+@trunk-fill: #94d494;
+@trunk-fill-alternative: #97d397;
+@primary-fill: #dd9f9f;
+@secondary-fill: #f9d6aa;
+@tertiary-fill: #f8f8ba;
+@residential-fill: #ffffff;
+@service-fill: #ffffff;
+@living-street-fill: #ccc;
+@pedestrian-fill: #ededed;
+@road-fill: #ddd;
+@path-fill: black;
+@footway-fill: salmon;
+@steps-fill: @footway-fill;
+@cycleway-fill: blue;
+@bridleway-fill: green;
+@track-fill: #996600;
+@track-grade1-fill: #b37700;
+@track-grade2-fill: #a87000;
+@aeroway-fill: #bbc;
+@runway-fill: @aeroway-fill;
+@taxiway-fill: @aeroway-fill;
+@helipad-fill: @aeroway-fill;
+
+@default-casing: white;
+@motorway-casing: #7788a1;
+@trunk-casing: #7eae7e;
+@primary-casing: #c57b7e;
+@secondary-casing: #cca16a;
+@tertiary-casing: #c6c68a;
+@residential-casing: #bbb;
+@service-casing: #999;
+@living-street-casing: @default-casing;
+@living-street-tunnel-casing: #bbb;
+@pedestrian-casing: grey;
+@path-casing: @default-casing;
+@footway-casing: @default-casing;
+@steps-casing: @default-casing;
+@cycleway-casing: @default-casing;
+@bridleway-casing: @default-casing;
+@track-casing: @default-casing;
+
+@residential-construction: #aaa;
+@service-construction: #aaa;
+
+@permissive-marking: #cf9;
+@destination-marking: #c2e0ff;
+@private-marking: #efa9a9;
+
+@tunnel-casing: grey;
+@bridge-casing: black;
+
+@motorway-tunnel-fill: lighten(@motorway-fill, 25%);
+@trunk-tunnel-fill: lighten(@trunk-fill, 10%);
+@primary-tunnel-fill: lighten(@primary-fill, 10%);
+@secondary-tunnel-fill: lighten(@secondary-fill, 5%);
+@tertiary-tunnel-fill: lighten(@tertiary-fill, 5%);
+@residential-tunnel-fill: lighten(@residential-fill, 10%);
+@living-street-tunnel-fill: lighten(@living-street-fill, 10%);
+
+@motorway-width-z12: 3;
+@motorway-link-width-z12: 1.5;
+@trunk-width-z12: 3.5;
+@primary-width-z12: 3.5;
+@secondary-width-z12: 3;
+
+@motorway-width-z13: 6.5;
+@motorway-link-width-z13: 4.5;
+@trunk-width-z13: 8.5;
+@primary-width-z13: 8.5;
+@secondary-width-z13: 9.5;
+@tertiary-width-z13: 6;
+@residential-width-z13: 3;
+
+@tertiary-width-z14: 7.5;
+@residential-width-z14: 4.5;
+
+@motorway-width-z15: 10.3;
+@motorway-link-width-z15: 7.8;
+@trunk-width-z15: 12.8;
+@primary-width-z15: 12.8;
+@secondary-width-z15: 12.8;
+@tertiary-width-z15: 11.2;
+@tertiary-link-width-z15: 11;
+@residential-width-z15: 8.3;
+
+@residential-width-z16: 11.2;
+
+@motorway-width-z17: 13.5; // shouldn't be narrower than trunk!
+@motorway-link-width-z17: 11.5;
+@trunk-width-z17: 18;
+@primary-width-z17: 18;
+@secondary-width-z17: 18;
+@tertiary-width-z17: 15.5;
+@tertiary-link-width-z17: 16;
+@residential-width-z17: 15.5;
+
+@casing-width-z12: 0.5;
+@casing-width-z13: 0.75;
+@residential-casing-width-z13: 0.5;
+@casing-width-z14: 0.75;
+@casing-width-z15: 0.9;
+@tertiary-link-casing-width-z15: 0.8;
+@casing-width-z16: 0.9;
+@casing-width-z17: 1.25;
+@tertiary-link-casing-width-z17: 1.5;
+
+@bridge-casing-width-z12: 0.5;
+@bridge-casing-width-z13: 0.5;
+@bridge-casing-width-z14: 0.5;
+@bridge-casing-width-z15: 0.75;
+@bridge-casing-width-z16: 0.75;
+@bridge-casing-width-z17: 0.75;
+
+.roads-casing, .bridges-casing, .tunnels-casing {
+ ::casing_links {
+ [feature = 'highway_raceway'] {
+ [zoom >= 12] {
+ line-color: pink;
+ line-width: 1.2;
+ line-join: round;
+ line-cap: round;
+ }
+ [zoom >= 13] { line-width: 4; }
+ [zoom >= 15] { line-width: 7; }
+ }
+
+ [feature = 'highway_motorway_link'] {
+ [zoom >= 12] {
+ line-color: @motorway-casing;
+ line-width: @motorway-link-width-z12;
+ [zoom >= 13] { line-width: @motorway-link-width-z13; }
+ [zoom >= 15] { line-width: @motorway-link-width-z15; }
+ [zoom >= 17] { line-width: @motorway-link-width-z17; }
+ .roads-casing {
+ line-join: round;
+ }
+ .tunnels-casing {
+ line-dasharray: 4,2;
+ }
+ .bridges-casing {
+ line-join: round;
+ [zoom >= 13] { line-color: @bridge-casing; }
+ }
+ }
+ }
+
+ [feature = 'highway_trunk_link'] {
+ [zoom >= 12] {
+ line-width: @trunk-width-z12;
+ [zoom >= 13] { line-width: @trunk-width-z13; }
+ [zoom >= 15] { line-width: @trunk-width-z15; }
+ [zoom >= 17] { line-width: @trunk-width-z17; }
+ line-color: @trunk-casing;
+ .roads-casing {
+ line-join: round;
+ line-cap: round;
+ }
+ .tunnels-casing {
+ line-dasharray: 4,2;
+ }
+ .bridges-casing {
+ line-join: round;
+ [zoom >= 13] { line-color: @bridge-casing; }
+ }
+ }
+ }
+
+ [feature = 'highway_primary_link'] {
+ [zoom >= 12] {
+ line-color: @primary-casing;
+ line-width: @primary-width-z12;
+ [zoom >= 13] { line-width: @primary-width-z13; }
+ [zoom >= 15] { line-width: @primary-width-z15; }
+ [zoom >= 17] { line-width: @primary-width-z17; }
+ .roads-casing {
+ line-join: round;
+ line-cap: round;
+ }
+ .tunnels-casing {
+ line-dasharray: 4,2;
+ }
+ .bridges-casing {
+ line-join: round;
+ [zoom >= 13] { line-color: @bridge-casing; }
+ }
+ }
+ }
+
+ [feature = 'highway_secondary_link'] {
+ [zoom >= 12] {
+ line-color: @secondary-casing;
+ line-width: @secondary-width-z12;
+ [zoom >= 13] { line-width: @secondary-width-z13; }
+ [zoom >= 15] { line-width: @secondary-width-z15; }
+ [zoom >= 17] { line-width: @secondary-width-z17; }
+ .roads-casing {
+ line-cap: round;
+ line-join: round;
+ }
+ .tunnels-casing {
+ line-dasharray: 4,2;
+ }
+ .bridges-casing {
+ [zoom >= 13] {
+ line-color: @bridge-casing;
+ line-join: round;
+ }
+ }
+ }
+ }
+
+ [feature = 'highway_tertiary_link'] {
+ [zoom >= 13] {
+ line-color: @tertiary-casing;
+ line-width: @tertiary-width-z13;
+ [zoom >= 14] { line-width: @tertiary-width-z14; }
+ [zoom >= 15] { line-width: @tertiary-link-width-z15; }
+ [zoom >= 17] { line-width: @tertiary-link-width-z17; }
+ .roads-casing {
+ line-cap: round;
+ line-join: round;
+ }
+ .tunnels-casing {
+ line-dasharray: 4,2;
+ }
+ .bridges-casing {
+ [zoom >= 14] {
+ line-color: @bridge-casing;
+ line-join: round;
+ }
+ }
+ }
+ }
+ }
+
+ ::casing {
+ [zoom >= 12] {
+ [feature = 'highway_motorway'] {
+ line-width: @motorway-width-z12;
+ [zoom >= 13] { line-width: @motorway-width-z13; }
+ [zoom >= 15] { line-width: @motorway-width-z15; }
+ [zoom >= 17] { line-width: @motorway-width-z17; }
+ line-color: @motorway-casing;
+ .roads-casing {
+ line-join: round;
+ line-cap: round;
+ }
+ .tunnels-casing {
+ line-dasharray: 4,2;
+ }
+ .bridges-casing {
+ line-join: round;
+ [zoom >= 13] { line-color: @bridge-casing; }
+ }
+ }
+ }
+
+ [feature = 'highway_trunk'] {
+ [zoom >= 12] {
+ line-color: @trunk-casing;
+ line-width: @trunk-width-z12;
+ [zoom >= 13] { line-width: @trunk-width-z13; }
+ [zoom >= 15] { line-width: @trunk-width-z15; }
+ [zoom >= 17] { line-width: @trunk-width-z17; }
+ .roads-casing {
+ line-join: round;
+ line-cap: round;
+ }
+ .tunnels-casing {
+ line-dasharray: 4,2;
+ }
+ .bridges-casing {
+ line-join: round;
+ [zoom >= 13] { line-color: @bridge-casing; }
+ }
+ }
+ }
+
+ [feature = 'highway_primary'] {
+ [zoom >= 12] {
+ line-color: @primary-casing;
+ line-width: @primary-width-z12;
+ [zoom >= 13] { line-width: @primary-width-z13; }
+ [zoom >= 15] { line-width: @primary-width-z15; }
+ [zoom >= 17] { line-width: @primary-width-z17; }
+ .roads-casing {
+ line-join: round;
+ }
+ .tunnels-casing {
+ line-dasharray: 4,2;
+ }
+ .bridges-casing {
+ line-join: round;
+ [zoom >= 13] { line-color: @bridge-casing; }
+ }
+ }
+ }
+
+ [feature = 'highway_secondary'] {
+ [zoom >= 12] {
+ line-color: @secondary-casing;
+ line-width: @secondary-width-z12;
+ [zoom >= 13] { line-width: @secondary-width-z13; }
+ [zoom >= 15] { line-width: @secondary-width-z15; }
+ [zoom >= 17] { line-width: @secondary-width-z17; }
+ .roads-casing {
+ line-join: round;
+ line-cap: round;
+ }
+ .tunnels-casing {
+ line-dasharray: 4,2;
+ }
+ .bridges-casing {
+ [zoom >= 13] {
+ line-color: @bridge-casing;
+ line-join: round;
+ }
+ }
+ }
+ }
+
+ [feature = 'highway_tertiary'] {
+ [zoom >= 13] {
+ line-color: @tertiary-casing;
+ line-width: @tertiary-width-z13;
+ [zoom >= 14] { line-width: @tertiary-width-z14; }
+ [zoom >= 15] { line-width: @tertiary-width-z15; }
+ [zoom >= 17] { line-width: @tertiary-width-z17; }
+ .roads-casing {
+ line-join: round;
+ line-cap: round;
+ }
+ .tunnels-casing {
+ line-dasharray: 4,2;
+ }
+ .bridges-casing {
+ [zoom >= 14] {
+ line-color: @bridge-casing;
+ line-join: round;
+ }
+ }
+ }
+ }
+
+ [feature = 'highway_residential'],
+ [feature = 'highway_unclassified'],
+ [feature = 'highway_road'] {
+ [zoom >= 13] {
+ line-color: @residential-casing;
+ line-width: @residential-casing-width-z13;
+ [zoom >= 14] { line-width: @residential-width-z14; }
+ [zoom >= 15] { line-width: @residential-width-z15; }
+ [zoom >= 16] { line-width: @residential-width-z16; }
+ [zoom >= 17] { line-width: @residential-width-z17; }
+ .roads-casing {
+ line-join: round;
+ line-cap: round;
+ }
+ .tunnels-casing {
+ line-dasharray: 4,2;
+ }
+ .bridges-casing {
+ [zoom >= 14] {
+ line-color: @bridge-casing;
+ line-join: round;
+ }
+ }
+ }
+ }
+
+ [feature = 'highway_service'] {
+ [zoom >= 14][service = 'INT-normal'],
+ [zoom >= 16][service = 'INT-minor'] {
+ line-color: @service-casing;
+ [service = 'INT-normal'] {
+ .roads-casing, .tunnels-casing {
+ line-width: 2.5;
+ [zoom >= 16] { line-width: 7; }
+ }
+ .bridges-casing {
+ line-width: 3;
+ [zoom >= 16] { line-width: 8; }
+ }
+ }
+ [service = 'INT-minor'] {
+ line-width: 4;
+ }
+ line-join: round;
+ line-cap: round;
+ .tunnels-casing { line-dasharray: 4,2; }
+ .bridges-casing {
+ line-color: @bridge-casing;
+ line-join: round;
+ line-cap: butt;
+ }
+ }
+ }
+
+ [feature = 'highway_pedestrian'] {
+ [zoom >= 13] {
+ line-join: round;
+ .roads-casing, .tunnels-casing {
+ line-width: 2;
+ line-color: @pedestrian-casing;
+ line-cap: round;
+ [zoom >= 14] { line-width: 3.6; }
+ [zoom >= 15] { line-width: 6.5; }
+ [zoom >= 16] { line-width: 9; }
+ .tunnels-casing {
+ line-dasharray: 4,2;
+ }
+ }
+ .bridges-casing {
+ line-width: 2.2;
+ line-color: @bridge-casing;
+ [zoom >= 14] { line-width: 3.8; }
+ [zoom >= 15] { line-width: 7; }
+ [zoom >= 16] { line-width: 9.5; }
+ }
+ }
+ }
+
+ [feature = 'highway_living_street'] {
+ [zoom >= 13] {
+ line-width: 2.5;
+ line-color: @living-street-casing;
+ [zoom >= 14] { line-width: 4; }
+ [zoom >= 15] { line-width: 6; }
+ [zoom >= 16] { line-width: 9; }
+ [zoom >= 17] { line-width: 14.5; }
+ .roads-casing {
+ line-cap: round;
+ line-join: round;
+ }
+ .tunnels-casing {
+ line-color: @living-street-tunnel-casing;
+ line-dasharray: 4,2;
+ }
+ .bridges-casing {
+ [zoom >= 14] {
+ line-color: @bridge-casing;
+ [zoom >= 15] { line-width: 6.2; }
+ [zoom >= 16] { line-width: 8.9; }
+ [zoom >= 17] { line-width: 15; }
+ }
+ }
+ }
+ }
+
+ [feature = 'highway_steps'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 6.5;
+ [zoom >= 15] { line-width: 9.5; }
+ line-color: @bridge-casing;
+ line-join: round;
+ }
+ }
+ }
+
+ [feature = 'highway_bridleway'],
+ [feature = 'highway_path'][horse = 'designated'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 5.5;
+ line-color: @bridge-casing;
+ line-join: round;
+ }
+ }
+ }
+
+ [feature = 'highway_footway'],
+ [feature = 'highway_path'][foot = 'designated'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 6;
+ line-color: @bridge-casing;
+ line-join: round;
+ }
+ }
+ }
+
+ [feature = 'highway_cycleway'],
+ [feature = 'highway_path'][bicycle = 'designated'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 5.5;
+ line-color: @bridge-casing;
+ line-join: round;
+ }
+ }
+ }
+
+ [feature = 'highway_path'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 4;
+ line-color: @bridge-casing;
+ line-join: round;
+ }
+ }
+ }
+
+ [feature = 'highway_track'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 4.5;
+ line-color: @bridge-casing;
+ line-join: round;
+ [tracktype = 'grade1'] {
+ line-width: 5;
+ }
+ }
+ }
+ }
+
+ [feature = 'railway_subway'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 5.5;
+ line-color: black;
+ line-join: round;
+ }
+ }
+ }
+
+ [feature = 'railway_light_rail'],
+ [feature = 'railway_narrow_gauge'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 5.5;
+ line-color: #555;
+ line-join: round;
+ }
+ }
+ }
+
+ [feature = 'railway_rail'],
+ [feature = 'railway_preserved'],
+ [feature = 'railway_monorail'][zoom >= 14] {
+ .bridges-casing {
+ [zoom >= 13] {
+ line-width: 6.5;
+ line-color: black;
+ line-join: round;
+ }
+ }
+ }
+
+ [feature = 'railway_INT-spur-siding-yard'] {
+ .bridges-casing {
+ [zoom >= 13] {
+ line-width: 5.7;
+ line-color: black;
+ line-join: round;
+ }
+ }
+ }
+
+ [feature = 'railway_disused'],
+ [feature = 'railway_abandoned'],
+ [feature = 'railway_construction'],
+ [feature = 'railway_funicular'][zoom >= 14],
+ [feature = 'railway_miniature'][zoom >= 15],
+ [feature = 'railway_INT-preserved-ssy'][zoom >= 14] {
+ .bridges-casing {
+ [zoom >= 13] {
+ line-width: 6;
+ line-color: black;
+ line-join: round;
+ }
+ }
+ }
+
+ [feature = 'aeroway_runway'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 19;
+ line-color: black;
+ line-join: round;
+ }
+ }
+ }
+
+ [feature = 'aeroway_taxiway'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 5;
+ line-color: black;
+ line-join: round;
+ [zoom >= 15] { line-width: 7; }
+ }
+ }
+ }
+ }
+
+ ::bridges_background {
+ [feature = 'highway_bridleway'],
+ [feature = 'highway_path'][horse = 'designated'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 4;
+ line-color: @bridleway-casing;
+ line-join: round;
+ line-cap: round;
+ }
+ }
+ }
+
+ [feature = 'highway_footway'],
+ [feature = 'highway_path'][foot = 'designated'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 4.5;
+ line-color: @footway-casing;
+ line-join: round;
+ line-cap: round;
+ }
+ }
+ }
+
+ [feature = 'highway_cycleway'],
+ [feature = 'highway_path'][bicycle = 'designated'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 4;
+ line-color: @cycleway-casing;
+ line-join: round;
+ line-cap: round;
+ }
+ }
+ }
+
+ [feature = 'highway_steps'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 5;
+ [zoom >= 15] { line-width: 8; }
+ line-color: @steps-casing;
+ line-join: round;
+ }
+ }
+ }
+
+ [feature = 'highway_path'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 2.5;
+ line-color: @path-casing;
+ line-join: round;
+ line-cap: round;
+ }
+ }
+ }
+
+ [feature = 'highway_track'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 3;
+ line-color: @track-casing;
+ line-join: round;
+ line-cap: round;
+ [tracktype = 'grade1'] { line-width: 3.5; }
+ }
+ }
+ }
+
+ [feature = 'railway_rail'][zoom >= 13],
+ [feature = 'railway_preserved'][zoom >= 14],
+ [feature = 'railway_monorail'][zoom >= 14] {
+ .bridges-casing {
+ line-width: 5;
+ line-color: white;
+ line-join: round;
+ }
+ }
+
+ [feature = 'railway_INT-spur-siding-yard'] {
+ .bridges-casing {
+ [zoom >= 13] {
+ line-width: 4;
+ line-color: white;
+ line-join: round;
+ line-cap: round;
+ }
+ }
+ }
+
+ [feature = 'railway_disused'],
+ [feature = 'railway_abandoned'],
+ [feature = 'railway_construction'],
+ [feature = 'railway_funicular'][zoom >= 14],
+ [feature = 'railway_miniature'][zoom >= 15],
+ [feature = 'railway_INT-preserved-ssy'][zoom >= 14] {
+ .bridges-casing {
+ [zoom >= 13] {
+ line-width: 4.5;
+ line-color: white;
+ line-join: round;
+ line-cap: round;
+ }
+ }
+ }
+
+ [feature = 'railway_subway'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 4;
+ line-color: white;
+ }
+ }
+ }
+
+ [feature = 'railway_light_rail'],
+ [feature = 'railway_narrow_gauge'] {
+ .bridges-casing {
+ [zoom >= 14] {
+ line-width: 4;
+ line-color: white;
+ }
+ }
+ }
+ }
+}
+
+.roads-fill,.bridges-fill,.tunnels-fill {
+ ::fill_links {
+ [feature = 'highway_motorway_link'] {
+ [zoom >= 12] {
+ line-width: @motorway-link-width-z12 - 2 * @casing-width-z12;
+ [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @casing-width-z13; }
+ [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @casing-width-z15; }
+ [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @casing-width-z17; }
+ .roads-fill, .bridges-fill {
+ line-color: @motorway-fill;
+ }
+ .tunnels-fill {
+ line-color: @motorway-tunnel-fill;
+ }
+ .bridges-fill {
+ line-width: @motorway-link-width-z12 - 2 * @bridge-casing-width-z12;
+ [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @bridge-casing-width-z13; }
+ [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @bridge-casing-width-z15; }
+ [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @bridge-casing-width-z17; }
+ }
+ line-cap: round;
+ line-join: round;
+ }
+ }
+
+ [feature = 'highway_trunk_link'] {
+ [zoom >= 12] {
+ line-width: @trunk-width-z12 - 2 * @casing-width-z12;
+ [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @casing-width-z13; }
+ [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @casing-width-z15; }
+ [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @casing-width-z17; }
+ .roads-fill, .bridges-fill {
+ line-color: @trunk-fill;
+ }
+ .tunnels-fill {
+ line-color: @trunk-tunnel-fill;
+ }
+ .bridges-fill {
+ line-width: @trunk-width-z12 - 2 * @bridge-casing-width-z12;
+ [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @bridge-casing-width-z13; }
+ [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @bridge-casing-width-z15; }
+ [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @bridge-casing-width-z17; }
+ }
+ line-cap: round;
+ line-join: round;
+ }
+ }
+
+ [feature = 'highway_primary_link'] {
+ [zoom >= 12] {
+ line-width: @primary-width-z12 - 2 * @casing-width-z12;
+ [zoom >= 13] { line-width: @primary-width-z13 - 2 * @casing-width-z13; }
+ [zoom >= 15] { line-width: @primary-width-z15 - 2 * @casing-width-z15; }
+ [zoom >= 17] { line-width: @primary-width-z17 - 2 * @casing-width-z17; }
+ .roads-fill, .bridges-fill {
+ line-color: @primary-fill;
+ }
+ .tunnels-fill {
+ line-color: @primary-tunnel-fill;
+ }
+ .bridges-fill {
+ line-width: @primary-width-z12 - 2 * @bridge-casing-width-z12;
+ [zoom >= 13] { line-width: @primary-width-z13 - 2 * @bridge-casing-width-z13; }
+ [zoom >= 15] { line-width: @primary-width-z15 - 2 * @bridge-casing-width-z15; }
+ [zoom >= 17] { line-width: @primary-width-z17 - 2 * @bridge-casing-width-z17; }
+ }
+ line-cap: round;
+ line-join: round;
+ }
+ }
+
+ [feature = 'highway_secondary_link'] {
+ [zoom >= 12] {
+ line-width: @secondary-width-z12 - 2 * @casing-width-z12;
+ [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @casing-width-z13; }
+ [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @casing-width-z15; }
+ [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @casing-width-z17; }
+ .roads-fill, .bridges-fill {
+ line-color: @secondary-fill;
+ }
+ .tunnels-fill {
+ line-color: @secondary-tunnel-fill;
+ }
+ .bridges-fill {
+ line-width: @secondary-width-z12 - 2 * @bridge-casing-width-z12;
+ [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @bridge-casing-width-z13; }
+ [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @bridge-casing-width-z15; }
+ [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @bridge-casing-width-z17; }
+ }
+ line-cap: round;
+ line-join: round;
+ }
+ }
+
+ [feature = 'highway_tertiary_link'] {
+ [zoom >= 13] {
+ line-width: @tertiary-width-z13 - 2 * @casing-width-z13;
+ [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @casing-width-z14; }
+ [zoom >= 15] { line-width: @tertiary-link-width-z15 - 2 * @tertiary-link-casing-width-z15; }
+ [zoom >= 17] { line-width: @tertiary-link-width-z17 - 2 * @tertiary-link-casing-width-z17; }
+ .roads-fill, .bridges-fill {
+ line-color: @tertiary-fill;
+ }
+ .tunnels-fill {
+ line-color: @tertiary-tunnel-fill;
+ }
+ .bridges-fill {
+ line-width: @tertiary-width-z13 - 2 * @bridge-casing-width-z13;
+ [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @bridge-casing-width-z14; }
+ [zoom >= 15] { line-width: @tertiary-link-width-z15 - 2 * @bridge-casing-width-z15; }
+ [zoom >= 17] { line-width: @tertiary-link-width-z17 - 2 * @bridge-casing-width-z17; }
+ }
+ line-cap: round;
+ line-join: round;
+ }
+ }
+ }
+
+ ::fill {
+
+ /*
+ * The construction rules for small roads are strange, since if construction is null its assumed that
+ * it's a more major road. The line-width = 0 could be removed by playing with the query to set a construction
+ * string for non-small roads.
+ *
+ * Also note that these rules are quite sensitive to re-ordering, since the instances end up swapping round
+ * (and then the dashes appear below the fills). See
+ * https://github.com/gravitystorm/openstreetmap-carto/issues/23
+ * https://github.com/mapbox/carto/issues/235
+ * https://github.com/mapbox/carto/issues/237
+ */
+ [feature = 'highway_proposed'],
+ [feature = 'highway_construction'] {
+ [zoom >= 12] {
+ line-width: 2;
+ line-color: #9cc;
+
+ [construction = 'motorway'],
+ [construction = 'motorway_link'] {
+ line-color: @motorway-fill;
+ }
+ [construction = 'trunk'],
+ [construction = 'trunk_link'] {
+ line-color: @trunk-fill;
+ }
+ [construction = 'primary'],
+ [construction = 'primary_link'] {
+ line-color: @primary-fill;
+ }
+ [construction = 'secondary'],
+ [construction = 'secondary_link'] {
+ line-color: @secondary-fill;
+ }
+ [construction = 'tertiary'],
+ [construction = 'tertiary_link'] {
+ line-color: @tertiary-fill;
+ [zoom < 13] {
+ line-width: 0;
+ b/line-width: 0;
+ }
+ }
+ [construction = 'residential'],
+ [construction = 'unclassified'],
+ [construction = 'living_street'] {
+ line-color: @residential-construction;
+ [zoom < 13] {
+ line-width: 0;
+ b/line-width: 0;
+ }
+ }
+ [construction = 'service'] {
+ line-color: @service-construction;
+ [zoom < 14] {
+ line-width: 0;
+ b/line-width: 0;
+ }
+ }
+ b/line-width: 2;
+ b/line-dasharray: 4,2;
+ b/line-color: white;
+ [zoom >= 13] {
+ line-width: 4;
+ b/line-width: 3.5;
+ b/line-dasharray: 6,4;
+ }
+ [zoom >= 16] {
+ line-width: 8;
+ b/line-width: 7;
+ b/line-dasharray: 8,6;
+ }
+ [construction = 'cycleway'] {
+ [zoom < 14] {
+ line-width: 0;
+ b/line-width: 0;
+ }
+ line-color: white;
+ line-width: 3;
+ line-opacity: 0.4;
+ b/line-width: 1.2;
+ b/line-color: #69f;
+ b/line-dasharray: 2,6;
+ }
+ }
+ }
+
+ [feature = 'highway_motorway'] {
+ [zoom >= 12] {
+ line-width: @motorway-width-z12 - 2 * @casing-width-z12;
+ [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @casing-width-z13; }
+ [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @casing-width-z15; }
+ [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @casing-width-z17; }
+ .roads-fill, .bridges-fill {
+ line-color: @motorway-fill;
+ }
+ .tunnels-fill {
+ line-color: @motorway-tunnel-fill;
+ }
+ .bridges-fill {
+ line-width: @motorway-width-z12 - 2 * @bridge-casing-width-z12;
+ [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @bridge-casing-width-z13; }
+ [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @bridge-casing-width-z15; }
+ [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @bridge-casing-width-z17; }
+ }
+ line-cap: round;
+ line-join: round;
+ }
+ }
+
+ [feature = 'highway_trunk'] {
+ [zoom >= 12] {
+ line-width: @trunk-width-z12 - 2 * @casing-width-z12;
+ [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @casing-width-z13; }
+ [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @casing-width-z15; }
+ [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @casing-width-z17; }
+ .roads-fill, .bridges-fill {
+ line-color: @trunk-fill;
+ }
+ .tunnels-fill {
+ line-color: @trunk-tunnel-fill;
+ }
+ .bridges-fill {
+ line-width: @trunk-width-z12 - 2 * @bridge-casing-width-z12;
+ [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @bridge-casing-width-z13; }
+ [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @bridge-casing-width-z15; }
+ [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @bridge-casing-width-z17; }
+ }
+ line-cap: round;
+ line-join: round;
+ }
+ }
+
+ [feature = 'highway_primary'] {
+ [zoom >= 12] {
+ line-width: @primary-width-z12 - 2 * @casing-width-z12;
+ [zoom >= 13] { line-width: @primary-width-z13 - 2 * @casing-width-z13; }
+ [zoom >= 15] { line-width: @primary-width-z15 - 2 * @casing-width-z15; }
+ [zoom >= 17] { line-width: @primary-width-z17 - 2 * @casing-width-z17; }
+ .roads-fill, .bridges-fill {
+ line-color: @primary-fill;
+ }
+ .tunnels-fill {
+ line-color: @primary-tunnel-fill;
+ }
+ .bridges-fill {
+ line-width: @primary-width-z12 - 2 * @bridge-casing-width-z12;
+ [zoom >= 13] { line-width: @primary-width-z13 - 2 * @bridge-casing-width-z13; }
+ [zoom >= 15] { line-width: @primary-width-z15 - 2 * @bridge-casing-width-z15; }
+ [zoom >= 17] { line-width: @primary-width-z17 - 2 * @bridge-casing-width-z17; }
+ }
+ line-cap: round;
+ line-join: round;
+ }
+ }
+
+ [feature = 'highway_secondary'] {
+ [zoom >= 12] {
+ line-width: @secondary-width-z12 - 2 * @casing-width-z12;
+ [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @casing-width-z13; }
+ [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @casing-width-z15; }
+ [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @casing-width-z17; }
+ .roads-fill, .bridges-fill {
+ line-color: @secondary-fill;
+ }
+ .tunnels-fill {
+ line-color: @secondary-tunnel-fill;
+ }
+ .bridges-fill {
+ line-width: @secondary-width-z12 - 2 * @bridge-casing-width-z12;
+ [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @bridge-casing-width-z13; }
+ [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @bridge-casing-width-z15; }
+ [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @bridge-casing-width-z17; }
+ }
+ line-cap: round;
+ line-join: round;
+ }
+ }
+
+ [feature = 'highway_tertiary'] {
+ [zoom >= 13] {
+ line-width: @tertiary-width-z13 - 2 * @casing-width-z13;
+ [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @casing-width-z14; }
+ [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @casing-width-z15; }
+ [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @casing-width-z17; }
+ .roads-fill, .bridges-fill {
+ line-color: @tertiary-fill;
+ }
+ .tunnels-fill {
+ line-color: @tertiary-tunnel-fill;
+ }
+ .bridges-fill {
+ line-width: @tertiary-width-z13 - 2 * @bridge-casing-width-z13;
+ [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @bridge-casing-width-z14; }
+ [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @bridge-casing-width-z15; }
+ [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @bridge-casing-width-z17; }
+ }
+ line-cap: round;
+ line-join: round;
+ }
+ }
+
+ [feature = 'highway_residential'],
+ [feature = 'highway_unclassified'] {
+ [zoom >= 13] {
+ line-width: @residential-width-z13 - 2 * @casing-width-z13;
+ [zoom >= 14] { line-width: @residential-width-z14 - 2 * @casing-width-z14; }
+ [zoom >= 15] { line-width: @residential-width-z15 - 2 * @casing-width-z15; }
+ [zoom >= 16] { line-width: @residential-width-z16 - 2 * @casing-width-z16; }
+ [zoom >= 17] { line-width: @residential-width-z17 - 2 * @casing-width-z17; }
+ .roads-fill, .bridges-fill {
+ line-color: @residential-fill;
+ }
+ .tunnels-fill {
+ line-color: @residential-tunnel-fill;
+ }
+ .bridges-fill {
+ line-width: @residential-width-z13 - 2 * @bridge-casing-width-z13;
+ [zoom >= 14] { line-width: @residential-width-z14 - 2 * @bridge-casing-width-z14; }
+ [zoom >= 15] { line-width: @residential-width-z15 - 2 * @bridge-casing-width-z15; }
+ [zoom >= 16] { line-width: @residential-width-z16 - 2 * @bridge-casing-width-z16; }
+ [zoom >= 17] { line-width: @residential-width-z17 - 2 * @bridge-casing-width-z17; }
+ }
+ line-cap: round;
+ line-join: round;
+ }
+ }
+
+ [feature = 'highway_tertiary'][zoom >= 10][zoom < 13],
+ [feature = 'highway_residential'][zoom >= 10][zoom < 13],
+ [feature = 'highway_unclassified'][zoom >= 10][zoom < 13],
+ [feature = 'highway_road'][zoom >= 10][zoom < 13],
+ [feature = 'highway_living_street'][zoom >= 12][zoom < 13] {
+ line-width: 1;
+ line-color: @residential-casing;
+ }
+
+ [feature = 'highway_road'] {
+ [zoom >= 13] {
+ .roads-fill, .bridges-fill {
+ line-color: @road-fill;
+ }
+ .tunnels-fill {
+ line-color: @residential-tunnel-fill;
+ }
+ .roads-fill {
+ line-width: 2;
+ [zoom >= 14] { line-width: 3; }
+ [zoom >= 15] { line-width: 6.5; }
+ [zoom >= 16] { line-width: 9.4; }
+ [zoom >= 17] { line-width: 13; }
+ }
+ .bridges-fill {
+ line-width: 3.5;
+ [zoom >= 14] { line-width: 7.5; }
+ [zoom >= 15] { line-width: 9.5; }
+ [zoom >= 17] { line-width: 14; }
+ }
+ .tunnels-fill {
+ line-width: 2;
+ [zoom >= 14] { line-width: 3.5; }
+ [zoom >= 15] { line-width: 9.5; }
+ [zoom >= 17] { line-width: 14; }
+ }
+ line-cap: round;
+ line-join: round;
+ }
+ }
+
+ [feature = 'highway_living_street'] {
+ [zoom >= 13] {
+ line-width: 1.5;
+ line-color: @living-street-fill;
+ line-join: round;
+ line-cap: round;
+ [zoom >= 14] { line-width: 3; }
+ [zoom >= 15] { line-width: 4.7; }
+ [zoom >= 16] { line-width: 7.4; }
+ [zoom >= 17] { line-width: 13; }
+ }
+ .tunnels-fill {
+ line-color: @living-street-tunnel-fill;
+ }
+ }
+
+ [feature = 'highway_service'] {
+ [zoom >= 13][service = 'INT-normal'] {
+ line-width: 1;
+ line-color: @residential-casing;
+ }
+ [zoom >= 14][service = 'INT-normal'],
+ [zoom >= 16][service = 'INT-minor'] {
+ line-color: @service-fill;
+ [service = 'INT-normal'] {
+ line-width: 2;
+ [zoom >= 16] { line-width: 6; }
+ }
+ [service = 'INT-minor'] {
+ line-width: 3;
+ }
+ line-join: round;
+ line-cap: round;
+ }
+ }
+
+ [feature = 'highway_pedestrian'] {
+ [zoom >= 13] {
+ line-color: @pedestrian-fill;
+ line-width: 1.5;
+ [zoom >= 14] { line-width: 3; }
+ [zoom >= 15] { line-width: 5.5; }
+ [zoom >= 16] { line-width: 8; }
+ line-join: round;
+ line-cap: round;
+ }
+ }
+
+ [feature = 'highway_platform'] {
+ [zoom >= 16] {
+ line-join: round;
+ line-width: 6;
+ line-color: grey;
+ line-cap: round;
+ b/line-width: 4;
+ b/line-color: #bbbbbb;
+ b/line-cap: round;
+ b/line-join: round;
+ }
+ }
+
+ [feature = 'highway_steps'] {
+ [zoom >= 13][zoom < 15] {
+ .roads-fill, .tunnels-fill {
+ line-width: 6;
+ line-color: @steps-casing;
+ line-opacity: 0.4;
+ }
+ b/line-width: 2;
+ b/line-color: @steps-fill;
+ b/line-dasharray: 1,3;
+ b/line-cap: round;
+ b/line-join: round;
+ }
+ }
+
+ [feature = 'highway_steps'] {
+ [zoom >= 15] {
+ line-width: 5.0;
+ line-color: @steps-fill;
+ line-dasharray: 2,1;
+ }
+ }
+
+ [feature = 'highway_bridleway'],
+ [feature = 'highway_path'][horse = 'designated'] {
+ [zoom >= 13] {
+ .tunnels-fill {
+ tunnelcasing/line-width: 5;
+ tunnelcasing/line-color: @tunnel-casing;
+ tunnelcasing/line-dasharray: 4,2;
+ }
+ .roads-fill, .tunnels-fill {
+ background/line-width: 3;
+ background/line-color: @bridleway-casing;
+ background/line-cap: round;
+ background/line-join: round;
+ .roads-fill { background/line-opacity: 0.4; }
+ }
+ line/line-color: @bridleway-fill;
+ line/line-dasharray: 4,2;
+ .roads-fill {
+ line/line-width: 1.2;
+ }
+ .bridges-fill {
+ [zoom >= 13] { line/line-width: 1.2; }
+ [zoom >= 14] { line/line-width: 1.5; }
+ }
+ .tunnels-fill {
+ line/line-width: 2;
+ line/line-opacity: 0.5;
+ line/line-join: round;
+ line/line-cap: round;
+ }
+ }
+ }
+
+ [feature = 'highway_footway'],
+ [feature = 'highway_path'][foot = 'designated'] {
+ [zoom >= 13] {
+ .tunnels-fill {
+ tunnelcasing/line-width: 5.5;
+ tunnelcasing/line-color: @tunnel-casing;
+ tunnelcasing/line-dasharray: 4,2;
+ }
+ .roads-fill, .tunnels-fill {
+ background/line-color: @footway-casing;
+ background/line-cap: round;
+ background/line-join: round;
+ .roads-fill { background/line-width: 4; }
+ .tunnels-fill { background/line-width: 3.5; }
+ .roads-fill { background/line-opacity: 0.4; }
+ }
+ line/line-color: @footway-fill;
+ line/line-dasharray: 1,3;
+ line/line-join: round;
+ line/line-cap: round;
+ .roads-fill {
+ line/line-width: 1.5;
+ }
+ .bridges-fill {
+ [zoom >= 13] { line/line-width: 1.5; }
+ [zoom >= 14] { line/line-width: 2; }
+ }
+ .tunnels-fill {
+ line/line-width: 2.5;
+ line/line-opacity: 0.5;
+ }
+ }
+ }
+
+ [feature = 'highway_cycleway'],
+ [feature = 'highway_path'][bicycle = 'designated'] {
+ [zoom >= 13] {
+ .tunnels-fill {
+ tunnelcasing/line-width: 5.5;
+ tunnelcasing/line-color: @tunnel-casing;
+ tunnelcasing/line-dasharray: 4,2;
+ }
+ .roads-fill, .tunnels-fill {
+ background/line-color: @cycleway-casing;
+ background/line-cap: round;
+ background/line-join: round;
+ background/line-width: 3;
+ .roads-fill { background/line-opacity: 0.4; }
+ }
+ line/line-color: @cycleway-fill;
+ line/line-dasharray: 1,3;
+ line/line-join: round;
+ line/line-cap: round;
+ .roads-fill {
+ line/line-width: 1.2;
+ }
+ .bridges-fill {
+ [zoom >= 13] { line/line-width: 1.2; }
+ [zoom >= 14] { line/line-width: 1.5; }
+ }
+ .tunnels-fill {
+ line/line-width: 2;
+ line/line-opacity: 0.5;
+ }
+ }
+ }
+
+ /*
+ * The above defininitions should override this when needed
+ * given the specitivity precedence.
+ */
+ [feature = 'highway_path'] {
+ [zoom >= 13] {
+ .tunnels-fill {
+ tunnelcasing/line-width: 5.5;
+ tunnelcasing/line-color: @tunnel-casing;
+ tunnelcasing/line-dasharray: 4,2;
+ }
+ .roads-fill, .tunnels-fill {
+ background/line-color: @path-casing;
+ background/line-cap: round;
+ background/line-join: round;
+ background/line-width: 3;
+ .roads-fill { background/line-opacity: 0.4; }
+ }
+ line/line-width: 0.5;
+ line/line-color: @path-fill;
+ line/line-dasharray: 6,3;
+ line/line-join: round;
+ line/line-cap: round;
+ .tunnels-fill {
+ line/line-width: 2;
+ line/line-opacity: 0.5;
+ }
+ }
+ }
+
+ [feature = 'highway_track'] {
+ [zoom >= 13] {
+ .tunnels-fill[zoom >= 14] {
+ tunnelcasing/line-width: 4.5;
+ tunnelcasing/line-color: @tunnel-casing;
+ tunnelcasing/line-dasharray: 4,2;
+ }
+
+ .roads-fill, .tunnels-fill {
+ [zoom >= 13] { background/line-width: 2.5; }
+ [zoom >= 14] { background/line-width: 3; }
+ .roads-fill { background/line-opacity: 0.4; }
+ background/line-color: @track-casing;
+ background/line-join: round;
+ background/line-cap: round;
+ }
+
+ line/line-color: @track-fill;
+ line/line-dasharray: 3,4;
+ line/line-cap: round;
+ line/line-join: round;
+ [zoom >= 13] { line/line-width: 1.2; }
+ [zoom >= 14] { line/line-width: 1.5; }
+ .roads-fill, .bridges-fill { line/line-opacity: 0.8; }
+ .tunnels-fill[zoom >= 14] { line/line-opacity: 0.5; }
+
+ [zoom >= 14] {
+ [tracktype = 'grade1'] {
+ .roads-fill, .tunnels-fill { background/line-width: 3.5; }
+ line/line-width: 2;
+ line/line-color: @track-grade1-fill;
+ line/line-dasharray: 100,0; /* i.e. none, see https://github.com/mapbox/carto/issues/214 */
+ .roads-fill, .bridges-fill { line/line-opacity: 0.7; }
+ }
+ [tracktype = 'grade2'] {
+ line/line-color: @track-grade2-fill;
+ line/line-dasharray: 9,4;
+ }
+ [tracktype = 'grade4'] {
+ line/line-width: 2;
+ line/line-dasharray: 4,7,1,5;
+ }
+ [tracktype = 'grade5'] {
+ line/line-width: 2;
+ line/line-dasharray: 1,5;
+ }
+ }
+ }
+ }
+
+ [feature = 'railway_rail'],
+ [feature = 'railway_INT-spur-siding-yard'] {
+ [zoom >= 13] {
+ .roads-fill, .bridges-fill {
+ dark/line-color: #999999;
+ [feature = 'railway_rail'] { dark/line-width: 3; }
+ [feature = 'railway_INT-spur-siding-yard'] { dark/line-width: 2; }
+ [feature = 'railway_rail'] { dark/line-join: round; }
+ [feature = 'railway_INT-spur-siding-yard'] .bridges-fill { dark/line-join: round; }
+ light/line-color: white;
+ [feature = 'railway_rail'] { light/line-width: 1; }
+ [feature = 'railway_INT-spur-siding-yard'] { light/line-width: 0.8; }
+ [feature = 'railway_rail'] { light/line-dasharray: 8,12; }
+ [feature = 'railway_INT-spur-siding-yard'] { light/line-dasharray: 0,8,11,1; }
+ light/line-join: round;
+ [feature = 'railway_rail'][zoom >= 14] { light/line-dasharray: 0,11,8,1; }
+ }
+ .tunnels-fill {
+ a/line-width: 3;
+ b/line-width: 3;
+ c/line-width: 3;
+ d/line-width: 3;
+ e/line-width: 3;
+ f/line-width: 3;
+ g/line-width: 3;
+ a/line-color: #ffffff;
+ b/line-color: #fdfdfd;
+ c/line-color: #ececec;
+ d/line-color: #cacaca;
+ e/line-color: #afafaf;
+ f/line-color: #a1a1a1;
+ g/line-color: #9b9b9b;
+ a/line-dasharray: 1,9;
+ b/line-dasharray: 0,1,1,8;
+ c/line-dasharray: 0,2,1,7;
+ d/line-dasharray: 0,3,1,6;
+ e/line-dasharray: 0,4,1,5;
+ f/line-dasharray: 0,5,1,4;
+ g/line-dasharray: 0,6,1,3;
+ a/line-join: round;
+ b/line-join: round;
+ c/line-join: round;
+ d/line-join: round;
+ e/line-join: round;
+ f/line-join: round;
+ g/line-join: round;
+ [feature = 'railway_INT-spur-siding-yard'] {
+ a/line-width: 2;
+ b/line-width: 2;
+ c/line-width: 2;
+ d/line-width: 2;
+ e/line-width: 2;
+ f/line-width: 2;
+ g/line-width: 2;
+ }
+ }
+ }
+ }
+
+ [feature = 'railway_narrow_gauge'] {
+ [zoom >= 13] {
+ line/line-width: 2;
+ line/line-color: #666;
+ .tunnels-fill {
+ tunnelcasing/line-width: 5;
+ tunnelcasing/line-dasharray: 5,3;
+ tunnelcasing/line-color: #666;
+ background/line-color: #fff;
+ background/line-width: 4;
+ line/line-color: #aaa;
+ line/line-width: 1.5;
+ }
+ }
+ }
+
+ [feature = 'railway_funicular'] {
+ [zoom >= 13] {
+ line/line-width: 2;
+ line/line-color: #666;
+ .tunnels-fill {
+ tunnelcasing/line-width: 5;
+ tunnelcasing/line-dasharray: 5,3;
+ tunnelcasing/line-color: #666;
+ background/line-color: #fff;
+ background/line-width: 4;
+ line/line-color: #aaa;
+ line/line-width: 1.5;
+ }
+ }
+ }
+
+ [feature = 'railway_miniature'] {
+ [zoom >= 15] {
+ line/line-width: 1.2;
+ line/line-color: #999;
+ dashes/line-width: 3;
+ dashes/line-color: #999;
+ dashes/line-dasharray: 1,10;
+ }
+ }
+
+ [feature = 'railway_tram'] {
+ .tunnels-fill {
+ [zoom >= 13] {
+ line-width: 1;
+ line-dasharray: 5,3;
+ line-color: #444;
+ [zoom >= 15] { line-width: 2; }
+ }
+ }
+ }
+
+ [feature = 'railway_light_rail'] {
+ [zoom >= 13] {
+ line-width: 2;
+ line-color: #666;
+ .tunnels-fill {
+ line-dasharray: 5,3;
+ }
+ }
+ }
+
+ [feature = 'railway_subway'] {
+ [zoom >= 12] {
+ line-width: 2;
+ line-color: #999;
+ .tunnels-fill {
+ line-dasharray: 5,3;
+ }
+ }
+ .bridges-fill {
+ [zoom >= 14] {
+ line-width: 2;
+ line-color: #999;
+ }
+ }
+ }
+
+ [feature = 'railway_preserved'] {
+ [zoom >= 12] {
+ dark/line-width: 1.5;
+ dark/line-color: #aaa;
+ dark/line-join: round;
+ [zoom >= 13] {
+ dark/line-width: 3;
+ dark/line-color: #999999;
+ light/line-width: 1;
+ light/line-color: white;
+ light/line-dasharray: 0,1,8,1;
+ light/line-join: round;
+ }
+ }
+ }
+
+ [feature = 'railway_INT-preserved-ssy'] {
+ [zoom >= 12] {
+ dark/line-width: 1;
+ dark/line-color: #aaa;
+ dark/line-join: round;
+ [zoom >= 13] {
+ dark/line-width: 2;
+ dark/line-color: #999999;
+ light/line-width: 0.8;
+ light/line-color: white;
+ light/line-dasharray: 0,1,8,1;
+ light/line-join: round;
+ }
+ }
+ }
+
+ [feature = 'railway_monorail'] {
+ [zoom >= 14] {
+ background/line-width: 4;
+ background/line-color: #fff;
+ background/line-opacity: 0.4;
+ background/line-cap: round;
+ background/line-join: round;
+ line/line-width: 3;
+ line/line-color: #777;
+ line/line-dasharray: 2,3;
+ line/line-cap: round;
+ line/line-join: round;
+ }
+ }
+
+ [feature = 'railway_disused'],
+ [feature = 'railway_abandoned'],
+ [feature = 'railway_construction'] {
+ [zoom >= 13] {
+ line-color: grey;
+ line-width: 2;
+ line-dasharray: 2,4;
+ line-join: round;
+ }
+ }
+
+ [feature = 'railway_platform'] {
+ [zoom >= 16] {
+ line-join: round;
+ line-width: 6;
+ line-color: grey;
+ line-cap: round;
+ b/line-width: 4;
+ b/line-color: #bbbbbb;
+ b/line-cap: round;
+ b/line-join: round;
+ }
+ }
+
+ [feature = 'railway_turntable'] {
+ [zoom >= 16] {
+ line-width: 1.5;
+ line-color: #999;
+ }
+ }
+
+ [feature = 'aeroway_runway'] {
+ [zoom >= 11][zoom < 14] {
+ line-width: 2;
+ line-color: @runway-fill;
+ [zoom >= 12] { line-width: 4; }
+ [zoom >= 13] { line-width: 7; }
+ }
+ [zoom >= 14] {
+ line-width: 18;
+ line-color: @runway-fill;
+ }
+ }
+
+ [feature = 'aeroway_taxiway'] {
+ [zoom >= 11][zoom < 14] {
+ line-width: 1;
+ line-color: @taxiway-fill;
+ }
+ [zoom >= 14] {
+ line-width: 4;
+ line-color: @taxiway-fill;
+ [zoom >= 15] { line-width: 6; }
+ }
+ }
+ }
+}
+
+#turning-circle-casing {
+ [int_tc_type = 'tertiary'][zoom >= 15] {
+ marker-width: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15;
+ marker-height: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15;
+ marker-allow-overlap: true;
+ marker-ignore-placement: true;
+ marker-line-width: 0;
+ marker-fill: @tertiary-casing;
+ [zoom >= 17] {
+ marker-width: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17;
+ marker-height: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17;
+ }
+ }
+
+ [int_tc_type = 'residential'],
+ [int_tc_type = 'unclassified'] {
+ [zoom >= 15] {
+ marker-width: (@residential-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15;
+ marker-height: (@residential-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15;
+ marker-allow-overlap: true;
+ marker-ignore-placement: true;
+ marker-line-width: 0;
+ marker-fill: @residential-casing;
+ [zoom >= 16] {
+ marker-width: (@residential-width-z16 - 2 * @casing-width-z16) * 1.8 + 2 * @casing-width-z16;
+ marker-height: (@residential-width-z16 - 2 * @casing-width-z16) * 1.8 + 2 * @casing-width-z16;
+ }
+ [zoom >= 17] {
+ marker-width: (@residential-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17;
+ marker-height: (@residential-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17;
+ }
+ }
+ }
+
+ [int_tc_type = 'living_street'][zoom >= 15] {
+ marker-width: 14;
+ marker-height: 14;
+ marker-allow-overlap: true;
+ marker-ignore-placement: true;
+ marker-line-width: 0;
+ marker-fill: @living-street-casing;
+ [zoom >= 16] {
+ marker-width: 18;
+ marker-height: 18;
+ }
+ [zoom >= 17] {
+ marker-width: 24;
+ marker-height: 24;
+ }
+ }
+
+ [int_tc_type = 'service'][zoom >= 16] {
+ marker-width: 14;
+ marker-height: 14;
+ marker-allow-overlap: true;
+ marker-ignore-placement: true;
+ marker-line-width: 0;
+ marker-fill: @service-casing;
+ [zoom >= 17] {
+ marker-width: 16;
+ marker-height: 16;
+ }
+ }
+}
+
+#turning-circle-fill {
+ [int_tc_type = 'tertiary'][zoom >= 15] {
+ marker-width: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8;
+ marker-height: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8;
+ marker-allow-overlap: true;
+ marker-ignore-placement: true;
+ marker-line-width: 0;
+ marker-fill: @tertiary-fill;
+ [zoom >= 17] {
+ marker-width: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8;
+ marker-width: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8;
+ }
+ }
+
+ [int_tc_type = 'residential'],
+ [int_tc_type = 'unclassified'] {
+ [zoom >= 15] {
+ marker-width: (@residential-width-z15 - 2 * @casing-width-z15) * 1.8;
+ marker-height: (@residential-width-z15 - 2 * @casing-width-z15) * 1.8;
+ marker-allow-overlap: true;
+ marker-ignore-placement: true;
+ marker-line-width: 0;
+ marker-fill: @residential-fill;
+ [zoom >= 16] {
+ marker-width: (@residential-width-z16 - 2 * @casing-width-z16) * 1.8;
+ marker-height: (@residential-width-z16 - 2 * @casing-width-z16) * 1.8;
+ }
+ [zoom >= 17] {
+ marker-width: (@residential-width-z17 - 2 * @casing-width-z17) * 1.8;
+ marker-height: (@residential-width-z17 - 2 * @casing-width-z17) * 1.8;
+ }
+ }
+ }
+
+ [int_tc_type = 'living_street'][zoom >= 15] {
+ marker-width: 12;
+ marker-height: 12;
+ marker-allow-overlap: true;
+ marker-ignore-placement: true;
+ marker-line-width: 0;
+ marker-fill: @living-street-fill;
+ [zoom >= 16] {
+ marker-width: 16;
+ marker-height: 16;
+ }
+ [zoom >= 17] {
+ marker-width: 22;
+ marker-height: 22;
+ }
+ }
+
+ [int_tc_type = 'service'][zoom >= 16] {
+ marker-width: 12;
+ marker-height: 12;
+ marker-allow-overlap: true;
+ marker-ignore-placement: true;
+ marker-line-width: 0;
+ marker-fill: @service-fill;
+ [zoom >= 17] {
+ marker-width: 14;
+ marker-height: 14;
+ }
+ }
+}
+
+#highway-area-casing {
+ [feature = 'highway_residential'],
+ [feature = 'highway_unclassified'] {
+ [zoom >= 14] {
+ line-color: #999;
+ line-width: 1;
+ }
+ }
+
+ [feature = 'highway_pedestrian'],
+ [feature = 'highway_service'],
+ [feature = 'highway_footway'],
+ [feature = 'highway_path'] {
+ [zoom >= 14] {
+ line-color: grey;
+ line-width: 1;
+ }
+ }
+
+ [feature = 'highway_track'][zoom >= 14] {
+ line-color: @track-fill;
+ line-width: 2;
+ }
+
+ [feature = 'highway_platform'],
+ [feature = 'railway_platform'] {
+ [zoom >= 16] {
+ line-color: grey;
+ line-width: 2;
+ line-cap: round;
+ line-join: round;
+ }
+ }
+}
+
+#highway-area-fill {
+ [feature = 'highway_living_street'][zoom >= 14] {
+ polygon-fill: #ccc;
+ }
+
+ [feature = 'highway_residential'],
+ [feature = 'highway_unclassified'],
+ [feature = 'highway_service'] {
+ [zoom >= 14] {
+ polygon-fill: #fff;
+ }
+ }
+
+ [feature = 'highway_pedestrian'],
+ [feature = 'highway_footway'],
+ [feature = 'highway_path'] {
+ [zoom >= 14] {
+ polygon-fill: #ededed;
+ }
+ }
+
+ [feature = 'highway_track'][zoom >= 14] {
+ polygon-fill: #dfcc66;
+ }
+
+ [feature = 'highway_platform'],
+ [feature = 'railway_platform'] {
+ [zoom >= 16] {
+ polygon-fill: #bbbbbb;
+ polygon-gamma: 0.65;
+ }
+ }
+
+ [feature = 'aeroway_runway'][zoom >= 11] {
+ polygon-fill: @runway-fill;
+ }
+
+ [feature = 'aeroway_taxiway'][zoom >= 13] {
+ polygon-fill: @taxiway-fill;
+ }
+
+ [feature = 'aeroway_helipad'][zoom >= 16] {
+ polygon-fill: @helipad-fill;
+ }
+}
+
+#highway-junctions {
+ [zoom >= 11] {
+ ref/text-name: "[ref]";
+ ref/text-size: 10;
+ ref/text-fill: #6666ff;
+ ref/text-min-distance: 2;
+ ref/text-face-name: @oblique-fonts;
+ ref/text-halo-radius: 1.5;
+ ref/text-wrap-width: 12;
+ [zoom >= 12] {
+ name/text-name: "[name]";
+ name/text-size: 9;
+ name/text-fill: #6666ff;
+ name/text-dy: -9;
+ name/text-face-name: @oblique-fonts;
+ name/text-halo-radius: 1;
+ name/text-wrap-character: ";";
+ name/text-wrap-width: 2;
+ name/text-min-distance: 2;
+ }
+ [zoom >= 15] {
+ ref/text-size: 12;
+ name/text-size: 11;
+ name/text-dy: -10;
+ }
+ }
+}
+
+.access::fill {
+ [access = 'permissive'] {
+ [feature = 'highway_unclassified'],
+ [feature = 'highway_residential'],
+ [feature = 'highway_footway'] {
+ [zoom >= 15] {
+ access/line-width: 6;
+ access/line-color: @permissive-marking;
+ access/line-dasharray: 6,8;
+ access/line-cap: round;
+ access/line-join: round;
+ access/line-opacity: 0.5;
+ }
+ }
+ [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15],
+ [feature = 'highway_service'][zoom >= 16] {
+ access/line-width: 3;
+ access/line-color: @permissive-marking;
+ access/line-dasharray: 6,8;
+ access/line-cap: round;
+ access/line-join: round;
+ access/line-opacity: 0.5;
+ [zoom >= 16] { access/line-width: 6; }
+ }
+ }
+ [access = 'destination'] {
+ [feature = 'highway_secondary'],
+ [feature = 'highway_tertiary'],
+ [feature = 'highway_unclassified'],
+ [feature = 'highway_residential'],
+ [feature = 'highway_road'],
+ [feature = 'highway_living_street'] {
+ [zoom >= 15] {
+ access/line-width: 6;
+ access/line-color: @destination-marking;
+ access/line-dasharray: 6,8;
+ access/line-cap: round;
+ access/line-join: round;
+ access/line-opacity: 0.5;
+ }
+ }
+ [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15],
+ [feature = 'highway_service'][zoom >= 16] {
+ access/line-width: 3;
+ access/line-color: @destination-marking;
+ access/line-dasharray: 6,8;
+ access/line-cap: round;
+ access/line-join: round;
+ access/line-opacity: 0.5;
+ [zoom >= 16] { access/line-width: 6; }
+ }
+ }
+ [access = 'no'] {
+ [feature = 'highway_motorway'],
+ [feature = 'highway_motorway_link'],
+ [feature = 'highway_trunk'],
+ [feature = 'highway_trunk_link'],
+ [feature = 'highway_primary'],
+ [feature = 'highway_primary_link'],
+ [feature = 'highway_secondary'],
+ [feature = 'highway_secondary_link'],
+ [feature = 'highway_tertiary'],
+ [feature = 'highway_tertiary_link'],
+ [feature = 'highway_unclassified'],
+ [feature = 'highway_residential'],
+ [feature = 'highway_road'],
+ [feature = 'highway_living_street'],
+ [feature = 'highway_track'],
+ [feature = 'highway_path'],
+ [feature = 'highway_footway'],
+ [feature = 'highway_cycleway'],
+ [feature = 'highway_bridleway'] {
+ [zoom >= 15] {
+ access/line-width: 6;
+ access/line-color: @private-marking;
+ access/line-dasharray: 6,8;
+ access/line-opacity: 0.5;
+ access/line-join: round;
+ access/line-cap: round;
+ }
+ }
+ [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15],
+ [feature = 'highway_service'][zoom >= 16] {
+ access/line-width: 3;
+ access/line-color: @private-marking;
+ access/line-dasharray: 6,8;
+ access/line-opacity: 0.5;
+ access/line-join: round;
+ access/line-cap: round;
+ [zoom >= 16] { access/line-width: 6; }
+ }
+ }
+}
+
+#roads-low-zoom {
+ [feature = 'highway_motorway'],
+ [feature = 'highway_motorway_link'] {
+ [zoom >= 5][zoom < 12] {
+ line-width: 0.5;
+ line-color: @motorway-fill;
+ [zoom >= 7] { line-width: 1; }
+ [zoom >= 9] { line-width: 1.4; }
+ [zoom >= 10] { line-width: 2; }
+ [zoom >= 11] { line-width: 2.5; }
+ }
+ }
+
+ [feature = 'highway_trunk'],
+ [feature = 'highway_trunk_link'] {
+ [zoom >= 5][zoom < 12] {
+ line-width: 0.4;
+ line-color: @trunk-fill;
+ [zoom >= 7] {
+ line-width: 1;
+ line-color: @trunk-fill-alternative;
+ }
+ [zoom >= 9] { line-width: 2; }
+ [zoom >= 11] { line-width: 2.5; }
+ }
+ }
+
+ [feature = 'highway_primary'],
+ [feature = 'highway_primary_link'] {
+ [zoom >= 7][zoom < 12] {
+ line-width: 0.5;
+ line-color: @primary-fill;
+ [zoom >= 9] { line-width: 1.2; }
+ [zoom >= 10] { line-width: 2; }
+ [zoom >= 11] { line-width: 2.5; }
+ }
+ }
+
+ [feature = 'highway_secondary'],
+ [feature = 'highway_secondary_link'] {
+ [zoom >= 9][zoom < 12] {
+ line-width: 1;
+ line-color: @secondary-fill;
+ [zoom >= 11] { line-width: 2; }
+ }
+ }
+
+ [feature = 'railway_rail'] {
+ [zoom >= 6][zoom < 13] {
+ line-width: 0.6;
+ line-color: #aaa;
+ [zoom >= 9] { line-width: 1; }
+ [zoom >= 10] { line-width: 2; }
+ .tunnels-casing {
+ line-dasharray: 5,2;
+ }
+ }
+ }
+
+ [feature = 'railway_INT-spur-siding-yard'] {
+ [zoom >= 11] {
+ line-width: 1;
+ line-color: #aaa;
+ line-join: round;
+ }
+ }
+
+ [feature = 'railway_tram'],
+ [feature = 'railway_light_rail'],
+ [feature = 'railway_funicular'],
+ [feature = 'railway_narrow_gauge'] {
+ [zoom >= 8][zoom < 13] {
+ line-width: 1;
+ line-color: #ccc;
+ [zoom >= 10] { line-color: #aaa }
+ }
+ }
+}
+
+#trams {
+ [railway = 'tram'][zoom >= 13] {
+ line-color: #444;
+ line-width: 1;
+ [zoom >= 15] {
+ line-width: 2;
+ [bridge = 'yes'] {
+ line-width: 5;
+ line-color: black;
+ b/line-width: 4;
+ b/line-color: white;
+ c/line-width: 2;
+ c/line-color: #444;
+ }
+ }
+ }
+}
+
+#guideways {
+ [zoom >= 13] {
+ line-width: 3;
+ line-color: #6666ff;
+ line-join: round;
+ b/line-width: 1;
+ b/line-color: white;
+ b/line-dasharray: 8,12;
+ b/line-join: round;
+ }
+ [zoom >= 14] {
+ b/line-dasharray: 0,11,8,1;
+ }
+}
+
+#roads-text-ref-low-zoom {
+ [highway = 'motorway'][length < 9] {
+ [zoom >= 10][zoom < 13] {
+ shield-name: "[ref]";
+ shield-size: 10;
+ shield-fill: #fff;
+ shield-placement: line;
+ shield-file: url("symbols/mot_shield[length].png");
+ shield-spacing: 750;
+ shield-min-distance: 30;
+ shield-face-name: @bold-fonts;
+ [length = 7] { shield-file: url('symbols/mot_shield6.png'); }
+ [length = 8] { shield-file: url('symbols/mot_shield7.png'); }
+ }
+ }
+
+ [highway = 'trunk'][zoom >= 11][zoom < 13] {
+ shield-name: "[ref]";
+ shield-size: 10;
+ shield-fill: #fff;
+ shield-placement: line;
+ shield-file: url("symbols/tru_shield[length].png");
+ shield-spacing: 750;
+ shield-min-distance: 30;
+ shield-face-name: @bold-fonts;
+ }
+
+ [highway = 'primary'][zoom >= 11][zoom < 13] {
+ shield-name: "[ref]";
+ shield-size: 10;
+ shield-fill: #fff;
+ shield-placement: line;
+ shield-file: url("symbols/pri_shield[length].png");
+ shield-spacing: 750;
+ shield-min-distance: 30;
+ shield-face-name: @bold-fonts;
+ }
+
+ [highway = 'secondary'][zoom >= 12][zoom < 13] {
+ shield-name: "[ref]";
+ shield-size: 10;
+ shield-fill: #fff;
+ shield-placement: line;
+ shield-file: url("symbols/sec_shield[length].png");
+ shield-spacing: 750;
+ shield-min-distance: 30;
+ shield-face-name: @bold-fonts;
+ }
+}
+
+#roads-text-ref {
+ [highway = 'motorway'][length < 9] {
+ [zoom >= 13] {
+ shield-name: "[ref]";
+ shield-size: 10;
+ shield-fill: #fff;
+ shield-placement: line;
+ shield-file: url("symbols/mot_shield[length].png");
+ shield-spacing: 750;
+ shield-min-distance: 30;
+ shield-face-name: @bold-fonts;
+ shield-avoid-edges: true;
+ [length = 7] { shield-file: url('symbols/mot_shield6.png'); }
+ [length = 8] { shield-file: url('symbols/mot_shield7.png'); }
+ }
+ }
+
+ [highway = 'trunk'][zoom >= 13] {
+ shield-name: "[ref]";
+ shield-size: 10;
+ shield-fill: #fff;
+ shield-placement: line;
+ shield-file: url("symbols/tru_shield[length].png");
+ shield-spacing: 750;
+ shield-min-distance: 30;
+ shield-face-name: @bold-fonts;
+ shield-avoid-edges: true;
+ }
+
+ [highway = 'primary'][zoom >= 13] {
+ shield-name: "[ref]";
+ shield-size: 10;
+ shield-fill: #fff;
+ shield-placement: line;
+ shield-file: url("symbols/pri_shield[length].png");
+ shield-spacing: 750;
+ shield-min-distance: 30;
+ shield-face-name: @bold-fonts;
+ shield-avoid-edges: true;
+ }
+
+ [highway = 'secondary'][bridge = 'no'][zoom >= 13] {
+ shield-name: "[ref]";
+ shield-size: 10;
+ shield-fill: #fff;
+ shield-placement: line;
+ shield-file: url("symbols/sec_shield[length].png");
+ shield-spacing: 750;
+ shield-min-distance: 30;
+ shield-face-name: @bold-fonts;
+ shield-avoid-edges: true;
+ }
+
+ [highway = 'tertiary'][bridge = 'no'][zoom >= 13] {
+ shield-name: "[ref]";
+ shield-size: 10;
+ shield-fill: #fff;
+ shield-placement: line;
+ shield-file: url("symbols/ter_shield[length].png");
+ shield-spacing: 750;
+ shield-min-distance: 30;
+ shield-face-name: @bold-fonts;
+ shield-avoid-edges: true;
+ }
+
+ [highway = 'unclassified'],
+ [highway = 'residential'] {
+ [zoom >= 15][bridge = 'no'] {
+ text-name: "[ref]";
+ text-size: 10;
+ text-fill: #000;
+ text-face-name: @bold-fonts;
+ text-min-distance: 18;
+ text-halo-radius: 1;
+ text-spacing: 750;
+ text-clip: false;
+ }
+ }
+
+ [highway = 'runway'],
+ [highway = 'taxiway'] {
+ [zoom >= 15][bridge = 'no'] {
+ text-name: "[ref]";
+ text-size: 10;
+ text-fill: #333;
+ text-spacing: 750;
+ text-clip: false;
+ text-placement: line;
+ text-min-distance: 18;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ }
+ }
+}
+
+#roads-text-name {
+ [highway = 'motorway'],
+ [highway = 'motorway_link'],
+ [highway = 'trunk'],
+ [highway = 'trunk_link'],
+ [highway = 'primary'],
+ [highway = 'primary_link'] {
+ [zoom >= 13] {
+ text-name: "[name]";
+ text-size: 8;
+ text-fill: black;
+ text-spacing: 300;
+ text-clip: false;
+ text-placement: line;
+ text-face-name: @book-fonts;
+ text-halo-radius: 0;
+ }
+ [zoom >= 14] {
+ text-size: 9;
+ }
+ [zoom >= 15] {
+ text-size: 10;
+ }
+ }
+ [highway = 'secondary'],
+ [highway = 'secondary_link'] {
+ [zoom >= 13] {
+ text-name: "[name]";
+ text-size: 8;
+ text-fill: black;
+ text-spacing: 300;
+ text-clip: false;
+ text-placement: line;
+ text-face-name: @book-fonts;
+ text-halo-radius: 0;
+ }
+ [zoom >= 14] {
+ text-size: 9;
+ }
+ [zoom >= 15] {
+ text-size: 10;
+ }
+ }
+ [highway = 'tertiary'],
+ [highway = 'tertiary_link'] {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #000;
+ text-spacing: 300;
+ text-clip: false;
+ text-placement: line;
+ text-face-name: @book-fonts;
+ text-halo-radius: 0;
+ }
+ [zoom >= 17] {
+ text-size: 11;
+ }
+ }
+ [highway = 'proposed'],
+ [highway = 'construction'] {
+ [zoom >= 13] {
+ text-name: "[name]";
+ text-size: 9;
+ text-fill: #000;
+ text-spacing: 300;
+ text-clip: false;
+ text-placement: line;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ }
+ [zoom >= 16] {
+ text-size: 11;
+ }
+ }
+ [highway = 'residential'],
+ [highway = 'unclassified'],
+ [highway = 'road'] {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 8;
+ text-spacing: 300;
+ text-clip: false;
+ text-placement: line;
+ text-halo-radius: 1;
+ text-face-name: @book-fonts;
+ }
+ [zoom >= 16] {
+ text-size: 9;
+ }
+ [zoom >= 17] {
+ text-size: 11;
+ text-spacing: 400;
+ }
+ }
+
+ [highway = 'raceway'],
+ [highway = 'service'] {
+ [zoom >= 16] {
+ text-name: "[name]";
+ text-size: 9;
+ text-spacing: 300;
+ text-clip: false;
+ text-placement: line;
+ text-face-name: @book-fonts;
+ }
+ [zoom >= 17] {
+ text-size: 11;
+ }
+ }
+
+ [highway = 'living_street'],
+ [highway = 'pedestrian'] {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 8;
+ text-spacing: 300;
+ text-clip: false;
+ text-placement: line;
+ text-face-name: @book-fonts;
+ }
+ [zoom >= 16] {
+ text-size: 9;
+ }
+ [zoom >= 17] {
+ text-size: 11;
+ }
+ }
+}
+
+#roads-area-text-name {
+ [highway = 'pedestrian'] {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 8;
+ text-face-name: @book-fonts;
+ text-placement: interior;
+ text-wrap-width: 30;
+ }
+ [zoom >= 16] {
+ text-size: 9;
+ }
+ [zoom >= 17] {
+ text-size: 11;
+ }
+ }
+}
+
+#paths-text-name {
+ [highway = 'track'] {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-size: 8;
+ text-spacing: 300;
+ text-clip: false;
+ text-placement: line;
+ text-face-name: @book-fonts;
+ }
+ [zoom >= 16] {
+ text-size: 9;
+ }
+ [zoom >= 17] {
+ text-size: 11;
+ }
+ }
+
+ [highway = 'footway'],
+ [highway = 'cycleway'],
+ [highway = 'path'],
+ [highway = 'steps'] {
+ [zoom >= 16] {
+ text-name: "[name]";
+ text-fill: #222;
+ text-size: 9;
+ text-halo-radius: 1;
+ text-halo-fill: rgba(255,255,255,0.8);
+ text-spacing: 200;
+ text-clip: false;
+ text-placement: line;
+ text-face-name: @book-fonts;
+ text-dy: 7;
+ }
+ [zoom >= 17] {
+ text-size: 11;
+ text-dy: 9;
+ }
+ }
+}
+
+.directions::directions {
+ [zoom >= 16] {
+ [oneway = 'yes'] {
+ dira/line-width: 1;
+ dira/line-dasharray: 0,12,10,152;
+ dira/line-color: #6c70d5;
+ dira/line-join: bevel;
+ dira/line-clip: false;
+ dirb/line-width: 2;
+ dirb/line-dasharray: 0,12,9,153;
+ dirb/line-color: #6c70d5;
+ dirb/line-join: bevel;
+ dirb/line-clip: false;
+ dirc/line-width: 3;
+ dirc/line-dasharray: 0,18,2,154;
+ dirc/line-color: #6c70d5;
+ dirc/line-join: bevel;
+ dirc/line-clip: false;
+ dird/line-width: 4;
+ dird/line-dasharray: 0,18,1,155;
+ dird/line-color: #6c70d5;
+ dird/line-join: bevel;
+ dird/line-clip: false;
+ }
+ [oneway = '-1'] {
+ dira/line-width: 1;
+ dira/line-dasharray: 0,12,10,152;
+ dira/line-color: #6c70d5;
+ dira/line-join: bevel;
+ dira/line-clip: false;
+ dirb/line-width: 2;
+ dirb/line-dasharray: 0,13,9,152;
+ dirb/line-color: #6c70d5;
+ dirb/line-join: bevel;
+ dirb/line-clip: false;
+ dirc/line-width: 3;
+ dirc/line-dasharray: 0,14,2,158;
+ dirc/line-color: #6c70d5;
+ dirc/line-join: bevel;
+ dirc/line-clip: false;
+ dird/line-width: 4;
+ dird/line-dasharray: 0,15,1,158;
+ dird/line-color: #6c70d5;
+ dird/line-join: bevel;
+ dird/line-clip: false;
+ }
+ }
+}
diff --git a/shapefiles.mss b/shapefiles.mss
new file mode 100644
index 0000000..1e8bfa0
--- /dev/null
+++ b/shapefiles.mss
@@ -0,0 +1,37 @@
+#necountries {
+ [zoom >= 1][zoom < 4] {
+ line-width: 0.5;
+ line-color: grey;
+ }
+}
+
+#nepopulated {
+ [zoom >= 3][zoom < 5] {
+ [SCALERANK = 0],
+ [SCALERANK = 1] {
+ text-name: "[NAME]";
+ text-size: 8;
+ text-fill: grey;
+ text-face-name: @book-fonts;
+ text-halo-radius: 1;
+ }
+ }
+}
+
+#world {
+ [zoom >= 0][zoom < 10] {
+ polygon-fill: @land-color;
+ }
+}
+
+#coast-poly {
+ [zoom >= 10] {
+ polygon-fill: @land-color;
+ }
+}
+
+#builtup {
+ [zoom >= 8][zoom < 10] {
+ polygon-fill: #ddd;
+ }
+}
diff --git a/stations.mss b/stations.mss
new file mode 100644
index 0000000..c414a46
--- /dev/null
+++ b/stations.mss
@@ -0,0 +1,54 @@
+.stations {
+ [railway = 'subway_entrance'][zoom >= 18] {
+ point-file: url('symbols/walking.n.12.png');
+ point-placement: interior;
+ }
+
+ [railway = 'station'][zoom >= 12] {
+ point-file: url('symbols/halt.png');
+ point-placement: interior;
+ [zoom >= 13] {
+ point-file: url('symbols/station_small.png');
+ }
+ [zoom >= 14] {
+ text-name: "[name]";
+ text-face-name: @bold-fonts;
+ text-size: 9;
+ text-fill: #66f;
+ text-dy: -8;
+ text-halo-radius: 1;
+ text-wrap-width: 0;
+ text-placement: interior;
+ }
+ [zoom >= 15] {
+ point-file: url('symbols/station.png');
+ text-size: 11;
+ text-dy: -10;
+ }
+ }
+
+ [railway = 'halt'],
+ [railway = 'tram_stop'],
+ [aerialway = 'station']::aerialway {
+ [zoom >= 13] {
+ point-file: url('symbols/halt.png');
+ }
+ [zoom >= 15] {
+ point-file: url('symbols/station_small.png');
+ }
+ [zoom >= 14] {
+ text-name: "[name]";
+ text-face-name: @book-fonts;
+ text-size: 8;
+ text-fill: #66f;
+ text-dy: -8;
+ text-halo-radius: 1;
+ text-wrap-width: 0;
+ text-placement: interior;
+ [zoom >= 15] {
+ text-size: 10;
+ text-dy: -10;
+ }
+ }
+ }
+}
diff --git a/style.mss b/style.mss
new file mode 100644
index 0000000..bb9224a
--- /dev/null
+++ b/style.mss
@@ -0,0 +1,12 @@
+Map {
+ background-color: @water-color;
+}
+
+@book-fonts: "DejaVu Sans Book", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular", "Droid Sans Fallback Regular", "unifont Medium";
+@bold-fonts: "DejaVu Sans Bold", "Arundina Sans Bold", "Padauk Bold",
+ "DejaVu Sans Book", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular", "Droid Sans Fallback Regular", "unifont Medium";
+@oblique-fonts: "DejaVu Sans Oblique", "Arundina Sans Italic",
+ "DejaVu Sans Book", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular", "Droid Sans Fallback Regular", "unifont Medium";
+
+@water-color: #b5d0d0;
+@land-color: #f2efe9;
diff --git a/symbols/aerodrome.p.16.png b/symbols/aerodrome.p.16.png
new file mode 100644
index 0000000..8f13cd7
--- /dev/null
+++ b/symbols/aerodrome.p.16.png
Binary files differ
diff --git a/symbols/aerodrome.png b/symbols/aerodrome.png
new file mode 100644
index 0000000..740229f
--- /dev/null
+++ b/symbols/aerodrome.png
Binary files differ
diff --git a/symbols/aiga_parking1.png b/symbols/aiga_parking1.png
new file mode 100644
index 0000000..641a3c9
--- /dev/null
+++ b/symbols/aiga_parking1.png
Binary files differ
diff --git a/symbols/allotments.png b/symbols/allotments.png
new file mode 100644
index 0000000..d5e2779
--- /dev/null
+++ b/symbols/allotments.png
Binary files differ
diff --git a/symbols/alpinehut.p.16.png b/symbols/alpinehut.p.16.png
new file mode 100644
index 0000000..84b0977
--- /dev/null
+++ b/symbols/alpinehut.p.16.png
Binary files differ
diff --git a/symbols/amenity_court.p.20.png b/symbols/amenity_court.p.20.png
new file mode 100644
index 0000000..eed9852
--- /dev/null
+++ b/symbols/amenity_court.p.20.png
Binary files differ
diff --git a/symbols/amenity_prison.p.20.png b/symbols/amenity_prison.p.20.png
new file mode 100644
index 0000000..05425fb
--- /dev/null
+++ b/symbols/amenity_prison.p.20.png
Binary files differ
diff --git a/symbols/arrow.png b/symbols/arrow.png
new file mode 100644
index 0000000..ffbb1df
--- /dev/null
+++ b/symbols/arrow.png
Binary files differ
diff --git a/symbols/arrow_back.png b/symbols/arrow_back.png
new file mode 100644
index 0000000..309ca5d
--- /dev/null
+++ b/symbols/arrow_back.png
Binary files differ
diff --git a/symbols/atm.png b/symbols/atm.png
new file mode 100644
index 0000000..9a1dd5d
--- /dev/null
+++ b/symbols/atm.png
Binary files differ
diff --git a/symbols/atm2.p.16.png b/symbols/atm2.p.16.png
new file mode 100644
index 0000000..62caf20
--- /dev/null
+++ b/symbols/atm2.p.16.png
Binary files differ
diff --git a/symbols/bandb.p.20.png b/symbols/bandb.p.20.png
new file mode 100644
index 0000000..eb7ebb9
--- /dev/null
+++ b/symbols/bandb.p.20.png
Binary files differ
diff --git a/symbols/bank2.p.16.png b/symbols/bank2.p.16.png
new file mode 100644
index 0000000..a7d30e8
--- /dev/null
+++ b/symbols/bank2.p.16.png
Binary files differ
diff --git a/symbols/bar.p.20.png b/symbols/bar.p.20.png
new file mode 100644
index 0000000..9b0e48b
--- /dev/null
+++ b/symbols/bar.p.20.png
Binary files differ
diff --git a/symbols/beach.png b/symbols/beach.png
new file mode 100644
index 0000000..ff9e307
--- /dev/null
+++ b/symbols/beach.png
Binary files differ
diff --git a/symbols/biergarten.p.16.png b/symbols/biergarten.p.16.png
new file mode 100644
index 0000000..241a4de
--- /dev/null
+++ b/symbols/biergarten.p.16.png
Binary files differ
diff --git a/symbols/bollard.png b/symbols/bollard.png
new file mode 100644
index 0000000..1ea4118
--- /dev/null
+++ b/symbols/bollard.png
Binary files differ
diff --git a/symbols/buddhist.png b/symbols/buddhist.png
new file mode 100644
index 0000000..9b0cc59
--- /dev/null
+++ b/symbols/buddhist.png
Binary files differ
diff --git a/symbols/bus_station.n.16.png b/symbols/bus_station.n.16.png
new file mode 100644
index 0000000..5224dd1
--- /dev/null
+++ b/symbols/bus_station.n.16.png
Binary files differ
diff --git a/symbols/bus_stop.p.12.png b/symbols/bus_stop.p.12.png
new file mode 100644
index 0000000..f290dcb
--- /dev/null
+++ b/symbols/bus_stop.p.12.png
Binary files differ
diff --git a/symbols/bus_stop.png b/symbols/bus_stop.png
new file mode 100644
index 0000000..e75f6fb
--- /dev/null
+++ b/symbols/bus_stop.png
Binary files differ
diff --git a/symbols/bus_stop_small.png b/symbols/bus_stop_small.png
new file mode 100644
index 0000000..6d8b655
--- /dev/null
+++ b/symbols/bus_stop_small.png
Binary files differ
diff --git a/symbols/cable_car.png b/symbols/cable_car.png
new file mode 100644
index 0000000..b160f0c
--- /dev/null
+++ b/symbols/cable_car.png
Binary files differ
diff --git a/symbols/cafe.p.16.png b/symbols/cafe.p.16.png
new file mode 100644
index 0000000..836f8a5
--- /dev/null
+++ b/symbols/cafe.p.16.png
Binary files differ
diff --git a/symbols/camping.n.16.png b/symbols/camping.n.16.png
new file mode 100644
index 0000000..b769125
--- /dev/null
+++ b/symbols/camping.n.16.png
Binary files differ
diff --git a/symbols/car_share.p.16.png b/symbols/car_share.p.16.png
new file mode 100644
index 0000000..1dcc537
--- /dev/null
+++ b/symbols/car_share.p.16.png
Binary files differ
diff --git a/symbols/caravan_park.p.24.png b/symbols/caravan_park.p.24.png
new file mode 100644
index 0000000..751f520
--- /dev/null
+++ b/symbols/caravan_park.p.24.png
Binary files differ
diff --git a/symbols/cemetery_jewish.18.png b/symbols/cemetery_jewish.18.png
new file mode 100644
index 0000000..316cdd8
--- /dev/null
+++ b/symbols/cemetery_jewish.18.png
Binary files differ
diff --git a/symbols/chair_lift.png b/symbols/chair_lift.png
new file mode 100644
index 0000000..ba0f474
--- /dev/null
+++ b/symbols/chair_lift.png
Binary files differ
diff --git a/symbols/chalet.p.16.png b/symbols/chalet.p.16.png
new file mode 100644
index 0000000..db5eb31
--- /dev/null
+++ b/symbols/chalet.p.16.png
Binary files differ
diff --git a/symbols/christian3.p.14.png b/symbols/christian3.p.14.png
new file mode 100644
index 0000000..c420f7f
--- /dev/null
+++ b/symbols/christian3.p.14.png
Binary files differ
diff --git a/symbols/cinema.p.24.png b/symbols/cinema.p.24.png
new file mode 100644
index 0000000..1a31e65
--- /dev/null
+++ b/symbols/cinema.p.24.png
Binary files differ
diff --git a/symbols/cliff.png b/symbols/cliff.png
new file mode 100644
index 0000000..0fc0528
--- /dev/null
+++ b/symbols/cliff.png
Binary files differ
diff --git a/symbols/cliff2.png b/symbols/cliff2.png
new file mode 100644
index 0000000..790c7ff
--- /dev/null
+++ b/symbols/cliff2.png
Binary files differ
diff --git a/symbols/communications.p.20.png b/symbols/communications.p.20.png
new file mode 100644
index 0000000..1000421
--- /dev/null
+++ b/symbols/communications.p.20.png
Binary files differ
diff --git a/symbols/danger.png b/symbols/danger.png
new file mode 100644
index 0000000..2f7b943
--- /dev/null
+++ b/symbols/danger.png
Binary files differ
diff --git a/symbols/department_store.p.16.png b/symbols/department_store.p.16.png
new file mode 100644
index 0000000..c42b9a2
--- /dev/null
+++ b/symbols/department_store.p.16.png
Binary files differ
diff --git a/symbols/embassy.png b/symbols/embassy.png
new file mode 100644
index 0000000..909e8dc
--- /dev/null
+++ b/symbols/embassy.png
Binary files differ
diff --git a/symbols/fast_food.png b/symbols/fast_food.png
new file mode 100644
index 0000000..99875e9
--- /dev/null
+++ b/symbols/fast_food.png
Binary files differ
diff --git a/symbols/firestation.p.16.png b/symbols/firestation.p.16.png
new file mode 100644
index 0000000..cf24559
--- /dev/null
+++ b/symbols/firestation.p.16.png
Binary files differ
diff --git a/symbols/florist.p.16.png b/symbols/florist.p.16.png
new file mode 100644
index 0000000..3ed55a5
--- /dev/null
+++ b/symbols/florist.p.16.png
Binary files differ
diff --git a/symbols/food_bar.p.16.png b/symbols/food_bar.p.16.png
new file mode 100644
index 0000000..da043fb
--- /dev/null
+++ b/symbols/food_bar.p.16.png
Binary files differ
diff --git a/symbols/food_drinkingtap.p.20.png b/symbols/food_drinkingtap.p.20.png
new file mode 100644
index 0000000..0a4c25a
--- /dev/null
+++ b/symbols/food_drinkingtap.p.20.png
Binary files differ
diff --git a/symbols/forest.png b/symbols/forest.png
new file mode 100644
index 0000000..d6d50c9
--- /dev/null
+++ b/symbols/forest.png
Binary files differ
diff --git a/symbols/fuel.p.16.png b/symbols/fuel.p.16.png
new file mode 100644
index 0000000..7bab32a
--- /dev/null
+++ b/symbols/fuel.p.16.png
Binary files differ
diff --git a/symbols/gate.png b/symbols/gate.png
new file mode 100644
index 0000000..5c5f3b6
--- /dev/null
+++ b/symbols/gate.png
Binary files differ
diff --git a/symbols/gate2.png b/symbols/gate2.png
new file mode 100644
index 0000000..b33e556
--- /dev/null
+++ b/symbols/gate2.png
Binary files differ
diff --git a/symbols/glacier.png b/symbols/glacier.png
new file mode 100644
index 0000000..0572751
--- /dev/null
+++ b/symbols/glacier.png
Binary files differ
diff --git a/symbols/glacier2.png b/symbols/glacier2.png
new file mode 100644
index 0000000..90b1844
--- /dev/null
+++ b/symbols/glacier2.png
Binary files differ
diff --git a/symbols/grave_yard.png b/symbols/grave_yard.png
new file mode 100644
index 0000000..7499533
--- /dev/null
+++ b/symbols/grave_yard.png
Binary files differ
diff --git a/symbols/grave_yard_generic.png b/symbols/grave_yard_generic.png
new file mode 100644
index 0000000..9f91602
--- /dev/null
+++ b/symbols/grave_yard_generic.png
Binary files differ
diff --git a/symbols/guest_house.p.16.png b/symbols/guest_house.p.16.png
new file mode 100644
index 0000000..c730b69
--- /dev/null
+++ b/symbols/guest_house.p.16.png
Binary files differ
diff --git a/symbols/halt.png b/symbols/halt.png
new file mode 100644
index 0000000..4085226
--- /dev/null
+++ b/symbols/halt.png
Binary files differ
diff --git a/symbols/helipad.p.16.png b/symbols/helipad.p.16.png
new file mode 100644
index 0000000..619513c
--- /dev/null
+++ b/symbols/helipad.p.16.png
Binary files differ
diff --git a/symbols/hindu.png b/symbols/hindu.png
new file mode 100644
index 0000000..c31a93d
--- /dev/null
+++ b/symbols/hindu.png
Binary files differ
diff --git a/symbols/hospital.p.16.png b/symbols/hospital.p.16.png
new file mode 100644
index 0000000..dd4febf
--- /dev/null
+++ b/symbols/hospital.p.16.png
Binary files differ
diff --git a/symbols/hospital.png b/symbols/hospital.png
new file mode 100644
index 0000000..74a249c
--- /dev/null
+++ b/symbols/hospital.png
Binary files differ
diff --git a/symbols/hostel.p.20.png b/symbols/hostel.p.20.png
new file mode 100644
index 0000000..be58f6d
--- /dev/null
+++ b/symbols/hostel.p.20.png
Binary files differ
diff --git a/symbols/hotel2.p.20.png b/symbols/hotel2.p.20.png
new file mode 100644
index 0000000..a441134
--- /dev/null
+++ b/symbols/hotel2.p.20.png
Binary files differ
diff --git a/symbols/information.p.16.png b/symbols/information.p.16.png
new file mode 100644
index 0000000..65d03db
--- /dev/null
+++ b/symbols/information.p.16.png
Binary files differ
diff --git a/symbols/islamic3.p.16.png b/symbols/islamic3.p.16.png
new file mode 100644
index 0000000..8746c31
--- /dev/null
+++ b/symbols/islamic3.p.16.png
Binary files differ
diff --git a/symbols/jewish3.p.16.png b/symbols/jewish3.p.16.png
new file mode 100644
index 0000000..0a11447
--- /dev/null
+++ b/symbols/jewish3.p.16.png
Binary files differ
diff --git a/symbols/landfill.png b/symbols/landfill.png
new file mode 100644
index 0000000..d08255f
--- /dev/null
+++ b/symbols/landfill.png
Binary files differ
diff --git a/symbols/level_crossing.png b/symbols/level_crossing.png
new file mode 100644
index 0000000..5002f6d
--- /dev/null
+++ b/symbols/level_crossing.png
Binary files differ
diff --git a/symbols/level_crossing2.png b/symbols/level_crossing2.png
new file mode 100644
index 0000000..eac7189
--- /dev/null
+++ b/symbols/level_crossing2.png
Binary files differ
diff --git a/symbols/library.p.20.png b/symbols/library.p.20.png
new file mode 100644
index 0000000..b38c4d1
--- /dev/null
+++ b/symbols/library.p.20.png
Binary files differ
diff --git a/symbols/liftgate.png b/symbols/liftgate.png
new file mode 100644
index 0000000..fd50fe5
--- /dev/null
+++ b/symbols/liftgate.png
Binary files differ
diff --git a/symbols/lighthouse.p.20.png b/symbols/lighthouse.p.20.png
new file mode 100644
index 0000000..f2e268f
--- /dev/null
+++ b/symbols/lighthouse.p.20.png
Binary files differ
diff --git a/symbols/lock_gate.png b/symbols/lock_gate.png
new file mode 100644
index 0000000..4fb277e
--- /dev/null
+++ b/symbols/lock_gate.png
Binary files differ
diff --git a/symbols/london-tube-24.png b/symbols/london-tube-24.png
new file mode 100644
index 0000000..04c1795
--- /dev/null
+++ b/symbols/london-tube-24.png
Binary files differ
diff --git a/symbols/marsh.png b/symbols/marsh.png
new file mode 100644
index 0000000..4ff801e
--- /dev/null
+++ b/symbols/marsh.png
Binary files differ
diff --git a/symbols/memorial.png b/symbols/memorial.png
new file mode 100644
index 0000000..9423e10
--- /dev/null
+++ b/symbols/memorial.png
Binary files differ
diff --git a/symbols/military_red_hatch.png b/symbols/military_red_hatch.png
new file mode 100644
index 0000000..f9dbeb6
--- /dev/null
+++ b/symbols/military_red_hatch.png
Binary files differ
diff --git a/symbols/mini_round.png b/symbols/mini_round.png
new file mode 100644
index 0000000..b9a7d2d
--- /dev/null
+++ b/symbols/mini_round.png
Binary files differ
diff --git a/symbols/mosque.png b/symbols/mosque.png
new file mode 100644
index 0000000..71b55fa
--- /dev/null
+++ b/symbols/mosque.png
Binary files differ
diff --git a/symbols/mot_shield1.png b/symbols/mot_shield1.png
new file mode 100644
index 0000000..ce509ff
--- /dev/null
+++ b/symbols/mot_shield1.png
Binary files differ
diff --git a/symbols/mot_shield2.png b/symbols/mot_shield2.png
new file mode 100644
index 0000000..c9e1965
--- /dev/null
+++ b/symbols/mot_shield2.png
Binary files differ
diff --git a/symbols/mot_shield3.png b/symbols/mot_shield3.png
new file mode 100644
index 0000000..9b27a6b
--- /dev/null
+++ b/symbols/mot_shield3.png
Binary files differ
diff --git a/symbols/mot_shield4.png b/symbols/mot_shield4.png
new file mode 100644
index 0000000..0c7ba69
--- /dev/null
+++ b/symbols/mot_shield4.png
Binary files differ
diff --git a/symbols/mot_shield5.png b/symbols/mot_shield5.png
new file mode 100644
index 0000000..2d0c1dd
--- /dev/null
+++ b/symbols/mot_shield5.png
Binary files differ
diff --git a/symbols/mot_shield6.png b/symbols/mot_shield6.png
new file mode 100644
index 0000000..0a97a3d
--- /dev/null
+++ b/symbols/mot_shield6.png
Binary files differ
diff --git a/symbols/mot_shield7.png b/symbols/mot_shield7.png
new file mode 100644
index 0000000..35a3dfc
--- /dev/null
+++ b/symbols/mot_shield7.png
Binary files differ
diff --git a/symbols/mot_shield8.png b/symbols/mot_shield8.png
new file mode 100644
index 0000000..8f0653d
--- /dev/null
+++ b/symbols/mot_shield8.png
Binary files differ
diff --git a/symbols/motel.p.20.png b/symbols/motel.p.20.png
new file mode 100644
index 0000000..56a96e5
--- /dev/null
+++ b/symbols/motel.p.20.png
Binary files differ
diff --git a/symbols/motorway_shield1.png b/symbols/motorway_shield1.png
new file mode 100644
index 0000000..40111a6
--- /dev/null
+++ b/symbols/motorway_shield1.png
Binary files differ
diff --git a/symbols/motorway_shield2.png b/symbols/motorway_shield2.png
new file mode 100644
index 0000000..331c522
--- /dev/null
+++ b/symbols/motorway_shield2.png
Binary files differ
diff --git a/symbols/motorway_shield3.png b/symbols/motorway_shield3.png
new file mode 100644
index 0000000..0e4f5fd
--- /dev/null
+++ b/symbols/motorway_shield3.png
Binary files differ
diff --git a/symbols/motorway_shield4.png b/symbols/motorway_shield4.png
new file mode 100644
index 0000000..56d7ab8
--- /dev/null
+++ b/symbols/motorway_shield4.png
Binary files differ
diff --git a/symbols/motorway_shield5.png b/symbols/motorway_shield5.png
new file mode 100644
index 0000000..2cc5d35
--- /dev/null
+++ b/symbols/motorway_shield5.png
Binary files differ
diff --git a/symbols/motorway_shield6.png b/symbols/motorway_shield6.png
new file mode 100644
index 0000000..3ece3f0
--- /dev/null
+++ b/symbols/motorway_shield6.png
Binary files differ
diff --git a/symbols/mud.png b/symbols/mud.png
new file mode 100644
index 0000000..fe031f6
--- /dev/null
+++ b/symbols/mud.png
Binary files differ
diff --git a/symbols/museum.p.16.png b/symbols/museum.p.16.png
new file mode 100644
index 0000000..c58d306
--- /dev/null
+++ b/symbols/museum.p.16.png
Binary files differ
diff --git a/symbols/nature_reserve.png b/symbols/nature_reserve.png
new file mode 100644
index 0000000..da01ec8
--- /dev/null
+++ b/symbols/nature_reserve.png
Binary files differ
diff --git a/symbols/nature_reserve2.png b/symbols/nature_reserve2.png
new file mode 100644
index 0000000..c804a8e
--- /dev/null
+++ b/symbols/nature_reserve2.png
Binary files differ
diff --git a/symbols/nature_reserve2T.png b/symbols/nature_reserve2T.png
new file mode 100644
index 0000000..7dd9728
--- /dev/null
+++ b/symbols/nature_reserve2T.png
Binary files differ
diff --git a/symbols/nature_reserve5.png b/symbols/nature_reserve5.png
new file mode 100644
index 0000000..db28f5e
--- /dev/null
+++ b/symbols/nature_reserve5.png
Binary files differ
diff --git a/symbols/nature_reserve6.png b/symbols/nature_reserve6.png
new file mode 100644
index 0000000..6768b56
--- /dev/null
+++ b/symbols/nature_reserve6.png
Binary files differ
diff --git a/symbols/nature_reserveT.png b/symbols/nature_reserveT.png
new file mode 100644
index 0000000..4da4863
--- /dev/null
+++ b/symbols/nature_reserveT.png
Binary files differ
diff --git a/symbols/orchard.png b/symbols/orchard.png
new file mode 100644
index 0000000..a889a9e
--- /dev/null
+++ b/symbols/orchard.png
Binary files differ
diff --git a/symbols/parking.p.16.png b/symbols/parking.p.16.png
new file mode 100644
index 0000000..5860900
--- /dev/null
+++ b/symbols/parking.p.16.png
Binary files differ
diff --git a/symbols/parking.png b/symbols/parking.png
new file mode 100644
index 0000000..9e3ad06
--- /dev/null
+++ b/symbols/parking.png
Binary files differ
diff --git a/symbols/parking_private.p.16.png b/symbols/parking_private.p.16.png
new file mode 100644
index 0000000..756ff7c
--- /dev/null
+++ b/symbols/parking_private.p.16.png
Binary files differ
diff --git a/symbols/peak.png b/symbols/peak.png
new file mode 100644
index 0000000..161cf50
--- /dev/null
+++ b/symbols/peak.png
Binary files differ
diff --git a/symbols/pharmacy.p.16.png b/symbols/pharmacy.p.16.png
new file mode 100644
index 0000000..fb1c56c
--- /dev/null
+++ b/symbols/pharmacy.p.16.png
Binary files differ
diff --git a/symbols/picnic.p.16.png b/symbols/picnic.p.16.png
new file mode 100644
index 0000000..0eff097
--- /dev/null
+++ b/symbols/picnic.p.16.png
Binary files differ
diff --git a/symbols/pint.png b/symbols/pint.png
new file mode 100644
index 0000000..d426eea
--- /dev/null
+++ b/symbols/pint.png
Binary files differ
diff --git a/symbols/place_of_worship.png b/symbols/place_of_worship.png
new file mode 100644
index 0000000..95494f5
--- /dev/null
+++ b/symbols/place_of_worship.png
Binary files differ
diff --git a/symbols/place_of_worship3.p.16.png b/symbols/place_of_worship3.p.16.png
new file mode 100644
index 0000000..d75bbf4
--- /dev/null
+++ b/symbols/place_of_worship3.p.16.png
Binary files differ
diff --git a/symbols/place_of_worship3.png b/symbols/place_of_worship3.png
new file mode 100644
index 0000000..fb01d05
--- /dev/null
+++ b/symbols/place_of_worship3.png
Binary files differ
diff --git a/symbols/playground.p.20.png b/symbols/playground.p.20.png
new file mode 100644
index 0000000..42db81d
--- /dev/null
+++ b/symbols/playground.p.20.png
Binary files differ
diff --git a/symbols/poi_cave.p.16.png b/symbols/poi_cave.p.16.png
new file mode 100644
index 0000000..aafddbb
--- /dev/null
+++ b/symbols/poi_cave.p.16.png
Binary files differ
diff --git a/symbols/police.p.16.png b/symbols/police.p.16.png
new file mode 100644
index 0000000..2dd87aa
--- /dev/null
+++ b/symbols/police.p.16.png
Binary files differ
diff --git a/symbols/post_box.p.16.png b/symbols/post_box.p.16.png
new file mode 100644
index 0000000..3119cc1
--- /dev/null
+++ b/symbols/post_box.p.16.png
Binary files differ
diff --git a/symbols/post_box.png b/symbols/post_box.png
new file mode 100644
index 0000000..8731497
--- /dev/null
+++ b/symbols/post_box.png
Binary files differ
diff --git a/symbols/post_office.p.16.png b/symbols/post_office.p.16.png
new file mode 100644
index 0000000..743255e
--- /dev/null
+++ b/symbols/post_office.p.16.png
Binary files differ
diff --git a/symbols/post_office.png b/symbols/post_office.png
new file mode 100644
index 0000000..42d9054
--- /dev/null
+++ b/symbols/post_office.png
Binary files differ
diff --git a/symbols/postoffice.png b/symbols/postoffice.png
new file mode 100644
index 0000000..d0434aa
--- /dev/null
+++ b/symbols/postoffice.png
Binary files differ
diff --git a/symbols/power_line.png b/symbols/power_line.png
new file mode 100644
index 0000000..ce94c8a
--- /dev/null
+++ b/symbols/power_line.png
Binary files differ
diff --git a/symbols/power_pole.png b/symbols/power_pole.png
new file mode 100644
index 0000000..ef18a39
--- /dev/null
+++ b/symbols/power_pole.png
Binary files differ
diff --git a/symbols/power_tower.png b/symbols/power_tower.png
new file mode 100644
index 0000000..2c963ad
--- /dev/null
+++ b/symbols/power_tower.png
Binary files differ
diff --git a/symbols/power_tower_3x3.png b/symbols/power_tower_3x3.png
new file mode 100644
index 0000000..4b1784e
--- /dev/null
+++ b/symbols/power_tower_3x3.png
Binary files differ
diff --git a/symbols/power_tower_5x5.png b/symbols/power_tower_5x5.png
new file mode 100644
index 0000000..b3a6a2b
--- /dev/null
+++ b/symbols/power_tower_5x5.png
Binary files differ
diff --git a/symbols/power_wind.png b/symbols/power_wind.png
new file mode 100644
index 0000000..29aeb7a
--- /dev/null
+++ b/symbols/power_wind.png
Binary files differ
diff --git a/symbols/pri_shield1.png b/symbols/pri_shield1.png
new file mode 100644
index 0000000..1234b38
--- /dev/null
+++ b/symbols/pri_shield1.png
Binary files differ
diff --git a/symbols/pri_shield2.png b/symbols/pri_shield2.png
new file mode 100644
index 0000000..880ab4a
--- /dev/null
+++ b/symbols/pri_shield2.png
Binary files differ
diff --git a/symbols/pri_shield3.png b/symbols/pri_shield3.png
new file mode 100644
index 0000000..a97846a
--- /dev/null
+++ b/symbols/pri_shield3.png
Binary files differ
diff --git a/symbols/pri_shield4.png b/symbols/pri_shield4.png
new file mode 100644
index 0000000..ee0361c
--- /dev/null
+++ b/symbols/pri_shield4.png
Binary files differ
diff --git a/symbols/pri_shield5.png b/symbols/pri_shield5.png
new file mode 100644
index 0000000..f68bc7d
--- /dev/null
+++ b/symbols/pri_shield5.png
Binary files differ
diff --git a/symbols/pri_shield6.png b/symbols/pri_shield6.png
new file mode 100644
index 0000000..32ac05c
--- /dev/null
+++ b/symbols/pri_shield6.png
Binary files differ
diff --git a/symbols/pri_shield7.png b/symbols/pri_shield7.png
new file mode 100644
index 0000000..7e4e2f1
--- /dev/null
+++ b/symbols/pri_shield7.png
Binary files differ
diff --git a/symbols/pri_shield8.png b/symbols/pri_shield8.png
new file mode 100644
index 0000000..73fcb3b
--- /dev/null
+++ b/symbols/pri_shield8.png
Binary files differ
diff --git a/symbols/primary_shield1.png b/symbols/primary_shield1.png
new file mode 100644
index 0000000..f7491b6
--- /dev/null
+++ b/symbols/primary_shield1.png
Binary files differ
diff --git a/symbols/primary_shield2.png b/symbols/primary_shield2.png
new file mode 100644
index 0000000..520f8f4
--- /dev/null
+++ b/symbols/primary_shield2.png
Binary files differ
diff --git a/symbols/primary_shield3.png b/symbols/primary_shield3.png
new file mode 100644
index 0000000..d4dd8e3
--- /dev/null
+++ b/symbols/primary_shield3.png
Binary files differ
diff --git a/symbols/primary_shield4.png b/symbols/primary_shield4.png
new file mode 100644
index 0000000..378e737
--- /dev/null
+++ b/symbols/primary_shield4.png
Binary files differ
diff --git a/symbols/primary_shield5.png b/symbols/primary_shield5.png
new file mode 100644
index 0000000..dc59c40
--- /dev/null
+++ b/symbols/primary_shield5.png
Binary files differ
diff --git a/symbols/primary_shield6.png b/symbols/primary_shield6.png
new file mode 100644
index 0000000..606fc12
--- /dev/null
+++ b/symbols/primary_shield6.png
Binary files differ
diff --git a/symbols/primary_shield7.png b/symbols/primary_shield7.png
new file mode 100644
index 0000000..9282fc0
--- /dev/null
+++ b/symbols/primary_shield7.png
Binary files differ
diff --git a/symbols/primary_shield8.png b/symbols/primary_shield8.png
new file mode 100644
index 0000000..3ccc5d1
--- /dev/null
+++ b/symbols/primary_shield8.png
Binary files differ
diff --git a/symbols/pub.p.16.png b/symbols/pub.p.16.png
new file mode 100644
index 0000000..b452a7e
--- /dev/null
+++ b/symbols/pub.p.16.png
Binary files differ
diff --git a/symbols/pub.png b/symbols/pub.png
new file mode 100644
index 0000000..3ac26f3
--- /dev/null
+++ b/symbols/pub.png
Binary files differ
diff --git a/symbols/quarry.png b/symbols/quarry.png
new file mode 100644
index 0000000..ab5088e
--- /dev/null
+++ b/symbols/quarry.png
Binary files differ
diff --git a/symbols/quarry2.png b/symbols/quarry2.png
new file mode 100644
index 0000000..38dcfac
--- /dev/null
+++ b/symbols/quarry2.png
Binary files differ
diff --git a/symbols/recycle.png b/symbols/recycle.png
new file mode 100644
index 0000000..4cf43a1
--- /dev/null
+++ b/symbols/recycle.png
Binary files differ
diff --git a/symbols/recycling.p.16.png b/symbols/recycling.p.16.png
new file mode 100644
index 0000000..59eb331
--- /dev/null
+++ b/symbols/recycling.p.16.png
Binary files differ
diff --git a/symbols/recycling.png b/symbols/recycling.png
new file mode 100644
index 0000000..5381898
--- /dev/null
+++ b/symbols/recycling.png
Binary files differ
diff --git a/symbols/rental_bicycle.p.20.png b/symbols/rental_bicycle.p.20.png
new file mode 100644
index 0000000..4bb10e0
--- /dev/null
+++ b/symbols/rental_bicycle.p.20.png
Binary files differ
diff --git a/symbols/restaurant.p.16.png b/symbols/restaurant.p.16.png
new file mode 100644
index 0000000..5c41008
--- /dev/null
+++ b/symbols/restaurant.p.16.png
Binary files differ
diff --git a/symbols/school.png b/symbols/school.png
new file mode 100644
index 0000000..4c919bf
--- /dev/null
+++ b/symbols/school.png
Binary files differ
diff --git a/symbols/scrub.png b/symbols/scrub.png
new file mode 100644
index 0000000..7668027
--- /dev/null
+++ b/symbols/scrub.png
Binary files differ
diff --git a/symbols/sec_shield1.png b/symbols/sec_shield1.png
new file mode 100644
index 0000000..3b22e6c
--- /dev/null
+++ b/symbols/sec_shield1.png
Binary files differ
diff --git a/symbols/sec_shield2.png b/symbols/sec_shield2.png
new file mode 100644
index 0000000..3a19224
--- /dev/null
+++ b/symbols/sec_shield2.png
Binary files differ
diff --git a/symbols/sec_shield3.png b/symbols/sec_shield3.png
new file mode 100644
index 0000000..c7d72d7
--- /dev/null
+++ b/symbols/sec_shield3.png
Binary files differ
diff --git a/symbols/sec_shield4.png b/symbols/sec_shield4.png
new file mode 100644
index 0000000..656817a
--- /dev/null
+++ b/symbols/sec_shield4.png
Binary files differ
diff --git a/symbols/sec_shield5.png b/symbols/sec_shield5.png
new file mode 100644
index 0000000..2918b07
--- /dev/null
+++ b/symbols/sec_shield5.png
Binary files differ
diff --git a/symbols/sec_shield6.png b/symbols/sec_shield6.png
new file mode 100644
index 0000000..4e1552b
--- /dev/null
+++ b/symbols/sec_shield6.png
Binary files differ
diff --git a/symbols/sec_shield7.png b/symbols/sec_shield7.png
new file mode 100644
index 0000000..04035ca
--- /dev/null
+++ b/symbols/sec_shield7.png
Binary files differ
diff --git a/symbols/sec_shield8.png b/symbols/sec_shield8.png
new file mode 100644
index 0000000..2c91468
--- /dev/null
+++ b/symbols/sec_shield8.png
Binary files differ
diff --git a/symbols/secondary_shield1.png b/symbols/secondary_shield1.png
new file mode 100644
index 0000000..7f463cc
--- /dev/null
+++ b/symbols/secondary_shield1.png
Binary files differ
diff --git a/symbols/secondary_shield2.png b/symbols/secondary_shield2.png
new file mode 100644
index 0000000..fe7ebd6
--- /dev/null
+++ b/symbols/secondary_shield2.png
Binary files differ
diff --git a/symbols/secondary_shield3.png b/symbols/secondary_shield3.png
new file mode 100644
index 0000000..f6c995a
--- /dev/null
+++ b/symbols/secondary_shield3.png
Binary files differ
diff --git a/symbols/secondary_shield4.png b/symbols/secondary_shield4.png
new file mode 100644
index 0000000..dd91317
--- /dev/null
+++ b/symbols/secondary_shield4.png
Binary files differ
diff --git a/symbols/secondary_shield5.png b/symbols/secondary_shield5.png
new file mode 100644
index 0000000..a9aa38f
--- /dev/null
+++ b/symbols/secondary_shield5.png
Binary files differ
diff --git a/symbols/secondary_shield6.png b/symbols/secondary_shield6.png
new file mode 100644
index 0000000..e3dcb46
--- /dev/null
+++ b/symbols/secondary_shield6.png
Binary files differ
diff --git a/symbols/secondary_shield7.png b/symbols/secondary_shield7.png
new file mode 100644
index 0000000..a90b587
--- /dev/null
+++ b/symbols/secondary_shield7.png
Binary files differ
diff --git a/symbols/secondary_shield8.png b/symbols/secondary_shield8.png
new file mode 100644
index 0000000..71feabf
--- /dev/null
+++ b/symbols/secondary_shield8.png
Binary files differ
diff --git a/symbols/shelter2.p.16.png b/symbols/shelter2.p.16.png
new file mode 100644
index 0000000..09ea530
--- /dev/null
+++ b/symbols/shelter2.p.16.png
Binary files differ
diff --git a/symbols/shinto.png b/symbols/shinto.png
new file mode 100644
index 0000000..6ac47f8
--- /dev/null
+++ b/symbols/shinto.png
Binary files differ
diff --git a/symbols/shop_bakery.p.16.png b/symbols/shop_bakery.p.16.png
new file mode 100644
index 0000000..89de12e
--- /dev/null
+++ b/symbols/shop_bakery.p.16.png
Binary files differ
diff --git a/symbols/shop_butcher.png b/symbols/shop_butcher.png
new file mode 100644
index 0000000..e31ca9d
--- /dev/null
+++ b/symbols/shop_butcher.png
Binary files differ
diff --git a/symbols/shop_clothes.p.16.png b/symbols/shop_clothes.p.16.png
new file mode 100644
index 0000000..b028a1c
--- /dev/null
+++ b/symbols/shop_clothes.p.16.png
Binary files differ
diff --git a/symbols/shop_convenience.p.16.png b/symbols/shop_convenience.p.16.png
new file mode 100644
index 0000000..2fc7584
--- /dev/null
+++ b/symbols/shop_convenience.p.16.png
Binary files differ
diff --git a/symbols/shop_diy.p.16.png b/symbols/shop_diy.p.16.png
new file mode 100644
index 0000000..b1954ab
--- /dev/null
+++ b/symbols/shop_diy.p.16.png
Binary files differ
diff --git a/symbols/shop_hairdresser.p.16.png b/symbols/shop_hairdresser.p.16.png
new file mode 100644
index 0000000..aa783f2
--- /dev/null
+++ b/symbols/shop_hairdresser.p.16.png
Binary files differ
diff --git a/symbols/shop_supermarket.p.16.png b/symbols/shop_supermarket.p.16.png
new file mode 100644
index 0000000..3b4338a
--- /dev/null
+++ b/symbols/shop_supermarket.p.16.png
Binary files differ
diff --git a/symbols/shopping_bicycle.p.16.png b/symbols/shopping_bicycle.p.16.png
new file mode 100644
index 0000000..d0b3680
--- /dev/null
+++ b/symbols/shopping_bicycle.p.16.png
Binary files differ
diff --git a/symbols/shopping_car.p.16.png b/symbols/shopping_car.p.16.png
new file mode 100644
index 0000000..e34715b
--- /dev/null
+++ b/symbols/shopping_car.p.16.png
Binary files differ
diff --git a/symbols/shopping_car_repair.p.16.png b/symbols/shopping_car_repair.p.16.png
new file mode 100644
index 0000000..9c38777
--- /dev/null
+++ b/symbols/shopping_car_repair.p.16.png
Binary files differ
diff --git a/symbols/sikh.png b/symbols/sikh.png
new file mode 100644
index 0000000..a3ade80
--- /dev/null
+++ b/symbols/sikh.png
Binary files differ
diff --git a/symbols/sikh3.p.16.png b/symbols/sikh3.p.16.png
new file mode 100644
index 0000000..9e8906e
--- /dev/null
+++ b/symbols/sikh3.p.16.png
Binary files differ
diff --git a/symbols/sosphone.png b/symbols/sosphone.png
new file mode 100644
index 0000000..0e5d0a2
--- /dev/null
+++ b/symbols/sosphone.png
Binary files differ
diff --git a/symbols/spring.png b/symbols/spring.png
new file mode 100644
index 0000000..c2dceb4
--- /dev/null
+++ b/symbols/spring.png
Binary files differ
diff --git a/symbols/station.png b/symbols/station.png
new file mode 100644
index 0000000..686ec10
--- /dev/null
+++ b/symbols/station.png
Binary files differ
diff --git a/symbols/station_disused.png b/symbols/station_disused.png
new file mode 100644
index 0000000..73be6f1
--- /dev/null
+++ b/symbols/station_disused.png
Binary files differ
diff --git a/symbols/station_small.png b/symbols/station_small.png
new file mode 100644
index 0000000..d8e75f5
--- /dev/null
+++ b/symbols/station_small.png
Binary files differ
diff --git a/symbols/synagogue.png b/symbols/synagogue.png
new file mode 100644
index 0000000..66ec7f1
--- /dev/null
+++ b/symbols/synagogue.png
Binary files differ
diff --git a/symbols/taoist.png b/symbols/taoist.png
new file mode 100644
index 0000000..39070d0
--- /dev/null
+++ b/symbols/taoist.png
Binary files differ
diff --git a/symbols/telephone.p.16.png b/symbols/telephone.p.16.png
new file mode 100644
index 0000000..29378e4
--- /dev/null
+++ b/symbols/telephone.p.16.png
Binary files differ
diff --git a/symbols/ter_shield1.png b/symbols/ter_shield1.png
new file mode 100644
index 0000000..9fad535
--- /dev/null
+++ b/symbols/ter_shield1.png
Binary files differ
diff --git a/symbols/ter_shield2.png b/symbols/ter_shield2.png
new file mode 100644
index 0000000..3092a89
--- /dev/null
+++ b/symbols/ter_shield2.png
Binary files differ
diff --git a/symbols/ter_shield3.png b/symbols/ter_shield3.png
new file mode 100644
index 0000000..0d42f6c
--- /dev/null
+++ b/symbols/ter_shield3.png
Binary files differ
diff --git a/symbols/ter_shield4.png b/symbols/ter_shield4.png
new file mode 100644
index 0000000..c30bb9a
--- /dev/null
+++ b/symbols/ter_shield4.png
Binary files differ
diff --git a/symbols/ter_shield5.png b/symbols/ter_shield5.png
new file mode 100644
index 0000000..5bfbf4e
--- /dev/null
+++ b/symbols/ter_shield5.png
Binary files differ
diff --git a/symbols/ter_shield6.png b/symbols/ter_shield6.png
new file mode 100644
index 0000000..4561fb1
--- /dev/null
+++ b/symbols/ter_shield6.png
Binary files differ
diff --git a/symbols/ter_shield7.png b/symbols/ter_shield7.png
new file mode 100644
index 0000000..80b4a16
--- /dev/null
+++ b/symbols/ter_shield7.png
Binary files differ
diff --git a/symbols/ter_shield8.png b/symbols/ter_shield8.png
new file mode 100644
index 0000000..a1eed49
--- /dev/null
+++ b/symbols/ter_shield8.png
Binary files differ
diff --git a/symbols/tertiary_shield1.png b/symbols/tertiary_shield1.png
new file mode 100644
index 0000000..0ba9015
--- /dev/null
+++ b/symbols/tertiary_shield1.png
Binary files differ
diff --git a/symbols/tertiary_shield2.png b/symbols/tertiary_shield2.png
new file mode 100644
index 0000000..4952fe7
--- /dev/null
+++ b/symbols/tertiary_shield2.png
Binary files differ
diff --git a/symbols/tertiary_shield3.png b/symbols/tertiary_shield3.png
new file mode 100644
index 0000000..4e7233c
--- /dev/null
+++ b/symbols/tertiary_shield3.png
Binary files differ
diff --git a/symbols/tertiary_shield4.png b/symbols/tertiary_shield4.png
new file mode 100644
index 0000000..b5ddee2
--- /dev/null
+++ b/symbols/tertiary_shield4.png
Binary files differ
diff --git a/symbols/tertiary_shield5.png b/symbols/tertiary_shield5.png
new file mode 100644
index 0000000..1c16176
--- /dev/null
+++ b/symbols/tertiary_shield5.png
Binary files differ
diff --git a/symbols/tertiary_shield6.png b/symbols/tertiary_shield6.png
new file mode 100644
index 0000000..87b8dad
--- /dev/null
+++ b/symbols/tertiary_shield6.png
Binary files differ
diff --git a/symbols/tertiary_shield7.png b/symbols/tertiary_shield7.png
new file mode 100644
index 0000000..8f3c4c5
--- /dev/null
+++ b/symbols/tertiary_shield7.png
Binary files differ
diff --git a/symbols/tertiary_shield8.png b/symbols/tertiary_shield8.png
new file mode 100644
index 0000000..ace8d21
--- /dev/null
+++ b/symbols/tertiary_shield8.png
Binary files differ
diff --git a/symbols/theatre.p.20.png b/symbols/theatre.p.20.png
new file mode 100644
index 0000000..36b918c
--- /dev/null
+++ b/symbols/theatre.p.20.png
Binary files differ
diff --git a/symbols/toilets.p.20.png b/symbols/toilets.p.20.png
new file mode 100644
index 0000000..80cf3af
--- /dev/null
+++ b/symbols/toilets.p.20.png
Binary files differ
diff --git a/symbols/tourist_archaeological2.glow.24.png b/symbols/tourist_archaeological2.glow.24.png
new file mode 100644
index 0000000..90c61c3
--- /dev/null
+++ b/symbols/tourist_archaeological2.glow.24.png
Binary files differ
diff --git a/symbols/tourist_memorial.p.20.png b/symbols/tourist_memorial.p.20.png
new file mode 100644
index 0000000..7fa8361
--- /dev/null
+++ b/symbols/tourist_memorial.p.20.png
Binary files differ
diff --git a/symbols/tower.png b/symbols/tower.png
new file mode 100644
index 0000000..304727a
--- /dev/null
+++ b/symbols/tower.png
Binary files differ
diff --git a/symbols/tower_water.p.20.png b/symbols/tower_water.p.20.png
new file mode 100644
index 0000000..5ca7801
--- /dev/null
+++ b/symbols/tower_water.p.20.png
Binary files differ
diff --git a/symbols/traffic_light.png b/symbols/traffic_light.png
new file mode 100644
index 0000000..1c2b3ca
--- /dev/null
+++ b/symbols/traffic_light.png
Binary files differ
diff --git a/symbols/transport_ford.p.16.png b/symbols/transport_ford.p.16.png
new file mode 100644
index 0000000..dc1bfc2
--- /dev/null
+++ b/symbols/transport_ford.p.16.png
Binary files differ
diff --git a/symbols/transport_slipway.p.20.png b/symbols/transport_slipway.p.20.png
new file mode 100644
index 0000000..45892de
--- /dev/null
+++ b/symbols/transport_slipway.p.20.png
Binary files differ
diff --git a/symbols/tree.png b/symbols/tree.png
new file mode 100644
index 0000000..7575bd6
--- /dev/null
+++ b/symbols/tree.png
Binary files differ
diff --git a/symbols/tree2.png b/symbols/tree2.png
new file mode 100644
index 0000000..f0e3e1f
--- /dev/null
+++ b/symbols/tree2.png
Binary files differ
diff --git a/symbols/tru_shield1.png b/symbols/tru_shield1.png
new file mode 100644
index 0000000..bbdd6fc
--- /dev/null
+++ b/symbols/tru_shield1.png
Binary files differ
diff --git a/symbols/tru_shield2.png b/symbols/tru_shield2.png
new file mode 100644
index 0000000..e33d296
--- /dev/null
+++ b/symbols/tru_shield2.png
Binary files differ
diff --git a/symbols/tru_shield3.png b/symbols/tru_shield3.png
new file mode 100644
index 0000000..1a47f9a
--- /dev/null
+++ b/symbols/tru_shield3.png
Binary files differ
diff --git a/symbols/tru_shield4.png b/symbols/tru_shield4.png
new file mode 100644
index 0000000..443c3f3
--- /dev/null
+++ b/symbols/tru_shield4.png
Binary files differ
diff --git a/symbols/tru_shield5.png b/symbols/tru_shield5.png
new file mode 100644
index 0000000..f53720b
--- /dev/null
+++ b/symbols/tru_shield5.png
Binary files differ
diff --git a/symbols/tru_shield6.png b/symbols/tru_shield6.png
new file mode 100644
index 0000000..092d0d9
--- /dev/null
+++ b/symbols/tru_shield6.png
Binary files differ
diff --git a/symbols/tru_shield7.png b/symbols/tru_shield7.png
new file mode 100644
index 0000000..49e9e03
--- /dev/null
+++ b/symbols/tru_shield7.png
Binary files differ
diff --git a/symbols/tru_shield8.png b/symbols/tru_shield8.png
new file mode 100644
index 0000000..587324a
--- /dev/null
+++ b/symbols/tru_shield8.png
Binary files differ
diff --git a/symbols/trunk_shield1.png b/symbols/trunk_shield1.png
new file mode 100644
index 0000000..bb849c2
--- /dev/null
+++ b/symbols/trunk_shield1.png
Binary files differ
diff --git a/symbols/trunk_shield2.png b/symbols/trunk_shield2.png
new file mode 100644
index 0000000..eb81d80
--- /dev/null
+++ b/symbols/trunk_shield2.png
Binary files differ
diff --git a/symbols/trunk_shield3.png b/symbols/trunk_shield3.png
new file mode 100644
index 0000000..4e6e976
--- /dev/null
+++ b/symbols/trunk_shield3.png
Binary files differ
diff --git a/symbols/trunk_shield4.png b/symbols/trunk_shield4.png
new file mode 100644
index 0000000..733d5d0
--- /dev/null
+++ b/symbols/trunk_shield4.png
Binary files differ
diff --git a/symbols/trunk_shield5.png b/symbols/trunk_shield5.png
new file mode 100644
index 0000000..d6700e7
--- /dev/null
+++ b/symbols/trunk_shield5.png
Binary files differ
diff --git a/symbols/trunk_shield6.png b/symbols/trunk_shield6.png
new file mode 100644
index 0000000..053784e
--- /dev/null
+++ b/symbols/trunk_shield6.png
Binary files differ
diff --git a/symbols/trunk_shield7.png b/symbols/trunk_shield7.png
new file mode 100644
index 0000000..3d8a555
--- /dev/null
+++ b/symbols/trunk_shield7.png
Binary files differ
diff --git a/symbols/trunk_shield8.png b/symbols/trunk_shield8.png
new file mode 100644
index 0000000..3d8f1b1
--- /dev/null
+++ b/symbols/trunk_shield8.png
Binary files differ
diff --git a/symbols/view_point.p.16.png b/symbols/view_point.p.16.png
new file mode 100644
index 0000000..b18660c
--- /dev/null
+++ b/symbols/view_point.p.16.png
Binary files differ
diff --git a/symbols/vineyard.png b/symbols/vineyard.png
new file mode 100644
index 0000000..6498e3f
--- /dev/null
+++ b/symbols/vineyard.png
Binary files differ
diff --git a/symbols/volcano.png b/symbols/volcano.png
new file mode 100644
index 0000000..a713ca3
--- /dev/null
+++ b/symbols/volcano.png
Binary files differ
diff --git a/symbols/walking.n.12.png b/symbols/walking.n.12.png
new file mode 100644
index 0000000..0902983
--- /dev/null
+++ b/symbols/walking.n.12.png
Binary files differ
diff --git a/symbols/windmill.png b/symbols/windmill.png
new file mode 100644
index 0000000..17229f3
--- /dev/null
+++ b/symbols/windmill.png
Binary files differ
diff --git a/symbols/zoo.png b/symbols/zoo.png
new file mode 100644
index 0000000..ef7e65b
--- /dev/null
+++ b/symbols/zoo.png
Binary files differ
diff --git a/water-features.mss b/water-features.mss
new file mode 100644
index 0000000..0672373
--- /dev/null
+++ b/water-features.mss
@@ -0,0 +1,72 @@
+#dam {
+ [zoom >= 13] {
+ line-width: 2;
+ line-color: #444;
+ line-join: round;
+ line-cap: round;
+ }
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-halo-radius: 1;
+ text-fill: #222;
+ text-size: 8;
+ text-face-name: @book-fonts;
+ }
+}
+
+#marinas-area {
+ [zoom >= 14] {
+ a/line-width: 1;
+ a/line-offset: -0.5;
+ a/line-color: blue;
+ a/line-opacity: 0.1;
+ a/line-join: round;
+ a/line-cap: round;
+ b/line-width: 3;
+ b/line-offset: -1.5;
+ b/line-color: blue;
+ b/line-opacity: 0.1;
+ b/line-join: round;
+ b/line-cap: round;
+ [zoom >= 17] {
+ a/line-width: 2;
+ a/line-offset: -1;
+ b/line-width: 6;
+ b/line-offset: -3;
+ }
+ }
+}
+
+#piers-area {
+ [zoom >= 12] {
+ polygon-fill: @land-color;
+ }
+}
+
+#piers {
+ [man_made = 'breakwater'],
+ [man_made = 'groyne'] {
+ [zoom >= 12] {
+ line-width: 1;
+ line-color: #aaa;
+ }
+ [zoom >= 13] {
+ line-width: 2;
+ }
+ [zoom >= 16] {
+ line-width: 4;
+ }
+ }
+ [man_made = 'pier'][zoom >= 12] {
+ line-width: 1.5;
+ line-color: @land-color;
+ [zoom >= 13] { line-width: 3; }
+ [zoom >= 16] { line-width: 7; }
+ }
+}
+
+#locks {
+ [waterway = 'lock_gate'][zoom >= 17] {
+ point-file: url('symbols/lock_gate.png');
+ }
+}
diff --git a/water.mss b/water.mss
new file mode 100644
index 0000000..d4ddfd7
--- /dev/null
+++ b/water.mss
@@ -0,0 +1,313 @@
+@water-text: #6699cc;
+
+#water-areas {
+ [natural = 'glacier']::natural {
+ [zoom >= 6] {
+ line-dasharray: 4,2;
+ line-width: 1.5;
+ line-color: #9cf;
+ polygon-pattern-file: url('symbols/glacier.png');
+ [zoom >= 8] {
+ polygon-pattern-file: url('symbols/glacier2.png');
+ }
+ }
+ }
+
+ [waterway = 'dock'],
+ [waterway = 'mill_pond'],
+ [waterway = 'canal'] {
+ [zoom >= 9]::waterway {
+ polygon-gamma: 0.75;
+ polygon-fill: @water-color;
+ }
+ }
+
+ [landuse = 'basin'][zoom >= 7]::landuse {
+ polygon-gamma: 0.75;
+ polygon-fill: @water-color;
+ }
+
+ [natural = 'lake']::natural,
+ [natural = 'water']::natural,
+ [landuse = 'reservoir']::landuse,
+ [waterway = 'riverbank']::waterway,
+ [landuse = 'water']::water {
+ [zoom >= 6] {
+ polygon-fill: @water-color;
+ polygon-gamma: 0.75;
+ }
+ }
+
+ [natural = 'mud'][zoom >= 13]::natural {
+ polygon-pattern-file: url('symbols/mud.png');
+ }
+}
+
+#water-areas-overlay {
+ [natural = 'marsh'],
+ [natural = 'wetland'] {
+ [zoom >= 13] {
+ polygon-pattern-file: url('symbols/marsh.png');
+ }
+ }
+}
+
+#glaciers-text {
+ [way_area >= 10000000][zoom >= 10],
+ [way_area >= 5000000][way_area < 10000000][zoom >= 11],
+ [way_area < 5000000][zoom >= 12] {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #77f;
+ text-face-name: @oblique-fonts;
+ text-halo-radius: 1.5;
+ text-wrap-width: 20;
+ }
+}
+
+#water-lines-casing {
+ [waterway='stream'],
+ [waterway='ditch'],
+ [waterway='drain'] {
+ [zoom >= 13] {
+ line-width: 1.5;
+ line-color: white;
+ [waterway='stream'][zoom >= 15] {
+ line-width: 2.5;
+ }
+ }
+ }
+}
+
+#water-lines-low-zoom {
+ [waterway = 'river'][zoom >= 8][zoom < 12] {
+ line-color: @water-color;
+ line-width: 0.7;
+ [zoom >= 9] { line-width: 1.2; }
+ [zoom >= 10] { line-width: 1.6; }
+ }
+}
+
+#water-lines {
+ [waterway = 'weir'][zoom >= 15] {
+ line-color: #aaa;
+ line-width: 2;
+ line-join: round;
+ line-cap: round;
+ }
+
+ [waterway = 'wadi'][zoom >= 13] {
+ line-color: @water-color;
+ line-width: 1;
+ line-dasharray: 4,4;
+ line-cap: round;
+ line-join: round;
+ [zoom >= 16] { line-width: 2; }
+ }
+
+ [waterway = 'river'][zoom >= 12] {
+ line-color: @water-color;
+ line-width: 2;
+ line-cap: round;
+ line-join: round;
+ [zoom >= 13] {
+ line-width: 3;
+ }
+ [zoom >= 14] {
+ line-width: 5;
+ }
+ [zoom >= 15] {
+ line-width: 6;
+ }
+ [zoom >= 17] {
+ line-width: 10;
+ }
+ [zoom >= 18] {
+ line-width: 12;
+ }
+ [tunnel = 'yes'] {
+ [zoom >= 14] {
+ a/line-width: 6;
+ a/line-dasharray: 4,2;
+ a/line-color: @water-color;
+ b/line-width: 4;
+ b/line-color: white;
+ }
+ [zoom >= 15] {
+ a/line-width: 7;
+ }
+ [zoom >= 17] {
+ a/line-width: 11;
+ b/line-width: 7;
+ }
+ [zoom >= 18] {
+ a/line-width: 13;
+ b/line-width: 9;
+ }
+ }
+ }
+
+ [waterway = 'canal'][zoom >= 12][zoom < 14] {
+ line-color: @water-color;
+ line-width: 3;
+ line-cap: round;
+ line-join: round;
+ [zoom >= 13] {
+ line-width: 4;
+ }
+ }
+
+ [waterway = 'stream'],
+ [waterway = 'ditch'],
+ [waterway = 'drain'] {
+ [zoom >= 13][zoom < 15] {
+ line-width: 1;
+ line-color: @water-color;
+ }
+ }
+
+ [waterway = 'stream'][zoom >= 15] {
+ line-width: 2;
+ line-color: @water-color;
+ [tunnel = 'yes'] {
+ line-dasharray: 4,2;
+ line-width: 2.4;
+ a/line-width: 1.2;
+ a/line-color: #f3f7f7;
+ }
+ }
+
+ [waterway = 'drain'],
+ [waterway = 'ditch'] {
+ [zoom >= 15] {
+ line-width: 1;
+ line-color: @water-color;
+ [tunnel = 'yes'] {
+ line-width: 2;
+ line-dasharray: 4,2;
+ a/line-width: 1;
+ a/line-color: #f3f7f7;
+ }
+ }
+ }
+
+ [waterway = 'canal'][zoom >= 14] {
+ line-width: 7;
+ line-color: @water-color;
+ line-join: round;
+ line-cap: round;
+ [zoom >= 17] { line-width: 11; }
+ [tunnel = 'yes'] {
+ line-dasharray: 4,2;
+ b/line-width: 3;
+ b/line-color: white;
+ [zoom >= 17] { line-width: 7; }
+ }
+ }
+
+ [waterway = 'derelict_canal'][zoom >= 12] {
+ line-width: 1.5;
+ line-color: #b5e4d0;
+ line-dasharray: 4,4;
+ line-opacity: 0.5;
+ line-join: round;
+ line-cap: round;
+ [zoom >= 13] {
+ line-width: 2.5;
+ line-dasharray: 4,6;
+ }
+ [zoom >= 14] {
+ line-width: 4.5;
+ line-dasharray: 4,8;
+ }
+ }
+}
+
+#waterway-bridges {
+ [zoom >= 14] {
+ line-width: 7;
+ line-color: #000;
+ line-join: round;
+ b/line-width: 6;
+ b/line-color: @water-color;
+ b/line-cap: round;
+ b/line-join: round;
+ [zoom >= 17] {
+ line-width: 11;
+ b/line-width: 10;
+ }
+ }
+}
+
+#water-lines-text {
+ [waterway = 'river'][zoom >= 13] {
+ text-name: "[name]";
+ text-face-name: @oblique-fonts;
+ text-placement: line;
+ text-fill: @water-text;
+ text-spacing: 400;
+ text-size: 10;
+ text-halo-radius: 1;
+ [zoom >= 14] { text-size: 12; }
+ [tunnel = 'yes'] { text-min-distance: 200; }
+ }
+
+ [waterway = 'canal'][zoom >= 13][zoom < 14] {
+ text-name: "[name]";
+ text-face-name: @oblique-fonts;
+ text-halo-radius: 1;
+ text-size: 10;
+ text-placement: line;
+ text-fill: @water-text;
+ }
+
+ [waterway = 'stream'][zoom >= 15] {
+ text-name: "[name]";
+ text-size: 10;
+ text-face-name: @oblique-fonts;
+ text-fill: @water-text;
+ text-halo-radius: 1;
+ text-spacing: 600;
+ text-placement: line;
+ text-dy: 8;
+ }
+
+ [waterway = 'drain'],
+ [waterway = 'ditch'] {
+ [zoom >= 15] {
+ text-name: "[name]";
+ text-face-name: @oblique-fonts;
+ text-size: 10;
+ text-fill: @water-text;
+ text-spacing: 600;
+ text-placement: line;
+ text-halo-radius: 1;
+ }
+ }
+
+ [waterway = 'canal'][zoom >= 14] {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: @water-text;
+ text-placement: line;
+ text-face-name: @oblique-fonts;
+ text-halo-radius: 1;
+ [lock = 'yes'][zoom >= 17] {
+ text-placement: point;
+ text-wrap-width: 20;
+ }
+ }
+
+ [waterway = 'derelict_canal'][zoom >= 13] {
+ text-name: "[name]";
+ text-size: 10;
+ text-fill: #80d1ae;
+ text-face-name: @oblique-fonts;
+ text-placement: line;
+ text-spacing: 600;
+ text-halo-radius: 1;
+ [zoom >= 14] {
+ text-size: 12;
+ }
+ }
+}