Chapitre 2. Installation
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 :
- Une installation complète de PostgreSQL (incluant les fichiers d'entêtes du serveur). PostgreSQL est disponible à l'adresse http://www.postgresql.org. La version 8.1 ou supérieure est nécessaire
- Compilateur GNU C (gcc). D'autre compilateurs AINSI C peuvent être utilisés pour compiler PostGIS, mais nous rencontrons beaucoup moins de problèmes lorsque l'on utilise gcc.
- GNU Make (gmake ou make). Sur de nombreux systèmes, GNU make est la version par défaut de make. Vérifiez la version en utilisant la commande : make -v. Les autres versions de make pourrait ne pas exécuter correctement le Makfile de PostGIS
- La bibliothèque de reprojection Proj4, version 4.5.0 ou supérieure. La bibliothèque Proj4 est utilisée afin de permettre la reprojection des coordonnées avec PostGIS. Proj4 est disponible en téléchargement depuis : http://www.remotesensing.org/proj.
- La bibliothèque GEOS, version 3.0.0 ou supérieure. La bibliothèque GEOS est utilisée pour permettre l'utilisation des tests géométriques (
ST_Touches()
, ST_Contains()
, ST_Intersects()
) et les opérations (ST_Buffer()
, ST_GeomUnion()
, ST_Difference()
) avec PostGIS. GEOS est disponible en téléchargement depuis http://geos.refractions.net.
Optionnels :
- Apache Ant (ant) est nécessaire pour la compilation d'un des pilotes contenu dans le répertoire java. Ant est dispopnible depuis la page officielle du projet : http://ant.apache.org.
- DocBook (xsltproc) est nécessaire pour la génération de la documentation. Docbook est disponible depuis la page officielle du projet : http://www.docbook.org/.
- DBLatex (dblatex) est nécessaire pour générer la documentation au format PDF. DBLatex est disponible depuis la page officielle du projet : http://dblatex.sourceforge.net/.
- ImageMagick (convert) est nécessaire pour la génération des images utilisées dans la documantation. ImageMagick est disponible depuis la page officielle du projet : http://www.imagemagick.org/.
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 :
- les binaires de l'importeur et de l'exporteur seront installés dans le répertoire
[prefix]/bin
.
- Les fichiers SQL, comme lwpostgis.sql, seront installés dans le répertoire
[prefix]/share/contrib/
.
- Les librairies PostGIS seront installées dans le répertoire
[prefix]/lib
.
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.
- 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.
- 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.
- Entrez dans le sous-répertoire
java/jdbc
des sources de PostGIS.
- 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