619 fonctions avancées d’analyses spatiales

QGis n'est pas un outil très utilisé au Québec, par contre les Analystes en Géomatique doivent absolument y jeter un oeil.  Nous utilisons QGis dans la très grande majorité de nos projets chez Solutions Mapgears.  Je n'avais pas encore regardé ce que pouvait offrir l'extension Sextante (aussi disponible sous ArcGIS et gvSIG), probablement parce que ma todolist est un peu trop longue! Bref, ce post d'Oslandia n'avait pas eu encore de suite.

Incroyable, mais on retrouve dans la toolbox de l'extension, pas moins de 619 géoalgorithmes!  GDAL, GRASS, SAGA, OTB(télédétection), R (statistique)....     Vrai que l'interface utilisateur de GRASS n'est pas très sexy, mais on pourra quand découvrir sa puissance via la liste interminable de fonctions dans le toolbar Sextante.  De plus, l'outil dispose d'un "Modeler" mais là vraiment je peux pas en dire plus je ne l'ai pas testé ...

J'ai aussi découvert l'outil d'analyses géoscientifiques System for Automated Geoscientific Analyses (SAGA) un logiciel FOSS.  Le plugin Sextante propose 279 algo de cette plateforme. Le développement semble avoir cessé en 2007, par contre l'outil est le fruit de plusieurs années de développement et vaux vraiment la peine d'être examiné. À mettre sur votre todolist donc!

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

Charger un CSV avec psql dans Postgresql

Pour convertir un fichier CSV avec des coordonnées x,y en champ de type géométrie dans PostGIS, on peux utiliser la commande COPY en ligne de commande psql! 1) Copier le fichier CSV dans un répertoire visible du serveur Posrgresql. Dans le cas de Linux utiliser sudo et changer les droits du fichier CSV: sudo cp fichier_csv dans_repertoire_postgresql sudo chown postgres:postgres fichier_csv 2)Créer la table dans Postgres create table ma_table ( code character(10) NOT NULL, poste character(100) NOT NULL, adresse character(100) NOT NULL, municipalite character(100) NOT NULL, cp character(7) NOT NULL, _lat float, _long float, CONSTRAINT ma_table_pk PRIMARY KEY (code) ); 3)Charger les données du fichier CSV: set client_encoding='LATIN1'; COPY ma_table FROM '/srv/postgresql/scripts/ma_table.csv' delimiter ';'; 4)Ajouter la colonne geométrique select AddGeometryColumn ('public','ma_table','the_geom',4326,'POINT',2); 5)faire le update à partir des coordonnées x,y UPDATE ma_table set the_geom = ST_GeomFromText('POINT('||_long||' '|| _lat||')',4326); 6) Enjoy!