Installation des bibliothèques géospatiales

GeoDjango utilise et fournit des interfaces pour les bibliothèques géospatiales libres suivantes :

Programme

Description

Requis

Versions prises en charge

GEOS Geometry Engine Open Source

Oui

3.3, 3.2, 3.1, 3.0
PROJ.4

Bibliothèque de projections cartographiques

Oui (uniquement PostgreSQL et SQLite)

4.8, 4.7, 4.6, 4.5, 4.4
GDAL

Bibliothèque

Non (mais requis par SQLite)

1.9, 1.8, 1.7, 1.6, 1.5
GeoIP

Bibliothèque de géolocalisation basée sur IP

Non

1.4
PostGIS

Extensions spatiales pour PostgreSQL

Oui (uniquement PostgreSQL)

2.0, 1.5, 1.4, 1.3
SpatiaLite

Extensions spatiales pour SQLite

Oui (uniquement SQLite)

3.0, 2.4, 2.3

Install GDAL

Même si GDAL n’est techniquement pas indispensable, il est recommandé. Des fonctionnalités importantes de GeoDjango (par ex. le LayerMapping data import utility, la reprojection géométrique et l’interface d’administration géographique) dépendent de sa présence.

Note

Les interfaces GeoDjango vers GEOS, GDAL et GeoIP peuvent être utilisées indépendamment de Django. Autrement dit, il n’est pas nécessaire d’avoir une base de données ou un fichier de réglages, il suffit de les importer comme un module normal à partir de django.contrib.gis.

Sur Debian/Ubuntu, il est conseillé d’installer les paquets suivants qui installeront, directement ou par l’intermédiaire de dépendances, les bibliothèques géospatiales nécessaires :

$ sudo apt-get install binutils libproj-dev gdal-bin

Paquets facultatifs à considérer :

  • libgeoip1: pour la prise en charge de GeoIP

  • gdal-bin: pour les programmes en ligne de commande de GDAL, tel que ogr2ogr

  • python-gdal pour les liaisons Python de GDAL, contenant des interfaces pour la manipulation de données matricielles (« raster »).

Veuillez également consulter les instructions spécifiques si vous utilisez Mac OS X ou Windows.

Compilation à partir des sources

Lors de l’installation à partir des sources sur les systèmes UNIX et GNU/Linux, suivez consciencieusement les instructions d’installation et installer les bibliothèques dans l’ordre indiqué. Si vous utilisez MySQL ou Oracle comme base de données spatiale, seul GEOS est nécessaire.

Note

Sur les plates-formes Linux, il peut être nécessaire de lancer la commande ldconfig après l’installation de chaque bibliothèque. Par exemple :

$ sudo make install
$ sudo ldconfig

Note

Les utilisateurs d’OS X doivent installer les Apple Developer Tools afin de pouvoir compiler à partir des sources. Ces outils sont généralement inclus dans les DVD d’installation de OS X.

GEOS

GEOS est une bibliothèque C++ destinée aux opérations géométriques et constitue la représentation géométrique interne par défaut que GeoDjango utilise (derrière les objets géométriques « différés »). Spécifiquement, l’API de la bibliothèque C (par ex. libgeos_c.so) est appelée directement depuis Python à l’aide de ctypes.

First, download GEOS 3.3.8 from the refractions Web site and untar the source archive:

$ wget http://download.osgeo.org/geos/geos-3.3.8.tar.bz2
$ tar xjf geos-3.3.8.tar.bz2

Puis, placez-vous dans le répertoire où GEOS a été décompressé et lancez le script « configure », compilez et installez :

$ cd geos-3.3.8
$ ./configure
$ make
$ sudo make install
$ cd ..

Dépannage

Impossible de trouver la bibliothèque GEOS

Lorsque GeoDjango ne peut pas trouver GEOS, cette erreur apparaît :

ImportError: Could not find the GEOS library (tried "geos_c"). Try setting GEOS_LIBRARY_PATH in your settings.

La solution la plus courante est de configurer correctement Library environment settings ou de définir GEOS_LIBRARY_PATH dans vos réglages.

Si vous utilisez un paquet binaire de GEOS (par ex. sur Ubuntu), il peut être utile de Install binutils.

GEOS_LIBRARY_PATH

Si votre bibliothèque GEOS se trouve à un emplacement non standard ou que vous ne souhaitez pas modifier le chemin des bibliothèques système, il est possible d’ajouter le réglage GEOS_LIBRARY_PATH dans votre fichier de réglages Django et d’y indiquer le chemin complet vers la bibliothèque GEOS en C. Par exemple :

GEOS_LIBRARY_PATH = '/home/bob/local/lib/libgeos_c.so'

Note

Le réglage doit contenir le chemin complet vers la bibliothèque partagée en C ; en d’autres termes, il faut indiquer libgeos_c.so, et non pas libgeos.so.

Voir aussi Mes fichiers journaux sont remplis d’erreurs liées à GEOS.

PROJ.4

PROJ.4 est une bibliothèque de conversion de données géospatiales vers différents systèmes de référence de coordonnées.

Premièrement, téléchargez le code source de PROJ.4 et les fichiers de données associés (« datum shifting files ») [1] :

$ wget http://download.osgeo.org/proj/proj-4.8.0.tar.gz
$ wget http://download.osgeo.org/proj/proj-datumgrid-1.5.tar.gz

Ensuite, décompressez l’archive du code source et extrayez les fichiers de données complémentaires dans le sous-répertoire nad. Cela doit être fait avant la configuration :

$ tar xzf proj-4.8.0.tar.gz
$ cd proj-4.8.0/nad
$ tar xzf ../../proj-datumgrid-1.5.tar.gz
$ cd ..

Pour terminer, lancez « configure » et « make » et installez PROJ.4 :

$ ./configure
$ make
$ sudo make install
$ cd ..

GDAL

GDAL est une excellente bibliothèque géospatiale libre capable de lire la plupart des formats de données spatiales vectoriels et matriciels. Actuellement, GeoDjango ne prend en charge que les fonctionnalités des données vectorielles de GDAL [2]. GEOS et PROJ.4 devraient être installés avant de compiler GDAL.

Téléchargez d’abord la dernière version publiée de GDAL et décompressez l’archive :

$ wget http://download.osgeo.org/gdal/gdal-1.9.2.tar.gz
$ tar xzf gdal-1.9.2.tar.gz
$ cd gdal-1.9.2

Lancez les opérations « configure », « make » et « install » :

$ ./configure
$ make # Go get some coffee, this takes a while.
$ sudo make install
$ cd ..

Note

Because GeoDjango has its own Python interface, the preceding instructions do not build GDAL’s own Python bindings. The bindings may be built by adding the --with-python flag when running configure. See GDAL/OGR In Python for more information on GDAL’s bindings.

Si vous rencontrez un problème, consultez la section dépannage ci-dessous pour y trouver des suggestions et des solutions.

Dépannage

Impossible de trouver la bibliothèque GDAL

Lorsque GeoDjango ne peut pas trouver la bibliothèque GDAL, la variable HAS_GDAL prend la valeur False:

>>> from django.contrib.gis import gdal
>>> gdal.HAS_GDAL
False

La solution est de configurer correctement vos Library environment settings ou de définir GDAL_LIBRARY_PATH dans vos réglages.

GDAL_LIBRARY_PATH

Si votre bibliothèque GDAL se trouve à un emplacement non standard ou que vous ne souhaitez pas modifier le chemin des bibliothèques système, il est possible d’ajouter le réglage GDAL_LIBRARY_PATH dans votre fichier de réglages Django et d’y indiquer le chemin complet vers la bibliothèque GDAL. Par exemple :

GDAL_LIBRARY_PATH = '/home/sue/local/lib/libgdal.so'
Impossible de trouver les fichiers de données GDAL (GDAL_DATA)

Lors d’une installation à partir des sources, les versions 1.5.1 et inférieures de GDAL contiennent un bogue autoconf qui placent les données à un mauvais emplacement. [3] Cela peut amener à des messages d’erreur tels que :

ERROR 4: Unable to open EPSG support file gcs.csv.
...
OGRException: OGR failure.

La solution est de définir la variable d’environnement GDAL_DATA et d’y définir l’emplacement des fichiers de données GDAL avant d’invoquer Python (typiquement /usr/local/share; lancez gdal-config --datadir pour le savoir). Par exemple :

$ export GDAL_DATA=`gdal-config --datadir`
$ python manage.py shell

Si vous utilisez Apache, il peut être nécessaire d’ajouter cette variable d’environnement à votre fichier de configuration :

SetEnv GDAL_DATA /usr/local/share

Notes de bas de page

[1]

Les fichiers « datum shifting » sont nécessaires pour convertir les données dans et à partir de certaines projections. Par exemple, la chaîne PROJ.4 de la projection Google (900913 or 3857) nécessite la fichier de grille null qui ne se trouve que dans les fichiers « datum shifting ». Il est plus simple d’installer de suite ces fichiers plutôt que de devoir dépanner un problème causé par leur absence plus tard.

[2]

Spécifiquement, GeoDjango fournit la prise en charge de la bibliothèque OGR, un composant de GDAL.

[3]

Voir le ticket GDAL #2382.