Installation d’une base de données spatiales PostgreSQL PostGIS

PostgreSQL PostGIS

Introduction

PostgreSQL est un système de gestion de bases de données relationnelles Open Source. Il est reconnu pour sa fiabilité et ses performances. PostGIS est un module de PostgreSQL qui apporte un lot de capacités et de fonctions spatiales à la base. Il respecte les standards internationaux et il est devenu une référence pour stocker, gérer et analyser des données spatiales. PostGIS est supporté par la fondation OSGeo.

PostGIS implémente les spécifications SQL pour l’information géographique OpenGIS® définies par l’Open Geospatial Consortium (OGC), un consortium international qui établie les documents techniques standards OGC® Standards. Ce document technique est une source d’informations qui peut servir même sans rentrer dans une étude complète et ennuyeuse du standard !

Vous pouvez suivre le tutoriel d’introduction à PostGIS proposé en anglais par OpenGeo. La documentation PostGIS propose des exemples standards des fonctions SQL, gardez là également sous la main !

Installation sous Debian « Wheezy »

Une ligne de commande suffit sous Debian pour installer le serveur de base de données et l’extension spatiale cependant nous allons au préalable ajouter un dépôt au gestionnaire de paquets de la distribution Debian Wheezy afin de récupérer les dernières versions de Postgresql et PostGIS.

Éditez le fichier de sources du gestionnaire de paquets
vi /etc/apt/sources.list.d/pgdg.list
Insérez la ligne suivante :
deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main
Récupérez la clef de sécurité et mettez à jour les informations dans le gestionnaire de paquets
wget https://www.postgresql.org/media/keys/ACCC4CF8.asc
apt-key add ACCC4CF8.asc
apt-get update
Procédez à l’installation
apt-get install postgresql postgresql-contrib libgdal-dev postgresql-9.3-postgis-2.1

Vous pouvez vérifier le numéro de version précisément installée.

psql --version
psql (PostgreSQL) 9.3.5

Lors de l’installation le système a créé un utilisateur système postgres, le client postgresql psql que nous venons d’utiliser est disponible dans le chemin des exécutables, et un super utilisateur nommé postgres, l’utilisateur par défaut des bases de données a été créé dans PostgreSQL.

Nous allons modifier le mot de passe de l’utilisateur base de données postgres. Notez le mot de passe, nous en aurons besoin ultérieurement.

su - postgres
psql
postgres=# \password postgres
Saisissez le nouveau mot de passe :
Saisissez-le à  nouveau :
postgres=# \q

Il s’agit de procéder rapidement à l’installation d’un serveur privé suffisant pour développer une application, je vais ignorer les aspects sécurité et performance d’un environnement de production, c’est à dire ne pas créer de rôles et d’utilisateurs de base de données et ne pas paramétrer le serveur au delà du strict minimum nécessaire à mon propre accès.

Dans l’immédiat ce qui m’importe est de pouvoir me connecter localement depuis l’outil en ligne de commande et depuis une application d’administration client distante avec, pour sécuriser l’accès, une restriction sur mon adresse IP et une connexion par mot de passe crypté.

PostgreSQL est paramétré par défaut pour refuser les connexions entrantes à partir des machines externes, ce qui implique que l’on ne peut pas se connecter depuis un outil d’administration sur un poste de travail.

Pour rendre l’accès disponible il faut paramétrer PostgreSQL pour écouter les connexions entrantes.

Paramétrez un accès distant :
su - postgres
vi /etc/postgresql/9.3/main/postgresql.conf
Modifiez le fichier pour écouter les connexions sur la boucle locale et sur l’adresse IP publique du serveur où est hébergé PostgreSQL.
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = 'localhost, 92.222.27.205'           # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost', '*' = all
                                        # (change requires restart)
port = 5432

Vous pouvez vérifier la prise en compte de vos modifications en lançant la commande netstat avant et après voir redémarré le serveur

exit
service postgresql restart
netstat -an | grep 5432
tcp        0      0 92.222.27.205:5432      0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN
tcp6       0      0 ::1:5432                :::*                    LISTEN
...

Maintenant que PostgreSQL écoute les connexions depuis l’extérieur, il est nécessaire d’étendre les règles de contrôle d’accès par défaut pour accepter les connexions.

Ajoutez une règle d’accès au fichier pg_hba.conf qui autorisera de vous connecter avec mot de passe depuis l’adresse IP de votre poste de travail :
su - postgres
vi /etc/postgresql/9.3/main/pg_hba.conf
Ajoutez la ligne suivante, l’information host permet d’indiquer que la tentative de connexion doit être de type TCP/IP, la première information all spécifie que toutes les bases de données sont acceptées, la seconde information all permet d’accepter tous les noms d’utilisateur de la base de données, enfin la plage d’adresses permet de spécifier les machines client acceptées, saisissez votre adresse IP (l’hôte), suivie du masque CIDR /32 (255.255.255.255) afin d’accepter une seule machine hôte, le dernier paramètre md5 indique la méthode d’authentification, vous devrez vous connecter par mot de passe crypté md5 :
host all all 85.171.50.88/32 md5

Après avoir redémarré le serveur nous allons voir comment nous connecter depuis une application cliente installée sur notre poste de travail.

exit
service postgresql restart

Outil d’administration Pg Admin III

Pg Admin est un outil d’administration et de gestion pour PostgreSQL. C’est un logiciel libre disponible sous Windows, Mac, Linux. Nous utiliserons Pg Admin en priorité par rapport à l’outil en ligne de commande.

Enregistrer une nouvelle connexion

Téléchargez et installez Pg Admin III, sélectionnez dans l’entrée du menu principal
Fichier > Ajoutez un serveur

Une fenêtre s’ouvre ou vous devez paramétrer la connexion, saisissez le nom sous lequel sera enregistré la connexion, le nom d’hôte du serveur sur lequel tourne PostgreSQL, le nom d’utilisateur postgres et le mot de passe que vous avez renseigné après installation du serveur.

Félicitations, vous pouvez désormais vous connecter et utiliser le navigateur d’objet à gauche pour obtenir des informations et interagir avec PostgreSQL.

Créer une base de données et activer l’extension spatiale

Nous allons passer par Pg Admin pour la plupart des opérations d’administration de bases de données. Ces opérations pourraient très bien être réalisées en SQL sous l’outil de ligne de commande psql : Pg Admin vous donne accès au code SQL qu’il génère.

Dans l’explorateur d’objets, faites un clic droit sur l’objet Bases de données et sélectionnez l’entrée Ajouter une base de donnée dans le menu contextuel qui vient de s’ouvrir.Remplissez le formulaire d’ajout de base de données :

  • Dans l’onglet Propriétés donnez pour nom Pesticides, et pour propriétaire postgres
  • Dans l’onglet Définition sélectionnez le codage UTF8, la collation et le type de caractères fr_FR.UTF-8
  • Dans l’onglet SQL vous pouvez vérifier l’instruction SQL qui sera exécutée et au besoin décocher le mode lecture seule pour passer en édition

L’outil exécute la commande SQL sur la connexion serveur active :

CREATE DATABASE "Pesticides"
  WITH ENCODING='UTF8'
       OWNER=postgres
       LC_COLLATE='fr_FR.UTF-8'
       LC_CTYPE='fr_FR.UTF-8'
       CONNECTION LIMIT=-1;
Vous pouvez altérer certaines propriétés de la base ultérieurement d’un double clic sur l’écran de propriétés qui apparaît à la sélection de la base de données dans le navigateur d’objet mais prenez soin de bien définir à la création les propriétés relatives au jeu de caractères et à la localisation

Vous venez de créer une base de données, il vous reste à activer le module spatial pour cette base.

Dans l’explorateur d’objets, faites un clic droit sur l’objet base de données Pesticides et sélectionnez l’entrée Ajouter un objet > Ajouter une extension dans le menu contextuel qui vient de s’ouvrir.Sélectionnez le nom postgis

L’outil exécute la commande SQL d’ajout d’une extension à la base de données :

CREATE EXTENSION postgis;

L’activation de l’extension permet désormais d’utiliser les fonctions spatiales.

Remarquez la création d’une table spatial_ref_sys sous le schéma public (par défaut si vous n’avez pas modifié le schéma). Vous pouvez parcourir les 100 premières lignes à l’aide d’un clic droit sur la table dans l’explorateur d’objet, sélectionnez l’entrée de menu contextuel Afficher les données > Visualiser les 100 premières lignes.

Vous pouvez vérifier dans la documentation du standard OpenGIS® les informations relatives à cette table : elle sert à décrire le système de coordonnées et les transformations pour la représentation de la géométrie. Elle permet de conserver en base les informations sur chaque système spatial de référence :

  • SRID est l’identifiant du système spatial de référence, il est donc unique et sert de clef dans la table
  • AUTH_NAME est le nom de l’autorité qui enregistre le système spatial, typiquement EPSG (European Petroleum Survey Group) pour le jeu de données par défaut. (voir http://spatialreference.org/ pour d’autres systèmes)
  • AUTH_SRID est l’identifiant du système de référence au sein de l’autorité qui l’enregistre (le code de projection EPSG dans le cas d’EPSG)
  • SRTEXT est la description du système spatial de référence au format Well known text (WKT est un format texte standard pour représenter les objets géométriques et les informations rattachées)
  • La dernière colonne PROJ4TEXT n’est pas dans le standard. PostGIS utilise la librairie de projections cartographiques Proj4 pour les transformations de coordonnées, la colonne contient les définitions de coordonnées Proj4 pour le SRID
A retenir : La table spatial_ref_sys contient les informations nécessaires pour permettre d’identifier les systèmes spatiaux de référence (SRS) et permettre de transformer et changer de projection d’un système à un autre.

Créer une table spatiale se résume à ajouter une colonne de type Geometry à la définition de table où l’on va préciser certaines informations en plus des informations de colonne par défaut :

  • Le SRID du système spatial de référence qui servira de clef étrangère vers la table spatial_ref_sys
  • La dimension spatiale COORD_DIMENSION : indique un entier qui correspond à 2, 3 ou 4 dimensions pour les coordonnées
  • Le type de l’objet géométrique qui doit être enregistré si l’objet possède un type unique (POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION, …) ou bien le type GEOMETRY

Nous n’allons pas créer manuellement les tables spatiales mais munis de ces informations nous pouvons passer au chargement de données et contrôler le format des tables crées.

Faites découvrir ce billet...Email this to someonePrint this pageShare on FacebookTweet about this on TwitterShare on Google+Share on LinkedIn

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *