Egen Open Street Map Server

Detta inlägg är lite av ett experiment, och jag har inte fått riktigt allt att fungera.

Open Street Map är en karttjänst där användarna själva bidrar med informationen, lite som Wikipedia fast för kartor. Skall man vara noga så får inte kommersiella data användas som källa för dessa data och exempelvis så får man inte hämta gatunamn från ENIRO eller motsvarande, utan man måste själv ta reda på vad gator heter om man skall mata in informationen i OSM.

Databasen och verktygen för att redigera dessa data har utvecklats under lång tid och vill man snabbt komma igång med att producera geodata så är OSM en bra start. Om man inte kan jobba online så blir det svårare, men helt omöjligt är det inte. Jag använder i grunden en instruktion som går att hitta här, men jag har försökt uppdatera till nuvarande standard.

Instruktionen nedan är inte förklarande i stor detalj och det är lätt att glömma något, så var noggrann.

För att skapa en egen OSM server så börjar man med en Ubuntu Server 12.04 LTS. Under installationen läggs LAMP och SSH till.

När installationen är klar så skall systemet uppdateras (sudo apt-get update/upgrade) och ytterligare program läggas till:

sudo apt-get install subversion autoconf screen munin-node munin htop unzip
mkdir src bin data
cd data

Man kan välja att ladda hem olika mycket data, och då hela ”planeten” är 28 Gb så väljer jag att bara ladda hem Sverige med kommandot:

wget http://download.geofabrik.de/europe/sweden-latest.osm.bz2

Databasen installeras:

sudo apt-get install postgresql-9.1-postgis postgresql-contrib-9.1
sudo apt-get install postgresql-server-dev-9.1
sudo apt-get install build-essential libxml2-dev libtool
sudo apt-get install libgeos-dev libpq-dev libbz2-dev proj

För att ladda in OSM data i PostGIS databasen behövs några tillägg:

cd ~/bin
wget https://github.com/openstreetmap/osm2pgsql/archive/master.zip
unzip master.zip
cd osm2pgsql-master
./autogen.sh
./configure
make

Ändra i /etc/postgresql/9.1/main/postgresql.conf

shared_buffers = 128MB
maintenance_work_mem = 256MB
checkpoint_segments = 20
autovacuum = off

Maximera det delade minnet:

sudo sysctl -w kernel.shmmax=268435456
sudo sysctl -p /etc/sysctl.conf
sudo /etc/init.d/postgresql restart

Skapa databasen ”gis” och ditt eget användarnamn nedan, välj att sätta användaren som superuser. Detta användarnamn skall användas på flera ställen senare.

sudo -u postgres -i
createuser användarnamn
createdb -E UTF8 -O användarnamn gis
createlang plpgsql gis (behövs nog inte)
exit

Dags för PostGIS och att skapa en databas kallad ”gis”:

psql -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql -d gis

Byt ut ”användarnamn” mot ditt eget val (två ställen). Observera att texten nedan är fyra rader och att det sannolikt inte fungerar med copy-paste.

echo ”ALTER TABLE geometry_columns OWNER TO användarnamn; ALTER TABLE spatial_ref_sys OWNER TO användarnamn;” | psql -d gis
psql -f ~/bin/osm2pgsql-master/900913.sql -d gis
cd ~/bin/osm2pgsql-master
./osm2pgsql -S default.style –slim -d gis -C 2048 –number-processes=1 –cache-strategy=dense ~/data/sweden-latest.osm.bz2

Observera att om du valt att ladda hem andra data än jag gjort så heter din osm-fil något annat. Sedan är det bara att vänta, beroende på hur mycket data du valde att ladda hem. Det kan ta timmar och dagar om det är mycket data som skall läggas in, så tålamod.

Mapnik

Detta är verktyg för att skapa snygga kartor (enligt dom själva) så det är bara att knappa in:

sudo apt-get install -y python-software-properties
sudo add-apt-repository ppa:mapnik/v2.1.0
sudo apt-get update
sudo apt-get install libmapnik mapnik-utils python-mapnik

Ladda hem Mapnik OSM konfiguration.

mkdir ~/bin/mapnik
cd ~/bin/mapnik
wget https://github.com/openstreetmap/mapnik-stylesheets/archive/master.zip
unzip master.zip
cd mapnik-stylesheet-master
mv * ../
cd ..
rmdir mapnik-stylesheet-master
mkdir world_boundaries
wget http://tile.openstreetmap.org/world_boundaries-spherical.tgz
tar xvzf world_boundaries-spherical.tgz
wget http://tile.openstreetmap.org/processed_p.tar.bz2
tar xvjf processed_p.tar.bz2 -C world_boundaries
wget http://tile.openstreetmap.org/shoreline_300.tar.bz2
tar xjf shoreline_300.tar.bz2 -C world_boundaries
wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip
unzip ne_10m-populated-places.zip -d world_boundaries
wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip
unzip 110m-admin-0-boundary-lines.zip -d world_boundaries
./generate_xml.py –dbname gis –host ‘localhost’ –user användarnamn –port 5432 –password ”
./generate_image.py

Om allt fungerat så har du nu skapat en bild över Storbritannien. Det är här någonstans som jag inte riktigt får det att fungera, men PostGIS fungerar.

Om du ”öppnar” servern för databasanslutning (se tidigare inlägg om PostGIS) så kan du nu bland annat använda din OSM databas i QGIS (PostGIS).

Nu skall jag se om jag kan få igång mapnik som det är tänkt.

Annonser

Taggar:, , ,

One response to “Egen Open Street Map Server”

  1. Henrik says :

    Det skulle vara väldigt intressant att verkligen gå igenom vad vi på kommunal nivå kan bidra med till OSM just för att förbättra kvaliteten på informationen. I större städer är ju detta inte direkt ngt problem då OSM många gånger har bättre information än exempelvis google i städer som malmö och köpenhamn. Däremot ute på landsbygden är det sämre, något som vi mindre kommuner säkert skulle kunna åtgärda, exempelvis genom att dela med oss av markanvändningen inom detaljplanelagda områden med mera. Vi är flera kommuner i skåne som till exempel delat med oss av byggnadspolygoner och jag har fått frågor om vi kan dela ut adresser. Det viktiga är väl just att vi bara delar information som har sitt ursprung i egen data.

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

%d bloggare gillar detta: