User:NicolasDumoulin/PostGis
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.