An adaptation of the "German" Mapnik style to the CartoCSS structure used by the international style.
The style is designed to use with a HSTORE-only DATABASE in mind. In our production setup we are using the provided views to osm2pgsql tables with hstore to simulate columns.
This way, the database Layout is also capable of rendering the upstream style without any changes.
We are doing our best to keep this fork in sync with upstream.
As a result we will always require at least the same software versions of Carto, Mapnik, Postgis, etc. as upstream.
This repository does also contain a localized version branch of CartoCSS without other style changes. To use this you will also need the German style HSTORE-only DATABASE layout.
For Installation please read INSTALL-de.md first for differences of openstreetmap-carto-de.
Using Docker in currently not supported using this fork of OSM-Carto!
The rest of this README contains the original text from the international style.
These are the CartoCSS map stylesheets for the Standard map layer on OpenStreetMap.org.
The general purpose, the cartographic design goals and guidelines for this style are outlined in CARTOGRAPHY.md.
These stylesheets can be used in your own cartography projects, and are designed to be easily customised. They work with Kosmtik and also with the command-line CartoCSS processor.
Since August 2013 these stylesheets have been used on the OSMF tileservers (tile.openstreetmap.org), and are updated from each point release. They supersede the previous XML-based stylesheets.
You need a PostGIS database populated with OpenStreetMap data along with auxillary shapefiles. See INSTALL.md.
Contributions to this project are welcome, see CONTRIBUTING.md for full details.
This project follows a MAJOR.MINOR.PATCH versioning system. In the context of a cartographic project you can expect the following:
- PATCH: When a patch version is released, there would be no reason not to upgrade. PATCH versions contain only bugfixes e.g. stylesheets won't compile, features are missing by mistake, etc.
- MINOR: These are routine releases and happen every 2-5 weeks. They will contain changes to what's shown on the map, how they appear, new features added and old features removed. They may rarely contain changes to assets i.e. shapefiles and fonts but will not contain changes that require software or database upgrades.
- MAJOR: Any change the requires reloading a database, or upgrading software dependencies will trigger a major version change.
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.
The v2.x series initially focused on refactoring the style, both to to fix glitches and to leverage new features in CartoCSS / Mapnik to simplify the stylesheets with only small changes to the output, as well as removing 'old-skool' tagging methods that are now rarely used. It then started adding new features.
The v3.x series was triggered by an update to the required Mapnik and CartoCSS versions.
Care has been 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) can discourage contributions.
The v4.x series includes osm2pgsql lua transforms and a hstore column with all other tags, allowing use of more OpenStreetMap data. Users need to reload their databases, v3.x compatibility is not maintained.
The v5.x series updates Lua tag transforms, linestring and polygon decisions have changed.
There are over 500 open requests, some that have been open for years. These need reviewing and dividing into obvious fixes, or additional new features that need some cartographic judgement.
There are many open-source stylesheets written for creating OpenStreetMap-based maps using Mapnik, many based on this project. Some alternatives are:
- Andy Allan @gravitystorm
- Paul Norman @pnorman
- Daniel Koć @kocio-pl
- Christoph Hormann @imagico
- Lukas Sommer @sommerluk
- Joseph Eisenberg @jeisenbe
- Michael Glanznig @nebulon42
- Matthijs Melissen @matthijsmelissen
- Mateusz Konieczny @matkoniecz