Chapitre 2. Installation



 Table des matières

2.1 Version courte
2.2. Prérequis
2.3. Obtenir le code source
2.4. Installation
2.4.1. Configuration
2.4.2. Compilation
2.4.3. Tests
2.4.4. Installation
2.5. Créer une base de données spatiales
2.6. Créer des bases de données spatiales à partir d'un modèle
2.7. Mise à jour
2.7.1. Mise à jour 'légère'
2.7.2. Mise à jour 'complète'
2.8. Problèmes fréquents
2.9. JDBC
2.10. Importeur/Exporteur

2.1 Version courte

tar xvfz postgis-1.4.0.tar.gz
cd postgis-1.4.0
./configure
make
make install
createdb yourdatabase
createlang plpgsql yourdatabase
psql -d yourdatabase -f lwpostgis.sql
psql -d yourdatabase -f spatial_ref_sys.sql

Le reste de ce chapitre va vous présenter chacune de ces étapes d'installation de manière détaillée.

haut de la page | table des matières

2.2. Prérequis

Pour être compilé et utilisé, PostGIS nécessite l'ensemble des outils suivants.
Nécessaires :

Optionnels :

haut de la page | table des matières

2.3. Obtenir le code source

Téléchargez l'archive du code source de PostGIS depuis la site de téléchargement : http://postgis.refractions.net/download/postgis-1.4.0.tar.gz.

wget http://postgis.refractions.net/download/postgis-1.4.0.tar.gz
tar -xvzf postgis-1.4.0.tar.gz

Cela va créer un répertoire intitulé postgis-1.4.0 dans le répertoire courant où vous avez lancé les commandes précédentes.

Vous pouvez aussi récupérer le code source de PostGIS à partir du serveur svn de l'OSGeo http://svn.osgeo.org/postgis/trunk/.

svn checkout http://svn.osgeo.org/postgis/trunk/ postgis-1.4.0

Rendez-vous dans le nouveau répertoire postgis-1.4.0 pour continuer l'installation.

haut de la page | table des matières

2.4. Installation

De nombreux système d'exploitation possèdent maintenant des paquets pré-compilés pour PostgreSQL/PostGIS. La plupart du temps, la compilation est uniquement nécessaire si vous souhaitez utiliser la toute derinère version ou si vous êtes responsable du paquet.

Le module PostGIS est une extension du serveur principal PostreSQL. En temps que tel, PostGIS 1.4.0 nécessite une accès à l'ensemble des fichiers d'entêtes (.h) du serveur PostgreSQL pour être compilé. Il peut être compilé en utilisant une version 8.2.0 ou supérieure de PostgreSQL. Les version plus ancienne de PostgreSQL ne sont pas supportées.

Référez vous aux guides d'installation de PostgreSQL si vous ne l'avez pas déjà installé http://www.postgresql.org.

Si vous envisagez d'utiliser les fonctionnalités de GEOS, vous pourriez devoir explicitement lier PostgreSQL à la bibliothèque standard C++ :

LDFLAGS=-lstdc++ ./configure [VOS OPTIONS ICI]
C'est la bonne manière de procéder afin d'éviter les exceptions C++ inter-agissant avec les anciens outils de développement. Si vous constatez des erreurs étranges (le serveur principal se ferme de façon inattendue ou ce genre de chose) essayez cette astuce. Cela nécessite évidemment de recompiler PostgreSQL à partir des sources.
Les étapes suivantes présentent la configuration et la compilation des sources de PostGIS. Ils ont été écrit pour les utilisateurs de Linux et ne fonctionneront pas sur Windows et Mac. haut de la page | table des matières

2.4.1. Configuration

Comme pour la plupart des installation Linux, la première étape consiste à générer le fichier Makefile qui sera utilisé pour compiler le code source. Cela est réalisé en lançant le script shell :

./configure

Sans paramètres supplémentaires, cette commande va tenter de localiser automatiquement les composants requis et les librairies nécessaires pour compiler le code source de PostGIS sur votre système. Bien que cela soit la manière standard d'utiliser le script configure, ce script supporte de nombreux paramètres pour ceux qui auraient installé les librairies nécessaires et les programmes dans des répertoires non standard.

La liste suivante présentent seulement les paramètres les plus couramment utilisés. Pour obtenir une liste complète des paramètres existant, utilisez le paramètre --help our --help=short.

--prefix=PREFIX
C'est le répertoire où seront installé les librairies et les scripts SQL de PostGIS. Par défaut, ce répertoire est le même que celui détecté de votre installation de PostgreSQL.
Attention : ce paramètre n'est actuellement pas opérationel, étant donné que le paquet va être installer dans le répertoire de votre installation de PostgreSQL. Consultez cette page : http://trac.osgeo.org/postgis/ticket/160 pour suivre l'état d'avancement de la résolution de ce problème.
--with-pgconfig=FICHIER
PostgreSQL fournit un utilitaire appelé pg_config pour permettre aux extensions comme PostGIS de récupérer le répertoire d'installation de PostgreSQL. Utilisez ce paramètre (--with-pg_config=/chemin/vers/pg_config) pour spécifier manuellement un répertoire d'installation de PostgreSQL spécifique à utiliser pour compiler PostGIS.
--with-geosconfig=FICHIER
GEOS, une librairie géométrique requise, fournit un utilitaire appelé geos-config qui permet au logiciels de récupérer le répertoire d'installation de GEOS. Utilisez ce paramètre (--with-geosconfig=/chemin/vers/geos-config) pour spécifier manuellement le répertoire d'installation de la version spécifique de GEOS avec laquelle vous souhaitez compilet PostGIS.
--with-projdir=RÉPERTOIRE
Proj4 est la librairie de reprojection requise par PostGIS. Utilisez ce paramètre (--with-projdir=/chemin/vers/le_repertoire_de_proj) pour spécifier manuellement le répertoire d'installation de la version de Proj4 spécifique avec laquelle vous souhaitez compiler PostGIS.
description
--with-gui
Compiler l'interface graphique d'inportation de données (nécessite GTK+ 2.0). Cela créera l'interface graphique pour shp2pgsql intitulée : shp2pgsql-gui

Si vous utilisez le code source issue du serveur SVN, la première étape sera de lancer le script

./autogen.sh

Ce script produira le script configure qui sera ensuite utiliser pour paramétrer votre installation de PostGIS.

Au contraire, si vous avez obtenu le code source depuis l'archive, l'exécution du script ./autogen.sh ne sera pas nécessaire étant donné qu'il a déjà été généré.

haut de la page | table des matières

2.4.2. Compilation

Une fois que le fichier Makefile a été produit, compiler PostGIS est aussi simple que de lancer la commande suivante :
make
La dernière ligne affichée devrait être "PostGIS was built successfully. Ready to install".
Depuis la version 1.4.0 de PostGIS, toutes les fonctions ont des commentaires générés à partir de la documentation. Si vous souhaitez installer ces commentaires dans votre base de données plus tard, utilsez la commande suivante :
make comments

haut de la page | table des matières

2.4.3. Tests

Si vous souhaitez tester votre compilation de PostGIS, lancez la commande suivante

make check

La commande ci-dessus va exécuter de nombreuses vérification et des tests de régressions en utilisant la librairie compilée avec la base PostgreSQL actuelle.

Si vous avez compilé PostGIS en utilisant des répertoires non standard pour PostgreSQL, GEOS ou Proj4, vous pourriez avoir besoin de définir la variable d'environnement LD_LIBRARY_PATH.
Actuellement, la commande make check utilise les variables d'environnement PATH et PGPORT pour réaliser ses vérification - il n'utilise pas la version de PostgreSQL qui aurait pût être spécifiée comme option (--with-pgconfig) au script configure. Donc assurez-vous que votre variable PATH coïncide bien avec l'installation de PostgreSQL utilisée lors de la configuration ou préparez-vous a avoir des mots de têtes. Consultez cette page http://trac.osgeo.org/postgis/ticket/186 pour suivre l'évolution de la résolution de ce problème.

Si tout s'est bien passé, la sortie des vérifications devrait ressembler à ceci :

        CUnit - A Unit testing framework for C - Version 2.1-0
        http://cunit.sourceforge.net/



Suite: PostGIS Computational Geometry Suite
    Test: test_lw_segment_side() ... passed
    Test: test_lw_segment_intersects() ... passed
    Test: test_lwline_crossing_short_lines() ... passed
    Test: test_lwline_crossing_long_lines() ... passed
    Test: test_lwpoint_set_ordinate() ... passed
    Test: test_lwpoint_get_ordinate() ... passed
    Test: test_lwpoint_interpolate() ... passed
    Test: test_lwline_clip() ... passed
    Test: test_lwline_clip_big() ... passed
    Test: test_lwmline_clip() ... passed
    Test: test_geohash_point() ... passed
    Test: test_geohash_precision() ... passed
    Test: test_geohash() ... passed
Suite: PostGIS Measures Suite
    Test: test_mindistance2d_recursive_tolerance() ... passed

--Run Summary: Type Total Ran Passed Failed
               suites   2   2    n/a      0
               tests   14  14     14      0
               asserts 84  84     84      0


Creating spatial db postgis_reg
TMPDIR is /tmp/pgis_reg_15328


  PostgreSQL 8.3.7 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-44)
  Postgis 1.4.0SVN - 2009-05-25 20:21:55
    GEOS: 3.1.0-CAPI-1.5.0
    PROJ: Rel. 4.6.1, 21 August 2008

Running tests

   loader/Point.............. ok
   loader/PointM.............. ok
   loader/PointZ.............. ok
   loader/MultiPoint.............. ok
   loader/MultiPointM.............. ok
   loader/MultiPointZ.............. ok
   loader/Arc.............. ok
   loader/ArcM.............. ok
   loader/ArcZ.......... ok
   loader/Polygon.............. ok
   loader/PolygonM.............. ok
   loader/PolygonZ.............. ok
   regress. ok
   regress_index. ok
   regress_index_nulls. ok
   lwgeom_regress. ok
   regress_lrs. ok
   removepoint. ok
   setpoint. ok
   simplify. ok
   snaptogrid. ok
   affine. ok
   wkt. ok
   measures. ok
   long_xact. ok
   ctors. ok
   sql-mm-serialize. ok
   sql-mm-circularstring. ok
   sql-mm-compoundcurve. ok
   sql-mm-curvepoly. ok
   sql-mm-general. ok
   sql-mm-multicurve. ok
   sql-mm-multisurface. ok
   geojson. ok
   gml. ok
   svg. ok
   kml. ok
   regress_ogc. ok
   regress_bdpoly. ok
   regress_proj. ok
   regress_ogc_cover. ok
   regress_ogc_prep. ok

Run tests: 42
Failed: 0

haut de la page | table des matières

2.4.4. Installation

Pour installer PostGIS, lancez la commande suivante :

make install

Cela va copier les fichiers d'installation de PostGIS dans leur répertoires respectifs par rapport au paramètre --prefix spécifié lors de la configuration. En particulier :

Si vous aviez précédemment lancer la commande make comments pour générer le fichier postgis_comments.sql, installez le fichier en lançant la commande :

make comments-install
Le fichier postgis_comments.sql a été séparé du processus de compilation et d'installation par défaut car il implique une dépendance supplémentaire : xsltproc.

haut de la page | table des matières

2.5. Créer une base de données spatiales

La première étape pour créer une base de données PostGIS est de créer une simple base de données PostgreSQL.

createdb [votre_base_de_données]

Bon nombre de fonctions de PostGIS sont écritent dans le language procédural PL/pgSQL. Ainsi, la prochaine étape pour créer une base données PostGIS consiste a charger le support du langage PL/pgSQL dans votre nouvelle base de données. Ceci se fait en utilisant la commande ci-dessous.

createlang plpgsql [votre_base_de_données]

Maintenant chargez les objets et les définitions de fonctions PostGIS dans votre base de données en utilisant le fichier de définition postgis.sql (installé dans le répertoire [prefix]/share/contrib spécifié lors de l'étape de configuration).

psql -d [votre_base_de_données] -f postgis.sql

Pour obtenir un ensemble complet des identifiants de système de références spatiales, vous pouvez aussi charger le fichier de définition spatial_ref_sys.sql et remplir ainsi la table spatial_ref_sys. Cela vous permettra d'utiliser la fonction ST_Transform() sur vos objets géographiques.

psql -d [votre_base_de_données] -f spatial_ref_sys.sql

Si vous souhaitez ajouter les commentaires des fonctions PostGIS, l'étape finale consiste à charger le fichier de définitions postgis_comments.sql dans votre base de données. Les commentaires peuvent être vu simplement en utilisant la méta-commande \dd [nom_de_la_fonction] depuis le terminal interactif psql.

psql -d [votre_base_de_données] -f postgis_comments.sql
haut de la page | table des matières

2.6. Créer des bases de données spatiales à partir d'un modèle

Certaines distributions de PostGIS (en particulier l'installeur de PostGIS pour Win32 >= 1.1.5) charge les fonctionalités de PostGIS dans une base de données modèle appelé template_postgis. Si la base template_postgis existe dans votre installation de PostgreSQL, l'installation rend alors possible pour les utilisateurs ou les applications la création de bases de données spatiales en utilisant une seule commande. Notez que dans les deux cas, l'utilisateur de la base de données doit posséder les droits nécessaires à la création de bases de données.

Depuis un shell :

# createdb -T template_postgis ma_base_spatiale

Pour le code SQL :

postgres=# CREATE DATABASE ma_base_spatiale
TEMPLATE=template_postgis;

ndrpf : bien entendu si vous utilisiez directement template1 à la place de tamplate_postgis vous pourriez simplement utiliser la commande suivante : createdb ma_base_spatiale pour créer une base de données spatiale PostGIS. Cependant il semble pertinent de considérer que toutes les bases de données de votre serveur PostgreSQL n'auront pas besoin des fonctionnalités spatiales de PostGIS. C'est pourquoi template_postgis est présenté ici.

haut de la page | table des matières

2.7. Mise à jour

La mise à jour d'une base de données spatiale existante peut être compliquée étant donné qu'elle implique le remplacement ou l'introduction de nouvelles définitions d'objets PostGIS.
Hélas toutes les définitions ne peuvent pas être facilement remplacées dans une base de données en production, donc parfois le meilleur moyen est encore de sauvegarder puis de recharger les données.
PostGIS fournit une procédure de mise à jour 'légère' (SOFT UPGRADE) pour les versions mineures ou réparant simplement des bugs, et une procédure 'complète' (HARD UPGRADE) pour les versions majeures.
Avant de tenter de mettre à jour postgis, il est toujours plus sûr de sauvegarder vos données. Si vous utilisez l'option -Fc de pg_dump, vous serez toujours capable de restaurer la sauvegarde avec une mise à jour 'complète'.

haut de la page | table des matières

2.7.1. Mise à jour 'légère'

La mise à jour 'légère' consiste à charger le script lwpostgis_upgrade.sql dans votre base de données

$ psql -f lwpostgis_upgrade.sql -d votre_base_de_données_spatiale

Si une mise à jour 'légère' n'est pas possible, le script abandonnera et vous serez informé qu'une mise à jour 'complète' doit être effectuée, donc n'hésitez pas à essayer une mise à jour 'légère' en premier.

Note
Si vous ne trouvez pas le fichier lwpostgis_upgrade.sql, vous utilisez probablement une version antérieure à 1.1 et vous devrez générer ce fichier vous même. Cela se fait avec la commande suivante :

$ utils/postgis_proc_upgrade.pl lwpostgis.sql > lwpostgis_upgrade.sql
haut de la page | table des matières

2.7.2. Mise à jour 'complète'

Par mise à jour 'complète' nous entendons une sauvegarde/rechargement complet des base de données ayant PostGIS d'activé. Vous avez besoin d'une mise à jour 'complète' lorsque le stockage des objets internes de PostGIS change ou lorsqu'une mise à jour 'légère' n'est pas possible.

L'annexe des notes de sorties de versions PostGIS signale pour chaque version si vous devez désinstaller/réinstaller (mise à jour complète) lors du changement de version.

PostGIS fournit un utilitaire pour restaurer une sauvegarde créée avec la commande pg_dump -Fc. Il est expérimental, donc rediriger sa sortie standard dans un fichier sera utile en cas de problèmes. La procédure est la suivante :

Créez une sauvegarde au "format-particulier" de la base que vous souhaitez mettre à jour (appelons là "ancienne_base")

$ pg_dump -Fc ancienne_base > ancienne_base.dump

Restaurez la sauvegarde pour mettre à jour postgis dans une nouvelle base de données. La nouvelle base n'a pas à exister. postgis_restore prend en charge les paramètres passés à createdb après le nom du fichier de sauvegarde et cela peut être utilisé, par exemple, si vous souhaitez utiliser un encodage de caractères différent de celui utilisé par défaut par votre serveur PostgreSQL. Appelons là "nouvelle_base" et utilisons l'encodage de caractères UNICODE :

$ sh utils/postgis_restore.pl lwpostgis.sql nouvelle_base ancienne_base.dump > restauration.log

Vérifiez que tous les objets de la sauvegarde ont réellement besoin d'être restaurés à partir de la sauvegarde et n'entre pas en conflit avec ceux définis dans lwpostgis.sql

$ grep ^KEEPING restauration.log | less

Si vous mettez à jour PostgreSQL d'une version < 8.0 à une version >= 8.0 vous devrez sans doute supprimer les colones attrelid, carattnum et stats de la table geometry_columns, qui ne sont plus nécessaires. Les conserver ne pose pas de problèmes. LES SUPPRIMER ALORS QU'ON EN A BESOIN POSERA UN PROBLÈME !!!

$ psql nouvelle_base -c "ALTER TABLE geometry_columns DROP attrelid"
$ psql nouvelle_base -c "ALTER TABLE geometry_columns DROP varattnum"
$ psql nouvelle_base -c "ALTER TABLE geometry_columns DROP stats"

La table spatial_ref_sys est restaurée à partir de la sauvegarde, pour être sur que vos ajouts particuliers seront conservés, mais ceux fournis pourraient contenir des modifications et donc vous devriez sauvegarder vos modifications, supprimer la table et insérer la nouvelle. Si vous aviez fait des ajouts, nous supposons que vous savez comment les sauvegarder avant la mise à jour de la table. La remplacer par la nouvelle se fait de la manière suivante :

$ psql nouvelle_base
nouvelle_base=> delete from spatial_ref_sys;
DROP
nouvelle_base=> \i spatial_ref_sys.sql

haut de la page | table des matières

2.8. Problèmes fréquents

Il y a plusieurs choses à vérifier lorsque votre installation ou votre mise à jour ne se déroule pas comme prévu.

  1. Vérifiez que vous avez installé la version de PostgreSQL 8.1 ou plus récente, et que vous avez compilé PostGIS avec la même version des sources de PostgreSQL que la version de PostgreSQL que vous utilisez sur votre serveur en production. Des problèmes de références peuvent arriver lorsque votre distribution (Linux) a déjà installé une version de PostgreSQL, ou que vous aviez déjà installé précédemment une version de PostgreSQL que vous avez oublié. PostGIS fonctionne uniquement avec les version 8.1 et supérieures de PostgreSQL, et bizarrement, des messages d'erreurs innattendus peuvent apparaître si vous utilisez une version plus ancienne. Pour vérifier la version de PostgreSQL que vous utilisez, connectez vous à la base de données en utilisant psql et exécutez la requête : SELECT version();. Si vous utilisez une distribution basé sur RPM, vous pouvez vérifier la présence des paquets installés en utilisant la commande rpm de la façon suivante : rpm -qa | grep postgresql.

Vérifiez aussi que le script configure a correctement détecté les répertoire d'installation et les versions de PostgreSQL et des librairies Proj4 et GEOS.

  1. Le script configure est utilisé pour produire un fichier postgis_config.h. Vérifiez que les vairables POSTGIS_PGSQL_VERSION, POSTGIS_PROJ_VERSION et POSTGIS_GEOS_VERSION ont la bonne valeur.
haut de la page | table des matières

2.9. JDBC

L'extension JDBC fournit des objets Java correspondant aux types internes de PostGIS. Ces objets peuvent être utilisés pour écrire des clients java qui interrogent la base de données PostGIS et dessinent ou effectuent des calculs sur les données SIG dans PostGIS.

  1. Entrez dans le sous-répertoire java/jdbc des sources de PostGIS.
  2. Lancez la commande ant. Copiez le fichier postgis.jar là où vous avez l'habitude de stocker vos bibliothèques java.

Les extensions JDBC nécessitent qu'un pilote JDBC pour PostgreSQL soit déjà installé dans votre CLASSPATH actuel durant la compilation. Si le pilote JDBC PostgreSQL est situé dans un répertoire non standard, vous pouvez spécifier le chemin d'installation du JAR du pilote JDBC en utilisant le paramètre -D de la manière suivante :

# ant -Dclasspath=/chemin/vers/postgresql-jdbc.jar

Les pilote JDBC PostgreSQL peuvent être télécharger depuis la page suivante : http://jdbc.postgresql.org.

haut de la page | table des matières

2.10. Importeur/Exporteur

L'exporteur et l'importeur de données sont compilés et installés automatiquement lors de la compilation de PostGIS. Pour les compiler et les installer manuellement :

# cd postgis-1.1.1/loader
# make
# make install

L'importeur est appelé shp2pgsql, il permet de convertir des fichiers vecteurs (Shape) ESRI en SQL capables d'être chargés dans PostGIS/PostgreSQL. L'exporteur est appelé pgsql2shp et il permet de convertir des tables PostGIS (ou des requêtes) en fichiers vecteurs (Shape) ESRI.

haut de la page | table des matières