Skip to Content

Configurer une machine virtuelle capable de faire du SIG [3]

Niveau Débutant
Logiciels utilisés PostGIS
GEOS
GDAL
QGIS
Plateforme Windows | Linux

Dans la deuxième partie de ce tutoriel, nous avions vu comment installer et paramétrer PostgreSQL sur notre machine virtuelle. Nous allons maintenant voir comment rajouter la cartouche spatiale PostGIS afin de créer des bases de données spatiales.

La partie qui va suivre est en grande partie inspirée du site de Northwest Spatial Solutions expliquant comment faire du SIG sur Ubuntu. J'y ai apporté quelques modifications mais pour la majeure partie, je me suis contenté de traduire ce tutoriel qui m'a été utile à multiples reprises.

1) Pré-requis

Pour pouvoir faire fonctionner PostGIS correctement, il est nécessaire d’installer GEOS et GDAL. GEOS est un portage en C++ de la Java Topology Suite et qui permet de prendre en charge des opérations sur la topologie et la géométrie dans PostGIS. Quant à GDAL, c’est une librairie permettant de lire et de traiter un grand nombre de format de fichier de type raster à dominante spatiale tels que GeoTIFF par exemple.

Pour installer ces deux librairies, nous pourrions nous servir de la commande apt-get install étant donné que des versions récentes de ceux-ci sont comprises dans les paquets UbuntuGIS téléchargés précédemment. Cependant, comme nous souhaitons disposer des dernières versions disponibles de ces deux outils de façon à être le plus à jour possible au niveau des technologies que nous employons, nous allons devoir télécharger les sources directement sur les sites de GEOS et de GDAL pour ensuite les compiler.

Cela étant, pour pouvoir compiler et configurer GEOS et GDAL correctement, il faut auparavant installer, toujours via la commande apt-get install, différentes librairies et langages dont la liste se trouve dans les lignes de commande ci-dessous :

sudo apt-get install postgresql-server-dev-9.3 proj libjson0-dev xsltproc docbook-mathml docbook-xsl

sudo apt-get install gettext dblatex openjdk-7-jre openjdk-7-jdk icedtea-7-plugin libxml2-dev

Il faut savoir que le plugin icedtea n’est pas obligatoire pour ce tutoriel mais autant l’installer maintenant pour pouvoir exécuter openjava dans un navigateur.

sudo apt-get install swig php5-dev phpunit openjpeg-tools libopenjpeg-dev libkml-dev

sudo apt-get install libpoppler19 libpoppler-dev expat libexpat1-dev libxerces-c-dev libcurl4-openssl-dev

sudo apt-get install g++ python-dev ruby

Maintenant que nous avons installé toutes les dépendances permettant d’installer GEOS et GDAL, nous pouvons maintenant télécharger les codes sources de ces deux librairies pour pouvoir par la suite les compiler et les configurer correctement.

Pour télécharger les sources de GEOS, nous pourrions aller dans notre moteur de recherche préféré et taper par exemple « GEOS source download » mais pour gagner du temps, nous allons nous servir de la commande wget dans le terminal qui permet de télécharger directement un fichier ou répertoire ou autre depuis le terminal pour peu que l’on dispose de l’URL de téléchargement, et cela tombe bien nous l’avons.

La différence avec le fait de télécharger l’archive depuis un navigateur, est qu’elle ne se téléchargera pas par défaut dans le répertoire Téléchargements de l’utilisateur mais dans le répertoire dans lequel nous nous situons dans le terminal.

Pour remédier à cet inconvénient, il suffit d’effectuer la commande cd pour change directory et de préciser dans quel répertoire nous voulons ensuite télécharger l’archive contenant le code source de GEOS.

Voici la commande en question, en supposant que nous voulions télécharger le code source dans notre répertoire de téléchargement par défaut : 

cd ~/Téléchargements

Ensuite, rentrer la commande suivante dans le terminal pour télécharger le code source de GEOS-3.4.2, la dernière version en date:

wget http://download.osgeo.org/geos/geos-3.4.2.tar.bz2

Le téléchargement terminé, il s’agit d’extraire les codes de l’archive. Nous pourrions utiliser l’extracteur nativement présent dans Ubuntu, mais comme le répertoire contenant le code source est doublement compressé comme l’indiquent les deux extensions .tar et .bz2, nous allons passer par une ligne de commande pour réaliser les deux extractions en une fois. Pour cela rentrer la commande suivante dans le terminal : 

 tar jxf  geos-3.4.2.tar.bz2

L’extraction terminée, nous pouvons maintenant passer à la phase de configuration de GEOS. Pour cela rentrer les commandes suivantes : 

cd geos-3.4.2

./configure --with-python --with-php 

La configuration devrait prendre quelques minutes tout au plus mais ce qui vient par la suite devrait prendre plus de temps car nous allons compiler le programme directement depuis le code source. Afin de procéder à la compilation, rentrer la ligne de commande suivante dans un terminal :

make

Le processus prend une bonne quinzaine de minutes normalement donc pas d’autre choix que de prendre notre mal en patience. Une fois la compilation terminée, nous pouvons donc installer GEOS à l’aide de la commande suivante : 

sudo make install

Une petite application faisant partie de l’installation de GEOS nous permet de tester si celle-ci s’est bien déroulée en rentrant la commande suivante : 

geos-config --version

Si tout s’est bien déroulé, vous devriez voir s’afficher à l’écran le résultat suivant : 

3.4.2

Cela indique que GEOS s’est bien installé. Nous pouvons maintenant passer au téléchargement, à la compilation puis à l’installation de GDAL qui reprend des procédés similaires.

Pour télécharger l’archive contenant le code source de GDAL, nous allons donc nous servir de la commande wget en vérifiant au préalable que nous sommes bien dans le répertoire de Téléchargements comme ceci : 

cd ~/Téléchargements

wget http://download.osgeo.org/gdal/1.11.0/gdal-1.11.0.tar.gz

Ensuite, extrayons le code source grâce à une commande similaire à celle que nous avions utilisée pour GEOS : 

tar zxf gdal-1.11.0.tar.gz

Puis positionnons-nous dans le répertoire que nous venons d’extraire et configurons gdal à notre convenance : 

cd gdal-1.11.0

./configure --with-python --with-pg --with-curl --with-geos --with-geotiff --with-jpeg --with-png --with-poppler --with-expat --with-xerces --with-openjpeg --with-java

Il y avait beaucoup plus d’options possibles pour GDAL mais nous avons choisi les plus importantes. Maintenant, il n’y a plus qu’à compiler et installer GDAL grâce aux commandes suivantes : 

make

sudo make install

Comme pour GEOS, pour tester l’installation de GDAL, rentrer la commande suivante : 

gdal-config --version

En toute logique, le résultat affiché par le terminal devrait être le suivant : 

1.11.0

Il ne reste plus qu’à effectuer une petite manipulation pour ajouter ces librairies à une base de données indexées pour que l’éditeur de lien (Dynamic Link) puisse les trouver. Quand on utilise la commande apt-get install, cela se fait automatiquement mais dans le cas d’une compilation à la main comme pour GEOS et GDAL dans le cas présent, il est nécessaire de rentrer la ligne commande suivante : 

sudo ldconfig

Toutes les dépendances permettant de faire fonctionner PostGIS ayant été installées, nous pouvons maintenant passer à la phase d’installation et de configuration de la cartouche spatiale de PostgreSQL.

2) Installation de PostGIS

Pour installer PostGIS, en partant du principe que nous voulons disposer de la dernière version qui est la 2.1.3, nous allons voir que le principe ne diffère pas de l’installation de GEOS ou GDAL. En effet le processus est le même. Commençons donc par télécharger l’archive contenant le code source de PostGIS en vérifiant préalablement que nous sommes toujours dans notre répertoire alloué aux téléchargements :

cd ~/Téléchargements

wget http://download.osgeo.org/postgis/source/postgis-2.1.1.tar.gz

Ensuite, extrayons le code source grâce à une commande similaire à celle que nous avions utilisée pour GEOS : 

tar -xvzf postgis-2.1.3.tar.gz

Puis positionnons-nous dans le répertoire que nous venons d’extraire et configurons postGIS à notre convenance : 

cd postgis-2.1.3

./configure --with-geosconfig=/usr/local/bin/geos-config --with-topology --with-gdalconfig=/usr/local/bin/gdal-config --with-raster

La précision des répertoires d’installation de GEOS et GDAL n’est pas obligatoire mais permet à l’installation de se faire en général beaucoup plus facilement. Maintenant, il n’y a plus qu’à compiler et installer PostGIS puis mettre à jour l’éditeur de lien grâce aux commandes suivantes : 

make

sudo make install

sudo ldconfig

Une fois l’installation de PostGIS terminée, nous allons passer à sa phase de configuration qui est un peu plus ardue que ce que nous avons pu rencontrer jusque là car elle nécessite d’exécuter des requêtes en SQL.

3) Configuration de PostGIS

En théorie, l’installation de PostGIS entraîne la création d’une base de données modèle appelée originalement template_postgis mais il peut arriver qu’elle ne se crée pas automatiquement. Pour le vérifier, c’est simple, nous allons chercher à y apporter des modifications en nous connectant à l’utilisateur postgres pour être à même d’exécuter des requêtes SQL directement dans la base de données. Connectons-nous donc à l’utilisateur postgres : 

sudo -i -u postgres

Ensuite, exécutons la commande postgres permettant d’ajouter l’extension PostGIS à la base template_postgis si celle-ci existe déjà : 

psql template_postgis –c "create extension postgis;"

Grâce à cette fonction, nous allons tout de suite voir si la base de données template_postgis existe déjà ou non. Si le message suivant s’affiche, cela veut dire que la base de données avait bien été crée à l’installation de PostGIS et que l’extension du même nom lui a bien été ajoutée : 

CREATE EXTENSION

Dans le cas contraire, autrement dit, si la base template_postgis ne s’est pas crée au moment de l’installation, le message suivant s’affiche : 

psql: FATAL: la base de données « template_postgis » n'existe pas

Auquel cas, il faut donc créer cette base qui servira de modèle à toutes les nouvelles bases de donnée spatiales que nous créerons par la suite. Pour cela restons connecté à l’utilisateur postgres et rentrons la commande suivante : 

createdb template_postgis -p 5432 -h localhost -U admin -W

Pour information la lettre –p sert à préciser le port, -h permet de préciser l’hôte, -U l’utilisateur qui va se connecter à la base et –W force la demande du mot de passe.

Cela étant fait, nous pouvons ajouter l’extension postgis à notre base grâce à la commande que nous avons vue plus haut. Nous allons également y ajouter l’extension topology qui permet depuis la version 2.0 de PostGIS, comme son nom l’indique, de traiter des problématiques de topologie avec PostGIS. Pour cela , même principe que pour l’extension postgis, rentrer la ligne de commande suivante en tant qu’utilisateur postgres : 

psql template_postgis –c "create extension topology;"

Après confirmation que l‘extension a bien été ajoutée nous allons exécuter un script SQL permettant d’ajouter à notre base certaines fonctions de la version 1.X de PostGIS.  L’intérêt étant de permettre la compatibilité du SGBD avec des bases qui n’auraient pas été construites avec PostGIS 2.x, mais avec des versions antérieures de la cartouche spatiale. Pour exécuter ce script sql, rentrer la ligne de commande suivante : 

psql template_postgis –f /usr/share/postgresql/9.3/contrib/postgis-2.1/legacy.sql

Une fois ces manipulations effectuées, il est possible d’en voir le résultat en se connectant à la base de données template_postgis via PgAdmin3. En explorant un peu la base de données, on s’aperçoit qu’outre les quelques 1400 fonctions créées par l’extension postgis et le script legacy.sql, ainsi que le schéma topology dû à l’extension topology, quatre vues intitulées geometry_columns, geography_columns, raster_columns, raster_overviews ont été créées. Une table intitulée spatial_ref_sys stockant les systèmes spatiaux de référence a également été créée. Il faut rendre ces quatre vues et cette table accessibles à n’importe quel utilisateur de postgres en utilisant la fonction GRANT de la manière suivante : 

psql -d template_postgis -c "GRANT ALL ON geometry_columns TO PUBLIC;"

psql -d template_postgis -c "GRANT ALL ON geography_columns TO PUBLIC;"

psql -d template_postgis -c "GRANT ALL ON raster_columns TO PUBLIC;"

psql -d template_postgis -c "GRANT ALL ON raster_overviews TO PUBLIC;"

psql -d template_postgis -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"

Maintenant que les extensions et les fonctions ont été chargées dans la base template_postgis, il serait bon d’empêcher les utilisateurs de se connecter directement à la base grâce à la commande suivante :

psql -d postgres -c "UPDATE pg_database SET datallowconn=’false’ WHERE datname=’template_postgis’;"

Pour revenir en arrière, il suffira de relancer la commande en remplaçant false par true. Il ne reste plus qu’à prévenir la suppression accidentelle de cette base en rentrant la commande suivante :  

psql -d postgres -c "UPDATE pg_database SET datistemplate=’true’ WHERE datname=’template_postgis’;"

Pour revenir en arrière, réitérer la commande en remplaçant cette fois true par false.

4) Test de l'installation de PostGIS

Dans PgAdminIII, il est facile de constater qu’on ne peut pas se connecter au template postgis dans les bases de données car le symbole de la base de données est barré d’une croix rouge. Mais il est facile d’explorer cette base en créant une nouvelle base de données qui prend pour modèle le template postgis. Pour cela, cliquer droit sur la ligne Bases de données(X) (X étant le nombre de bases de données présentes sur le serveur) et ajouter une nouvelle base de données. Rentrer un nom au choix, par exemple Test, puis sélectionner « admin » comme propriétaire et dans l’onglet définition du formulaire, choisir comme modèle la base TEMPLATE_POSTGIS. Cette base est une copie conforme du template et peut-être manipulée sans risque.

PostGIS ayant été installé et configuré correctement, nous pourrons passer lors de l'étape suivante à l’installation de QGIS-2.2 surnommée Valmiera.

QGIS-2.2 Valmiera

1) Installation de QGIS 2.2

C’est maintenant que nous allons voir l’intérêt de l’installation du dépôt de paquet dans la première partie de ce tutoriel. En effet, si nous ne l’avions pas fait, la version la plus récente de QGIS dans le dépôt UbuntuGIS (qui est plus souvent mis à jour que les paquets présents par défaut dans la logithèque Ubuntu) étant la version 1.8, nous aurions été contraints d’installer cette dernière. Simplement, en installant le dépôt de paquets directement depuis le site de QGIS, nous pouvons désormais, à l’aide de la commande apt-get install, bénéficier de la toute dernière version de QGIS.

Rentrer donc la commande suivante dans le terminal pour installer QGIS-2.2 et ses dépendances : 

sudo apt-get install qgis python-qgis qgis-plugin-grass

Une fois l’installation terminée, nous disposons donc de la dernière version en date de QGIS.

2) Test de l'installation de QGIS-2.2

Pour tester si l’installation s’est bien déroulée, c’est très simple, il suffit de lancer QGIS. Pour ce faire, le plus simple est de le lancer depuis le terminal grâce à la commande suivante : 

qgis

Le logiciel devrait alors s’ouvrir et afficher cela à l’écran : 

Ce tutoriel est maintenant terminé et nous pouvons désormais bénéficier de toute la puissance du SIG sur un environnement Ubuntu virtualisé.

Site officiel : PostGIS
Site officiel : GEOS
Site officiel : GDAL
Site officiel : QGIS
Autres Liens : Northwest Spatial Solutions

Commentaires

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.