Tile Server (2014)

From Planimate Knowledge Base
Jump to navigation Jump to search

The Planimate Map object enables the use of tiled map data in models. These notes describe the setup of a map tile web server which can be used with Planimate or other open Street Maps projects.

This is an update to the 2012 Tile Server Guide, which is now obsolete. The references section contains sources from which this content was derived.

Setting up the VM

Start with Ubuntu 12.04 Server (AMD 64). I used the server ISO image. My initial VM settings: 3GB of RAM, 32GB HDD and bridged networking. I did the most basic install.

For the Australia region only, you can probably get by with 20GB HDD. For the world, you'd need over 1TB.

I gave the VM plenty of RAM for the osm2pgsl import stage (see below). Since then I've shrunk the VM's RAM configuration to 1GB which is more than plenty for a small scale test server.

Login at the console to finish initial setup, you want to lock down its IP address. ('ifconfig' gives you current). Edit /etc/network/interfaces, substituting your network details.

sudo apt-get install vim openssh-server
sudo vim /etc/network/interfaces

iface eth0 inet static
address 192.168.0.18
netmask 255.255.255.0
gateway 192.168.0.100

After this execute

sudo ifdown eth0; ifup eth0

Install some basic tools

sudo apt-get install ssh vim

You can now use a terminal like PuTTY to log in.

At this time you might like to edit /etc/hostname and /etc/hosts to give your tile server a name. I called mine 'maps'. From other machines, I referred to it by ip-address.

You will need to fully update the server

sudo apt-get update
sudo apt-get dist-upgrade

Setting Up The Environment

Installation

Install the required tools to support the OSM and web services.

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:kakrueger/openstreetmap
sudo apt-get update
sudo apt-get install libapache2-mod-tile

NOTE: During this you will be prompted for some information. Keep the default values unless you know what you are doing.

NOTE: One of the prompts will be to provide access to the postgresql database. Add your user account name when prompted.

Download and import the OSM data

You will need to download an OSM dataset. A list of options can be found here http://download.geofabrik.de/

The instructions below are for the Australia/Oceania region

wget http://download.geofabrik.de/australia-oceania-latest.osm.pbf
osm2pgsql --slim -C 1500 --number-processes 4 australia-oceania-latest.osm.pbf

This will take some time to complete. After it has completed run the following command to restart the tile rendering service.

sudo /etc/init.d/renderd restart

Edit the default website

By default the included HTML file defaults to the localhost. You will need to edit this so that the images can be loaded using relative references.

sudo vim /var/www/osm/slippymap.html

Remove the text http://localhost

<esc>
:%s/http\:\/\/localhost//g

You can also edit the default co-ordinates used so the by default map centers on a location relevant to you.

Edit the lat, long & zoom values appropriately. The values below will center the map on the middle of Australia.

var lat=-26.30;
var lon=134.30;
var zoom=5;

You can now point your browser to the map server.

http://<server ip>/osm/slippymap.html

Adding Custom Shape Files

WARNING This bit is currently untested  WARNING

Export the shape files to somewhere accessible by mapnik (/etc/mapnik-osmdata/inc) ??

no idea where this is in the new setup.

Add appropriate style rules and layers to the map xml data file (/etc/mapnik-osmdata/inc/my_osm.xml.inc)

?? this path is best guess estimate

<Style name="BerthStyle">
<Rule>
<LineSymbolizer>
<CssParameter name="stroke">#000000</CssParameter>
<CssParameter name="stroke-width">0.4</CssParameter>
</LineSymbolizer>
</Rule>
<Rule>
<TextSymbolizer name="name" fontset_name="book-fonts" size="10" fill="rgb(0,0,51)" halo_radius="1" wrap_width="20"></TextSymbolizer>
</Rule>
<Rule>
<PolygonSymbolizer>
<CssParameter name="fill">#404040</CssParameter>
<CssParameter name="fill-opacity">0.6</CssParameter>
</PolygonSymbolizer>
</Rule>
</Style>

<Layer name="geelong-berths-line" srs="+proj=latlong +datum=WGS84">
<StyleName>BerthStyle</StyleName>
<Datasource>
<Parameter name="file">/home/username/bin/mapnik/geelong/BERTHS/BERTHS_line</Parameter>
<Parameter name="type">shape</Parameter>
</Datasource>
</Layer>

Restart renderd and view the map.

There is some useful information available here which relates to different geo spatial reference systems. To ensure everything will work correctly with OSM then it is best to have the data referenced using the WGS84 datum.

References

This guide was originally based on material from here.

Thanks to the author of this guide and to kakrueger for maintaining the repository.