Cette préface débute par divers cas de figure concernant PostGIS. Je ne permet de m'égarer dans les quelques lignes qui suivent rapidement avant de revenir à PostGIS au moment util. Vous comprendrez ma démarche en prenant trois exemples je l'espère assez parlant et convaincant pour introduire PostGIS.
Quand on démarre une documentation, on dit souvent "Il vaut mieux fournir un exemple parlant que tout un blabla sans intérêt!!".
Figure 1. Accidents corporels ayant eut lieu le long de la Route Nationale 113 dans le Gard en 2006 avant le lundi 2006-09-11 (Source: Accidentologie dans le Gard, http://www.01mapserver.com/applis/dde30)
Sur l'image précédente, j'ai interrogé un serveur cartographique pour connaître l'ensemble des accidents qui ont eu lieu le long de la Nationale 113 dans le Gard(30). Mais on peut aussi demander au serveur PostgreSQL/PostGIS par exemple
"Donne-moi l'ensemble des villes que traverse la Nationale 113 dans le Gard pour lesquesl on dénombre des accidents ainsi que le nombre d'accidents pour les dites-villes"
En SQL avec PostgreSQL, je traduirais la demande formulée ci-dessus par la requête suivante
Exemple 1. Exemple de requête avec PostGIS
SELECT DISTINCT l.com_top AS communes,count(foo.date) AS "nombre d'accidents" FROM limites_communales l, (SELECT a.date,a.the_geom FROM rezo_route b,base_accident1 a WHERE b.route='N113' AND a.the_geom && expand(b.the_geom,100) AND distance(a.the_geom,b.the_geom)<100) AS foo WHERE l.the_geom && foo.the_geom AND intersects(l.the_geom,foo.the_geom) GROUP BY l.com_top;
qui me renverra comme réponse
Exemple 2. Résultat de la requête
communes | nombre d'accidents --------------+-------------------- AIGUES-VIVES | 1 BELLEGARDE | 1 BOUILLARGUES | 2 NIMES | 26
Mais ceci n'est qu'un exemple parmi tant d'autres de ce qu'est capable de faire PostGIS!!! Notons au passage que cette requête a été ici exécutée en moins de 100 millisecondes! C'est au travers de ce genre de requête que cette documentation essaiera de vous fournir les pistes nécessaires pour vous former à l'utilisation de PostGIS. Mais pour celà commençons par une remarque tout à fait sommaire beaucoup plus générale.
Par rapport à l'exemple précédent,on peut aussi essayer par exemple d'aller plus loin. Au lieu d'utiliser MapServer, pourquoi ne pas utiliser GoogleEarth pour tenter de visualiser nos données? Alors pourquoi GoogleEarth? Comme tout le monde le sait, 2006 a été l'année de la grande banalisation de la carte sur le Web notamment grâce à un outil comme GoogleEarth. L'engouement du grand public pour cet outil gratuit d'utilisation a bien été ressentie de par le Web et nul ne peut le démentir. Qui dit GoogleEarth dit aussi le fameux fichier kml. Voyons rapidement que passer de PostGIS a kml - au sens de convertir des données de PostGIS vers le format kml - se fait sans souci.
Si on a un outil comme Gdal (version >= 1.4.0) d'installé sur sa machine, il est aussi possible d'utiliser ogr2ogr pour exporter nos données dans un fichier kml
Le site de Gdal est http://www.gdal.org/ où vous trouvrez aussi bien les sources pour GNU/Linux que pour Windows.
L'exportation ici de PostGIS vers KML aura été rendu possible par la ligne de command suivante
Exemple 3. Conversion de PostGIS en KML: utilisation de ogr2ogr
/opt/gdal-1.4.0/bin/ogr2ogr -f KML /root/communes_lr.kml PG:'host=localhost port=5432 dbname=diren user=postgres' \ -sql "SELECT (dump).geom FROM (SELECT dump(transform(the_geom,4326)) FROM communes_lr) AS foo"
Ici nos données sont automatiquement reprojetées à la volée en utilisant la fonction Transform() dans le système WGS84[1] (. La fonction dump() permet quant à elle de fractionner un objet multiple en renvoyant les enregistrements contenant l'objet en question. Par exemple, dump() fractionnera un MULTIPOLYGON en un lot d'enregistrements ordonnés (au sens ligne de tableau ) de POLYGON contenus dans ce MUTIPOLYGON...
Ici j'ai utilisé un outil comme ogr2ogr de GDAL mais il est également possible d'utiliser GeoServer (http://docs.codehaus.org/display/GEOS/Home) qui permet de faire des sorties en KML[2]
PgRouting - couplé à PostGIS - est un module pour .le calcul d'itinéraire. Développé en étroite collaboration par Camptocamp (Suisse/France) et Orkney (Japon), ce module s'est enrichi en début 2007. Si nous considérons par exemple la portion du réseau
avec des données rélles, on aurait par exemple
et pour l'autre itinéraire
Nous aurons l'occasion de voir ces fonctions plus en détail plus tard. Pour l'instant, trois exemples intéressants nous l'avons vu pour le moment du potentiel de PostGIS. Ne nous égarons pas pour le moment. Comme il s'agit ici d'introduire notre travail sur PostGIS, revenons donc à PostGIS de manière conventionnel en commençant par un bref historique.
PostGIS est la cartouche spatial qui confère au SGDBRO [3] PostgreSQL le status de bases de données spatiales.Développé et maintenue par l'équipe de Refractions Research, son cadre d'utiliisation est celui fourni selon les spécificités GPL (http://www.gnu.org/copyleft/gpl.html). Son développement a commencé à l'été 2001. Les débuts de PostGIS étaient assez limités en terme d'offre
C'est au cours de l'automne 2003 que la version 1.0.0 Geos (projet aussi développé par Refractions) fut couplé à PostGIS. Geos offrit des fonctionnalités supplémentaires - étendre les opérateurs relationnelles spatiaux - à PostGIS telle que IsValid(), Intersection(), (...) Il était aussi possible à l'époque d'utiliser le projet Proj. Couplé à ces deux outils, PostGIS offre ainsi plus de 400 fonctionnalités spatiales.
Mais quand est-il actuellement sur PostGIS?
Beaucoup de projets en SIG utilisent PostgreSQL/PostGIS, comme base de données spatiales. Certains sont même venu à abandonner Oracle Spatial pour se tourner vers ce couple. Histoire de licence, coût exhorbitant,...chacun trouvera là ses propres arguments. Même certaines solutions SIG propriétaire proposent dans leur éventail un module ou une extension pour pouvoir se connecter à PostgreSQL/PostGIS: FME...Je citerais aussi à titre d'exemple l'Institut Géographique National - I.G.N - qui a aussi misé sur PostGIS par rapport à d'autre solutions. Dans les premières années de son utilisation PostGIS était utilisé sur GNU/Linux, FreeBSD. Actuellement, il est possible de les utiliser aussi su MAC OS X et Windows.
Pour ce dernier système d'exploitation, son utilisation de 2001 jusqu'au début de l'année 2004 requierait d'avoir cygwin d'installé! C'était la croix et la bannière déjà pour installer Cygwin.Depuis début 2004, des efforts des contributeurs ont été fait pour maintenir à jour une meilleure installation sous WIndows. Je me rappelle encore mes premières heures passées à tenter de les compiler tous les deux sous Windows :D.
Comme j'ai fait parti des premiers à avoir testé PostGIS pour sa compilation sous Windows, un jour je me suis dis. "Tiens ca serait bien de mettre tout ça au propre sur Internet pour les divers utilisateurs!..."
Ce qui est le but du document. Ici j'essaies au fur et à mesure de mes expériences d'enrichir ce document dont je fais la mise à jour fréquemment selon les sorties de nouvelles versions.C'est un travail qui me prend du temps et de la réflexion. Il n'est pas parfait mais j'essais au mieux de le rendre meilleur au fur et à mesure de mes avancées..
Bien qu'il existe aujourd'hui les installeurs sous Windows, je maintiens toujours les premiers chapitres de ce document pour des tests de compilation fréquents, mais aussi pour garder une trace de HOWTO comme on dit pour une nouvelle version. Mais comme on dit aussi "Rien ne vaut un travail bien fait que si on s'est donné la peine de le faire soi-même!"
Comme je commence maintenant à parler de compilation, notons déjà les points suivants
Les divers installations possibles concernent :
PostgreSQL 8.2.1 (http://www.postgresql.org) : version pour laquelle - depuis la 8.0.0 maintenant - le serveur tourne en natif sous Windows . Les versions de Windows supportées sont Windows 2000/2003 ou XP. Ne pas oublier son incompatibilité avec NT 4. Le système de fichier du disque - sur lequel PostgreSQL sera installé - le plus "apprécié" sera du NTFS. Le site français de PostgreSQL est http://www.postgresqlfr.org
PostGIS 1.2.0 (http://postgis.refractions.net): tout le monde connait...Le site de contribution en français est http://www.postgis.fr
Geos 2.2.3 (http://geos.refractions.net): librairie qui enrichit/complète la panoplie des fonctions spatiales (topologiques, relationnelles au sens géométrique, etc...) de PostGIS;
Proj 4.5.0 (http://www.remotesensing.org/proj/): librairie permettant la reprojection dans les divers systèmes de projection connus (Lambert II Etendu, Lambert III, , Lambert Zone II etc...).
Ce document n'a pas la prétention d'êre un document de substitution par rapport aux documentations officielles de PostGIS, PostgreSQL, Geos et Proj. Bien au contraire, il s'agit d'un support de travail de deux contributeurs - principalement PostGIS - pour la commune francophone en SIG. Ce document est autant que possible mis à jour régulièrement.
Le document est divisé en plusieurs parties. Voici un bref descriptif des divers thèmes abordés.
PARTIE I - Installation sous Windows
Chapitre 1: Pré-requis. On y dresse l'environnement nécessaire pour la compilation des divers outils sur Windows, notamment MinGW et Msys
Chapitre 2: Compilation et Installations. On y traite des diverses commandes à effectuer pour mener à bien les compilations. L'intégralité de la distribution (ensemble des binaires obtenus) proposée est une distribution minimale par rapport au panel proposée par l'équipe de PostgreSQL sous Windows. Mais elle est amplement suffisante pour apprendre à utiliser PostGIS/PostgreSQL sous Windows
PARTIE II - Installation sous GNU/Linux, Ubuntu Edgy Eft
Chapitre 3: Installation sous Ubuntu Edgy Eft . Nous verrons comment installer nos outil sous Ubuntu.
PARTIE III - PostgreSQL - configuration et administration minimale
Chapitre 4: Paramétrer PostgreSQL sous Windows et GNU/Linux. Ici, nous verrons comment administrer de manière minimale notre serveur PostgreSQL. Les points comme
PARTIE IV - PostGIS
Chapitre 5 - Tutoriaux. Au travers d'exemples pédagogiques, nous apprendrons à prendre en main PostGIS. Nous dressserons un premier bilan des premières fonctionnalités spatiales utiles et à connaître.
Chapitre 6 - Etudes de cas. Les connaissances acquises au cours du chapitre précédents serons mis à profit pour des études de cas sur des données réelles. Nous verrons notamment comment importer des données issus de Shapefiles, créer des index spatiaux, optimiser des requêtes etc...
PARTIE V - Annexes
Divers cas d'administration concernant PostgreSQL/PostGIS sont mentionnés dans les annexes de cette documentation. Cette partie étant souvent mise à jour régulièrement, je vous invite donc à la feuilleter en long et en large au lieu de dresser ici son contenu. Merci
REMARQUE IMPORTANTE POUR WINDOWS: Dans le cas où vous ne souhaiteriez pas compiler les outils par vous-même (= passer les deux premiers chapitres), deux solutions s'offrent à vous. SOLUTION I: disposer d'une distribution déjà compilée et installer PostgreSQL manuellement. Dans ce cas, merci de consulter au chapitre 3 la section "Se procurer une distribution déjà compilée" et de suivre la documentation à partir du chapitre 3. SOLUTION II: ne rien installer. Dans ce cas, rendez-vous à l'annexe "Foire Aux Questions" pour obtenir des installeurs déjà existants et suivez la documentation à partir du chapitre 4! CE DOCUMENT NE FOURNIT QU'UNE INSTALLATION MINIMALE SUR L'UTILISATION DE POSTGIS ET DE POSTGRESQL!
Droits sur ce document
Ce document est fourni à titre indicatif. En le lisant ou en essayant les commandes par vous-même, vous vous engagez à ne me porter aucune responsabilité éventuelle aussi bien d'odre matériel que software. L'auteur ne saurait être tenu responsable pour un désagrément que ce soit.
Il est libre de droit donc vous pouvez aussi bien l'utiliser:
pour un cadre purement pédagogique: un cours dispensé en Université ou pour une formation faite par un prestataire
pour une conférence, rédaction de mémoire ou de rapport etc..MERCI EN TOUT CAS DE CITER LES SOURCES LE CAS EVENTUEL!
Les images des données affichées dans ce document ont reçu l'approbation des instances compétentes pour leur affichage que je tiens à remercier ici: DIREN Languedoc-Roussillon, DRASS Languedoc-Roussillon, DIREN et DRASS de Bourgogne.
Notes de rédaction de ce document. Ce document a été rédigé en DocBook Version 4.2. La version imprimable au format pdf de ce document a été rédigée à partir du projet DBLaTEX http://dblatex.sourceforge.net maintenu par Benoit GUILLON. C'est la version 0.1.8 de DBLaTEX que j'ai utilisé.
BONNE LECTURE A TOUS!
[1] WGS84: système utilisé pour le GPS , avec l'identifiant du système de projecion valant 4326)
[2] GeoServer est un projet écrit en Java, supportant aussi bien le WFS Transactionnel que la WMS. GeoServer est certifié OGC pour le support WMS 1.1.1 et WFS-T 1.0. Pour simplifier, on dira que c'est un serveur de données pouvant se connecter à des bases de données comme PostgreSQL/PostGIS, des fichiers (Shapefile),...Il supporte beaucoup de sformat de sortie comme PNG, SVG, KML, PDF
[3] SGBDRO: Système de Gestion de Bases de Données Relationnelles Orienté Objet. Dans un SGBDR classique, les données sont stockées dans des structures de données à deux dimensions: les tables. L'aspect relationnel-objet permet d'étendre ce modèle relationnel: support des tableaux, héritage, fonctions. ..Je ne m'attarderais pas plus sur les grands termes.