Git Product home page Git Product logo

openstreetmap-carto's Introduction

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 and also with the command-line CartoCSS 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

Setup

You need OpenStreetMap data loaded into a PostGIS database (see below for 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 or geofabrik. Once you've set up your PostGIS database, import with osm2pgsql:

osm2pgsql -d gis ~/path/to/data.osm.pbf

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:

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 mapnik/mapnik#1605 for more details.

Dependencies

  • 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 >= 0.9.3 (we're using instances with cascading rules)
  • mapnik >= 2.1.0

  • osm2pgsql to import your data into a PostGIS database
  • PostgreSQL
  • PostGIS
  • ogr2ogr 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) 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 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 no before
  • Dashes, not underscores, in layer names
  • 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.

openstreetmap-carto's People

Contributors

gravitystorm avatar ian29 avatar pnorman avatar matthijsmelissen avatar danstowell avatar firefishy avatar mackerski avatar woodpeck avatar wonderchook avatar mstock avatar tyrasd avatar smsm1 avatar tmcw avatar

Watchers

lorenzo perone avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.