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 {} \;

Comment from z-dude on 30 December 2012 at 14:53

Sometimes a flooded city, is an actual flooded city. http://www.openstreetmap.org/?lat=-37.12898&lon=-62.8159&zoom=15&layers=M

Login to leave a comment