User:NicolasDumoulin/PostGis

From OpenStreetMap Wiki
Jump to: navigation, search

Création d'une VM PostGis avec Qemu

Largement inspiré de ce tutoriel

Créer le disque virtuel :

 qemu-img create -f qcow2 mapnik.img 6G

Installer la debian squeeze (ou bien installer une lenny et faites une mise-à-jour en squeeze) :

 qemu -cdrom debian-squeeze-di-beta1-i386-businesscard.iso -hda mapnik.img -boot d
  • décocher tout au moment du choix des paquetages à installer
  • créer l'utilisateur "mapnik"

Une fois l'installation terminée, lancer la VM avec cette commande :

 qemu -redir tcp:2222::22 -redir tcp:5434::5433 -hda mapnik.img -boot c

L'option redir permet de rediriger des ports vers la VM, ainsi vous pourrez vous connecter aux port SSH et Postgres avec les ports locaux 2222 et 5434.

Identifier vous en root dans la VM, et installer le serveur SSH :

 apt-get install openssh-server

Installation des logiciels

En root

 ssh -p 2222 root@localhost
 # Installer les paquets
 apt-get install openjdk-6-jdk postgresql-8.4-postgis postgresql-contrib osm2pgsql proj

Configurer Postgres en ajoutant dans le fichier /etc/postgresql/8.4/main/postgresql.conf :

 listen_addresses = '*' # Pour autoriser les connections distantes
 shared_buffers = 128MB # 16384 pour la version 8.1 de postgreSQL et antérieures
 checkpoint_segments = 20
 maintenance_work_mem = 256MB # 256000 pour la version 8.1 de postgreSQL et antérieures
 autovacuum = off

Suite de la configuration :

 # Autorisation des connections distantes sur le serveur
 echo 'host    all         mapnik         0.0.0.0/0             trust' >> /etc/postgresql/8.4/main/pg_hba.conf
 # Ajustement noyau
 echo 'kernel.shmmax=268435456' >> /etc/sysctl.conf
 sysctl kernel.shmmax=268435456
 # Redémarrer le serveur PostGres
 /etc/init.d/postgresql restart

Avec l'utilisateur postgres

 # depuis un compte root, on passe en utilisateur postgres
 su postgres
 # Création du compte utilisateur mapnik
 createuser -P -s mapnik
 # Création de la base osm
 createdb -E UTF8 -O mapnik osm
 createlang plpgsql osm
 psql -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql -d osm
 # Ajustement des droits
 echo "ALTER TABLE geometry_columns OWNER TO mapnik; ALTER TABLE spatial_ref_sys OWNER TO mapnik;" | psql -d osm
 # Activer intarray
 psql -f /usr/share/postgresql/8.4/contrib/_int.sql -d osm
 # Insertion du SRID
 psql -f /usr/share/doc/osm2pgsql/examples/900913.sql -d osm

La création de la base et d'éventuelles autres bases OSM peut se faire avec ce script :

#!/bin/sh

DBUSER="mapnik"

[ $# -ne 1 ] && {
  echo -n "Name of the database to create: ";
  read DBNAME;
} || DBNAME=$1;

createdb -E UTF8 -O $DBUSER $DBNAME && \
createlang plpgsql $DBNAME && \
psql -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql -d $DBNAME && \
echo "ALTER TABLE geometry_columns OWNER TO $DBUSER; ALTER TABLE spatial_ref_sys OWNER TO $DBUSER;" | psql -d $DBNAME && \
psql -f /usr/share/postgresql/8.4/contrib/_int.sql -d $DBNAME && \
psql -f /usr/share/doc/osm2pgsql/examples/900913.sql -d $DBNAME

Chargement des données

Cela peut se faire

  • soit depuis la machine virtuelle en se connectant avec l'utilisateur mapnik
 ssh -p 2222 mapnik@localhost
  • soit depuis votre machine hôte en remplaçant le port de connexion 5433 par 5434 (selon l'argument passé à qemu) et spécifiant l'hôte 127.0.0.1.

Le chargement se fait simplement ainsi :

 # Récupération des données
 wget -O auvergne.osm.bz2 http://download.geofabrik.de/osm/europe/france/auvergne.osm.bz2
 # Chargement des données dans postgres
 osm2pgsql -S default.style --slim -U mapnik -P 5433 -d osm -C 1024 auvergne.osm.bz2

Pour n'importer qu'un extrait, il faut utiliser osmosis, et on peut dans ce cas travailler avec le fichier pbf qui est moins gros à télécharger :

 # Installer osmosis
 wget -O osmosis-latest.tgz http://dev.openstreetmap.org/~bretth/osmosis-build/osmosis-latest.tgz
 tar xzf osmosis-latest.tgz
 # Création du répertoire bin et ajout d'un lien vers osmosis
 mkdir bin
 ln -s ~/osmosis-0.*/bin/osmosis bin/
 # Récupération des données
 wget -O auvergne.osm.pbf http://download.geofabrik.de/osm/europe/france/auvergne.osm.pbf
 # Découpage d'une petite zone
 osmosis --rb auvergne.osm.pbf  --bb left=3.0323 right=3.252 top=45.8508 bottom=45.6793 completeWays=yes --write-xml grandClermont.xml
 # Chargement des données dans postgres
 osm2pgsql -S default.style --slim -U mapnik -P 5433 -d osm -C 1024 grandClermont.xml

Pour avoir les pistes cyclables dans la base, il faut modifier la feuille de style par défaut.

 # Copie du style par défaut
 cp /usr/share/osm2pgsql/default.style osm2pgsql.style
 # Ajout des voies cyclables
 echo "node,way   cycleway     text         linear" >> osm2pgsql.style
 # Chargement des données dans postgres
 osm2pgsql -S osm2pgsql.style --slim -U mapnik -P 5433 -d osm -C 1024 grandClermont.xml

Utilisation

C'est bon, vous pouvez vous connecter sur votre base avec cette configuration :

  • hôte : 127.0.0.1
  • port : 5434
  • base : osm
  • utilisateur : mapnik

Pour ajouter un srid, effectuer une recherche sur ce site, puis récupérer l'instruction INSERT.