= Rendering OSM data with MapServer on Ubuntu 10.10 = This page provides step by step instructions to setup a Ubuntu 10.10 LTS server from scratch to render OSM data with MapServer 6.x. The following instructions assume that we start with a brand new Ubuntu 10.10 server with Apache installed but none of the MapServer related packages installed. The setup will include: * MapServer 6.x (from the UbuntuGIS repository) * PostgreSQL/PostGIS (from the UbuntuGIS repository) * OSM data to be downloaded from http://download.geofabrik.de/osm/ * Use of "imposm" to load the data in PostGIS: http://imposm.org/ * Map configured in EPSG:900913 projection, with data loaded for the state of Alabama only, and using a Google-like style * MapFile generated using "mapserver-utils": http://code.google.com/p/mapserver-utils/ * Tile caching using Mod-Geocache (to be renamed MapCache): http://mod-geocache.googlecode.com/ == Create work directory == * All the steps that follow assume that the data and mapfiles will be installed in a directory called "osm-demo" in your home directory * Commands: {{{ mkdir ~/osm-demo cd ~/osm-demo/ }}} == Install UbuntuGIS MapServer and PostGIS packages == * Relevant docs: http://trac.osgeo.org/ubuntugis/wiki/UbuntuGISRepository * At the time of this writing, the current version of MapServer is 6.0.1 * Commands: {{{ sudo apt-get install python-software-properties sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable sudo apt-get update sudo apt-get install cgi-mapserver mapserver-bin sudo apt-get install postgresql sudo apt-get install postgis postgresql-8.4-postgis }}} * Install other non-GIS packages that will be required later on: {{{ sudo apt-get install mercurial subversion sudo apt-get install zip unzip }}} == Download OSM data == * You can download data for your region of interest from http://download.geofabrik.de/osm/. The rest of these instructions assume that we work with the data for the state of Alabama. * Commands: {{{ cd ~/osm-demo/ wget http://download.geofabrik.de/osm/north-america/us/alabama.osm.pbf }}} == Install imposm, using virtualenv == * Relevant docs: http://imposm.org/docs/imposm/latest/install.html * Commands: {{{ cd ~/osm-demo/ sudo apt-get install build-essential python-dev protobuf-compiler \ libprotobuf-dev libtokyocabinet-dev python-psycopg2 \ libgeos-c1 sudo apt-get install python-virtualenv virtualenv venv }}} * Install shapely speedups: {{{ sudo apt-get install libgeos-dev venv/bin/pip install https://github.com/olt/shapely_speedups/tarball/master }}} * If we wanted to use the release version of imposm then we'd run the following command, BUT WE DO NOT WANT THAT {{{ # Do not run this command unless you plan to use the release verison of imposm #venv/bin/pip install imposm }}} * Instead we'll use a custom branch of imposm created by tbonfort that creates additional generalized tables for use with mapserver-utils: {{{ hg clone https://bitbucket.org/tbonfort/imposm-tbonfort vi imposm-tbonfort/imposm/defaultmapping.py ... change proj to epsg:900913 (it is set to epsg:4326 bu default) }}} == Create database == * Relevant docs: http://imposm.org/docs/imposm/latest/tutorial.html * Commands: {{{ ~/osm-demo/venv2/bin/python imposm-tbonfort/imposm/psqldb.py > create-db.sh vi ./create-db.sh # cross check if all path are set ... edit the following lines: -------------------8<-------------- psql -d osm -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql # <- CHANGE THIS PATH psql -d osm -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql # <- CHANGE THIS PATH ------------------->8-------------- sudo su postgres sh ./create-db.sh /etc/init.d/postgresql-8.4 restart exit }}} * Note: If we were using the released version of imposm then the first command would have been: {{{ venv/bin/imposm-psqldb > create-db.sh }}} == Load data using imposm == * Commands: {{{ cd ~/osm-demo/ ~/osm-demo/venv/bin/python imposm-tbonfort/imposm/app.py --read alabama.osm.pbf ~/osm-demo/venv/bin/python imposm-tbonfort/imposm/app.py --write --database osm --host localhost --user osm ~/osm-demo/venv/bin/python imposm-tbonfort/imposm/app.py --optimize -d osm }}}