PostgreSQL/PostGIS sous Debian Testing

Jean David TECHER

Résumé

Ce guide fournit une note d'installation de PostgreSQL/PostGIS sous GNU/Linux pour Debian Testing. J'ai ici tenté de fournir un guide assez détaillé et complet sur les diverses étapes qui permettent de mettre en place un SGDBR comme PostgreSQL digne de ce nom.


Table des matières

1. Compilation et Installation sur GNU/Linux pour Debian Testing à partir des sources
1.1. Création des répertoires des sources
1.2. PostgreSQL
1.2.1. Création du super-utilisateur de PostgreSQL
1.2.2. Pré-requis
1.2.3. Téléchargement et décompression
1.2.4. Configuration
1.2.5. Compilation et installation
1.2.6. Ajout des outils/supports contributifs pour PostgreSQL
1.2.7. Commandes post-installation
1.2.8. Jeu de caractères Europe occidentales, LATIN9
1.2.9. Initialisation du serveur
1.2.10. Installation de PostgreSQL en tant que service
1.2.11. Optionnel: Pouvoir créer tous les paquets .deb nécessaires sous Debian
1.3. Geos et Proj
1.3.1. Téléchargement
1.3.2. Compilations et Installations
1.4. PostGIS
1.4.1. Téléchargement
1.4.2. Compilation et Installation
1.4.3. Tests de régression
2. PostGIS
2.1. Créer une base avec PostGIS
2.2. Effectuer des requêtes: le moniteur interactif psql de PostgreSQL
2.3. Effectuer des requêtes: PgAdmin III
2.4. Exemples de requêtes spatiales I
2.4.1. Création de la base et d'une table
2.4.2. Ajout de la colonne géométrique à la table - AddGeometryColumn()
2.4.3. Objets géométriques spécifiés par l'O.G.C dans PostGIS
2.4.4. Insertion d objets géometriques - GeometryFromText()
2.4.5. Insertion des données dans la table
2.4.6. Question: Quelles sont les aires des objets? - Area2d() -
2.4.7. Question: Quel sont les types géométriques des objets? - GeometryType() -
2.4.8. Question: Qui est dans le bâtiment 2? - Distance() -
2.4.9. Question: Qui est dans le bâtiment 2? - WithIn() -
2.4.10. Question: Quel est l'objet géométrique le plus proche du pieton 2? - Min(), Distance() -
2.5. Exemples de requêtes spatiales II
2.5.1. Chargement des données par SQL
2.5.2. Chargement de données par ESRI Shapefiles (shp2pgsql)
2.5.3. Question-Pratique: Qu'elle est la version de PostgreSQL?
2.5.4. Question-Pratique: Où se trouve notre répertoire de bases de données? - PGDATA -
2.5.5. Question-Pratique: Qui sont les utilisateurs de PostgreSQL?
2.5.6. Question-Pratique: Quelles sont les infos sur les outils compilés pour PostGIS?
2.5.7. Question-Pratique: Quel est le listing des bases de PostreSQL?
2.5.8. Question-Pratique: Quelles sont les tables contenues dans la base?
2.5.9. Question-Pratique: Utiliser une vue pour simplifier la recherche du listing des tables.
2.5.10. Question: Où sont stockées les informations relatives aux données spatiales (métadonnées) des tables avec PostGIS? - table geometry_columns -
2.5.11. Question-Pratique: Comment créer une fonction en PLP/PGSQL qui puisse faire le différentiel entre les tables référencées par geometry_columns et toutes les tables contenus dans le schéma public de la base (tables non géospatiales)?
2.5.12. Question: Comment sont stockées les données géométriques avec PostGIS?
2.5.13. Question: Quelles sont les aires et les périmètres des bâtiments?
2.5.14. Question: Qui est dans le bâtiment Résidence des Mousquetaires ?
2.5.15. Question: Quelles distances séparent les bâtiments?
2.5.16. Question: Combien de points composent chaque objet de la table great_roads? - NumPoints() -
2.5.17. Question: Dans la table great_roads, quels sont les premier et dernier point de la Rue Paul Valéry? - StartPoint(), EndPoint() -
2.5.18. Question: Quels sont les points d'intersection entre les petites routes (small_roads) et les grandes routes (great_roads)?
2.5.19. Question: Quel bâtiment est le plus proche de la personne 2?
2.5.20. Question: Quel bâtiment ne contient aucune personne?
2.5.21. Question: Quels sont les personnes présentes dans les bâtiments?
2.5.22. Question: Combien y-a-t-il de personnes par bâtiments?
2.5.23. Question: Quel est l'aire d'intersection entre la rivière et les parcs?
2.5.24. Question:Quel bâtiment est contenu dans le parc Mangueret I? - Contains() -
2.5.25. Question:Quelles sont les personnes proches de la rivière dans un rayon de 5 mètres? - Buffer () -
2.5.26. Question: Quel parc contient un "trou"? - Nrings() -
2.5.27. Question: Quels sont les bâtiments que rencontrent la ligne qui relie la personne 5 à la personne 13? - MakeLine() -
2.5.28. Application: Utiliser les déclencheurs (triggers) en PL/PGSQL de PostgreSQL pour suivre à la trace la personne 7 quand elle se déplace. Selon sa position, savoir quel est le bâtiment qui lui est le plus proche ou le bâtiment dans lequel elle se trouve?
2.6. Cas pratique avec MapServer
2.6.1. Importation des communes du Languedoc-Roussillon
2.6.2. Afficher les informations relatives au Lambert II Etendu depuis la table spatial_ref_sys
2.6.3. Question: Comment faire si on a oublié de préciser l'identifiant de système de projection? - UpdateGeometrySrid() -
2.6.4. Création d'index spatiaux Gist, Vacuum de la base
2.6.5. Question: Qu'elle est l'étendue géographique de la table communes_lr? - Extent() -
2.6.6. Visualisation des données avec MapServer
2.6.7. Question: Quelles sont les comunes avoisinantes de Montpellier?, Utilité des index spatiaux - Distance(), && -
2.6.8. Utilité des index spatiaux - temps demandé pour exécuter la requête
2.6.9. Créer une table communes_avoisinantes correspondant aux communes avoisinantes de MONTPELLIER, extraite et conforme à la structure de la table communes_lr, exploitable par MapServer.
2.6.10. Requête 1: Qu'elle est l'intersection entre MONTPELLIER et les communes de LATTES et de JUVIGNAC?- Intersection()- Que vaut cette géométrie en SVG? - AsSVG(),
2.6.11. Requête 2: Qu'elle est la commune ayant la plus petite aire?
2.6.12. Mapfile générale pour la table communes_avoisinantes et les deux requêtes précédentes
2.6.13. Exercice: Obtenir une table departements_lr qui contient les contours départmentaux du Languedoc-Roussillon à partir de la table communes_lr
2.6.14. Exercice: Trouver les communes du Gard et de l'Aude qui sont limitrophes à l'Hérault et les afficher grâce à MapServer.
Bibliographie

Liste des illustrations

1.1. Configuration des locales: choix des jeux régionaux possibles
1.2. Configuration de la locale: choix en fr_FR@euro
2.1. Le moniteur psql - Connexion à la base testgis.
2.2. psql: Fonction AddGeometryColumn() de PostGIS
2.3. psql: Insertion des données dans la table test
2.4. Visualisation de la table test dans la base testgis
2.5. Visualisation des bâtiments (tables buildings et parcs et rivers).
2.6. Visualisation des personnes (table personnes).
2.7. Visualisation des petites et grandes routes (tables small_roads et great_roads).
2.8. Personnes présentes dans le bâtiment Résidence des Mousquetaires
2.9. Points d'intersection entre les tables small_roads et great_roads
2.10. Bâtiment ne contenant aucune personne : EDF
2.11. Intersection entre la rivière et les parcs
2.12. Bâtiment contenu dans le parc Mangueret I: Office du Tourisme
2.13. Buffer de 5 mètres sur la rivière: les personnes 8 et 10 y sont présentes
2.14. Ligne reliant les points désignant les personnes 5 et 13
2.15. Bâtiments (table buildings) que rencontre la ligne reliant les points désignant les personnes 5 et 13
2.16. Affichage des communes du Languedoc-Roussillon (MapServer+PhpMapScript)
2.17. Les communes avoisinantes de Montpellier
2.18. Intersection entre MONTPELLIER et les comunes de LATTES et de JUVIGNAC
2.19. LATTES: la commune ayant la plus petite aire.
2.20. Affichage des départements du Languedoc-Roussillon
2.21. MapServer: Communes du Gard (30) et de l'Aude (11) limitrophes à l'Hérault (34)