OpenStreetMap

Creating maptiles with german style offline using mapnik and Ubuntu 12.04 LTS

Posted by skaiwalker on 28 December 2012 in English (English)

Please note

This post is obsolete and uses rather dirty methods. I added a quickstart guide to the README file in the mapnik-german repository, which should be used. However, this post might still be valuable for troubleshooting.

First, try to make Mapnik run using this guide:
http://wiki.openstreetmap.org/wiki/Mapnik#Installation

In case things don't work, you might find clues there:
http://forum.openstreetmap.org/viewtopic.php?pid=253552
http://wiki.openstreetmap.org/wiki/Mapnik/PostGIS
http://switch2osm.org/serving-tiles/manually-building-a-tile-server-12-04/

In any case, you want to use the latest available sofware, but you do not need to compile from source. There are PPAs.

Install necessary software

Mapnik

Uninstall any python-mapnik or python-mapnik2 packages from your system (https://github.com/mapnik/mapnik/wiki).

    sudo add-apt-repository ppa:mapnik/v2.1.0
    sudo apt-get update
    sudo apt-get install libmapnik mapnik-utils python-mapnik #[!sic]

osm2pgsql

    sudo add-apt-repository ppa:kakrueger/openstreetmap
    sudo apt-get update
    sudo apt-get install osm2pgsql

postgis

    sudo apt-get install postgis postgresql postgresql-9.1-postgis

Set-up data base

    sudo -u postgres createdb -E UTF8 -O postgres osm
    sudo -u postgres createlang plpgsql osm
    sudo -u postgres psql osm < /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql
    sudo -u postgres psql osm < /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql

Create user with YOUR name (somehow only works like this) postgis superuser? yes

    sudo -u postgres createuser -P YOURUSERNAME

Now, get a map file. These are available at e.g.
http://download.geofabrik.de/openstreetmap/

    wget http://download.geofabrik.de/openstreetmap/europe/germany/sachsen.osm.bz2
    unp sachsen.osm.bz2

Finally, import your image into the database

    osm2pgsql -m -d osm -S /usr/share/osm2pgsql/default.style -W  sachsen.osm

In case of the german scripts, you either need to edit default.style a little or work with the views. The views seem to be necessary when still working with the default OSM style.

    # default.style
    #
    node,way    3dshapes:ggmodelk   text    delete
    node,way    AND_nosr_r  text    delete
    node,way    b5m:*   text    delete
    node,way    bak:*   text    delete
    node,way    canvec:*    text    delete
    node,way    created_by  text    delete
    node,way    dcgis:* text    delete
    node,way    FIXME   text    delete
    node,way    geobase:*   text    delete
    node,way    gnis:*  text    delete
    node,way    kms:*   text    delete
    node,way    KSJ2:*  text    delete
    node,way    massgis:*   text    delete
    node,way    mvdgis:*    text    delete
    node,way    naptan:*    text    delete
    node,way    ngbe:*  text    delete
    node,way    nhd:*   text    delete
    node,way    NHD:*   text    delete
    node,way    note    text    delete
    node,way    note:*  text    delete
    node,way    notes   text    delete
    node,way    osak:*  text    delete
    node,way    source  text    delete
    node,way    source:*    text    delete
    node,way    sourcedb:*  text    delete
    node,way    tiger:* text    delete
    node,way    WroclawGIS:*    text    delete
    node,way    yh:*    text    delete
    node,way    rednap:* text   delete
    node,way    ideewfs:* text  delete
    node,way    ign:* text  delete

    node,way   aerialway    text         linear
    node,way   addr:housenumber text     linear
    node,way   aeroway      text         polygon
    node,way   amenity      text         nocache,polygon
    node,way   barrier      text         linear
    node,way   boundary     text         linear
    node,way   building     text         polygon
    node,way   highway      text         linear
    node,way   historic     text         polygon
    node,way   landuse      text         polygon
    node,way   leisure      text         polygon
    node,way   lock         text         linear
    node,way   man_made     text         polygon
    node,way   military     text         polygon
    node,way   place        text         polygon
    node,way   power        text         polygon
    node,way   railway      text         linear
    node,way   route        text         linear
    node,way   shop         text         polygon
    node,way   tourism      text         polygon
    node,way   waterway     text         polygon
    node,way   natural      text         polygon

    node,way   width        real         linear
    node       ele          real         linear

    node,way   z_order      int4         linear # This is calculated during import
    way        way_area     real                # This is calculated during import

    # Needed additions for german style to work
    node,way   wood     text         polygon
    node,way   name:de        text         linear
    node,way   name        text         linear
    node,way   religion        text         linear
    node,way   tunnel        text         linear
    node,way   disused        text         linear
    node,way   bridge        text         linear
    node,way   horse      text         linear
    node,way   foot      text         linear
    node,way   bicycle      text         linear
    node,way   tracktype      text         linear
    node,way   construction      text         linear
    node,way   proposed      text         linear
    node,way   service      text         linear
    node,way   access      text         linear
    node,way   oneway      text         linear
    node,way   layer      text         linear
    node,way   ref     text         linear
    node,way   lcn_ref     text         linear
    node,way   admin_level    text         linear
    node   capital    text         linear
    node,way   generator:source    text         linear
    node,way   power_source    text         linear
    node,way   ruins    text         linear
    node,way   addr:flats   text         polygon
    node,way   addr:interpolation  text  linear
    node,way   addr:housename  text  linear

    node,way   rcn_ref     text     linear
    node,way   ncn_ref     text     linear
    way       lcn          text     linear
    way       rcn          text     linear
    way       ncn          text     linear
    #way       lwn_ref      text     linear
    #way       rwn_ref      text     linear
    #way       nwn_ref      text     linear
    way       lwn              text     linear
    way       rwn              text     linear
    way       nwn              text     linear
    #way       route_pref_color text     linear
    way       route_name       text     linear
    way       network          text     linear
    way       surface          text     linear
    way       voltage          text     linear
    way       line             text     linear
    node      public_transport text     linear
    node      information      text     linear
    node      bus              text     linear
    node      tram             text     linear
    node      hiking           text     linear

Rendering tiles

Getting style files

Standard OSM:

    svn checkout http://svn.openstreetmap.org/applications/rendering/mapnik

German OSM style:

    svn checkout http://svn.openstreetmap.org/applications/rendering/mapnik-german/

Follow the README files in there until you get to generate_xml.py:

     ./generate_xml.py --dbname osm --host 'localhost' --user YOURUSERNAME --port 5432 --password 'YOURPWD'  osm-de.xml > osm-local.xml 

If there are no errors, you may edit the generate_tiles.py (make sure it uses the right osm-local.xml) and run it

     ./generate_tiles.py

Problems

hstore in postgis

In some cases you want to use the --hstore option (-k) to store additional info (see osm2pgsql -h).

    osm2pgsql -m -k -d osm -S /usr/share/osm2pgsql/default.style -W  sachsen.osm

In that case, postgis needs to know that.

    sudo -u postgres psql
    CREATE EXTENSION hstore;

world boundaries

Get the missing ones from http://www.mmnt.net/db/0/0/195.16.220.82/pub/osm/mapnik-data-files/world_boundaries

    wget ftp://195.16.220.82/pub/osm/mapnik-data-files/world_boundaries/110m_admin_0_boundary_lines_land.dbf
    wget ftp://195.16.220.82/pub/osm/mapnik-data-files/world_boundaries/110m_admin_0_boundary_lines_land.shp

flooded cities

If you see a lot of water in the rendered images, then you downloaded the wrong (WGS84) projection of the land-polygons.
Use the Mercator projection http://openstreetmapdata.com/data/land-polygons

fontset-settings.xml.inc

Errors with unifont Medium - comment out offending lines from fontset-settings.xml.inc.

    <!--
    <Font face-name="unifont Medium" />
    -->

Comment from skaiwalker on 28 December 2012 at 01:15

It's worth noting that I created a separate folder for the german style files and first copied the original OSM mapnik style files and ontop the mapnik-german style files.

    cp -R mapnik mapnik.de
    cp -R mapnik-german/* mapnik-de/
    # remove subversion files
    find  ./mapnik-de/ -type d -iname ".svn" -exec rm -r -f {} \;
Hide this comment

Leave a comment

Parsed with Markdown

  • Headings

    # Heading
    ## Subheading

  • Unordered list

    * First item
    * Second item

  • Ordered list

    1. First item
    2. Second item

  • Link

    [Text](URL)
  • Image

    ![Alt text](URL)

Login to leave a comment