Imposm pour Open Streets Map avec AQréseau dans votre SIG bureautique

J'ai utilisé pour un client, l'utilitaire imposm dans le but de créer une carte de base spécifique pour ses besoins. Ce logiciel Open source s'exécute dans un environnement virtuel python "virtualenv". J'ai été surpris par l'efficacité de l'outil et surtout l'énorme potentiel qu'il offre pour avoir accès à une donnée de contexte gratuite, disponibles en format vectoriel de façon uniformes pour la planète !  Cet utilitaire a le mérite de grandement simplifier l'utilisation des données du monstre OSM en créant un modèle de donnée plus proche du SIG que du GPS (modèle par défaut de OSM). Le découpage des données OSM proposé par impom est documenté sur le site.

Pour utiliser cet outil vous avez besoin:
  • d'un Mac ou Ubuntu
  • d'un serveur Postgresql / PostGIS  ( en mode local sur votre Laptop ou PC pas de problème)
  • des librairies et outil imposm  (l'installation est simple, suivre la procédure sur le site Web)
example de données disponibles

J'ai utilisé un fichier de données OSM découpé selon les limites de la province de Québec à partir du serveur Geofabrik.  Geofabrik est une entreprise d'Allemagne qui offre des services professionnelles aux entreprises et organismes publics désirant utiliser l'information Open Streets Map pour leurs besoins.  Sur ce serveur, les données sont mises à jour de façon quotidienne.  Le format utilisé par IMPOSM est le pbf (Protocolbuffer Binary Format ) qui est plus compressé et plus rapide.  Dans mon cas, j'avais déjà un serveur Postgresql / PostGIS, donc je n'ai eu qu'à créer une nouvelle base de données.  J'ai ajouté dans ma procédure, l'ajoute de la Géobase AQréseau

1)Installer imposm
sudo apt-get install build-essential python-dev protobuf-compiler 
                     libprotobuf-dev libtokyocabinet-dev python-psycopg2 
                     libgeos-c1
sudo apt-get install libgeos-dev
sudo apt-get install python-virtualenv
virtualenv venv
source venv/bin/activate
pip install Shapely==1.2.10
pip install https://github.com/olt/shapely_speedups/tarball/master
pip install imposm
2)Télécharger un fichier de données OSM via Geofabrik
wget http://download.geofabrik.de/osm/north-america/canada/quebec.osm.pbf
3)Créer une base de données PostGIS  'osm'
createdb -E utf8 -O postgres -T postgis osm
4)Charger les données avec l'outil imposm
imposm --read quebec.osm.pbf
imposm --write --database osm --host localhost --user osm
imposm  --optimize -d osm
5)Je vais en profiter pour ajouter la Géobase d'Adresses Québec à mon serveur  de cette façon:
wget http://adressesquebec.gouv.qc.ca/zip/aqreseau.zip
unzip aqreseau.zip
cd ../ESRI(shp)/
shp2pgsql -s 3798 -c -g the_geom -I -W "latin1" AQ_ROUTES.shp aq_routes >aq_routes.sql
export PGCLIENTENCODING=LATIN1
psql -d osm -U osm -W -f aq_routes.sql
NOTE: Attention au système de projection de la base de données epsg:3798

Pour ce qui est de mon importation de la province, la liste des tables du modèle, avec le nombre d'enregistrements pour la province de Québec est listé ici.  De plus, on remarquera que toutes les tables on un préfixe (osm_new).  Cette particularité est liée aux fonctionnalités facilitant les mises à jour des données OSM (mise à jour différentielle non supportée).

osm=# SELECT schemaname,relname,n_live_tup 
FROM pg_stat_user_tables 
ORDER BY n_live_tup DESC;
schemaname |         relname          | n_live_tup
------------+--------------------------+------------
public     | aq_routes                |     408276
public     | osm_new_waterways        |     245797
public     | osm_new_minorroads       |     195209
public     | osm_new_waterareas       |     131509
public     | osm_new_landusages       |      98800
public     | osm_new_mainroads_gen1   |      69004
public     | osm_new_mainroads_gen0   |      69004
public     | osm_new_mainroads        |      69004
public     | osm_new_waterareas_gen1  |      47531
public     | osm_new_buildings        |      38948
public     | osm_new_landusages_gen1  |      34800
public     | osm_new_landusages_gen0  |      11318
public     | osm_new_waterareas_gen0  |       9585
public     | osm_new_motorways_gen0   |       7320
public     | osm_new_motorways_gen1   |       7320
public     | osm_new_motorways        |       7320
public     | osm_new_railways_gen1    |       6129
public     | osm_new_railways_gen0    |       6129
public     | osm_new_railways         |       6129
public     | osm_new_transport_points |       5010
public     | osm_new_places           |       3191
public     | osm_new_amenities        |       1933
public     | osm_new_admin            |        473
public     | osm_new_transport_areas  |        222
public     | osm_new_aeroways         |        193

La taille de la base de données OSM pour la province de Québec n'est que de 635Mb dans la base de données si on soustrait la taille des données Adresses Québec (AQréseau).

osm=# SELECT pg_size_pretty(pg_tablespace_size('pg_default'));
 pg_size_pretty
----------------
 744 MB
(1 row)
osm=# SELECT pg_size_pretty(pg_relation_size('aq_routes')) as table_size;
 table_size
------------
 109 MB
(1 row)

Du coup, je me retrouve avec une base de données de contexte pratique faciles à utiliser avec QGis ou n'importe quel autre SIG bureautique pouvant se connecter a Postgersql / PostGIS.

Ajoute d'une couche de parc dans mon projet QGis