9
08 mar 2010


Introduction


L'installation d'une solution cartographique n'est jamais une chose très aisée sous une distribution de type Unix. En effet, la compilation des différentes librairies, l'installation du serveur cartographique et du SGBD peut s'avérer assez compliqué pour les débutants.

PostGreSQL et PostGIS


La version 8.4 de PostGreSQL est directement dans les dépôts de base d'Ubuntu. Donc pas de souci pour son installation.

$ sudo apt-get install postgresql
Facile !
Il faut également installer la librairie pour PHP :

$ sudo apt-get install php5-pgsql

Configuration d'un utilisateur

Lors de l'installation de PostGreSQL, un utilisateur est ajouté directement dans la distribution. C'est celui-ci qui permet de piloter le SGBD. Cependant, il est nécessaire de créer un nouvel utilisateur, le premier étant identique à un utilisateur root.
Connexion avec l'utilisateur postgres :

$ sudo -s -u postgres

Lancement de PostGreSQL et création d'un utilisateur (ajout d'un mot de passe et droit de l'utilisateur à la création de base de donnée) :

postgres: $ psql
postgres: > CREATE USER nom_utilisateur;
postgres: > ALTER ROLE nom_utilisateur WITH CREATEDB;
postgres: > ALTER USER nom_utilisateur WITH ENCRYPTED PASSWORD 'mot-de-passe';
postgres: > \q
postgres: $ exit

Ajoutons dès maintenant avant d'oublier l'extension dans PHP :
NB : j'utilise ici l'éditeur nano (sur une version desktop d'Ubuntu, gedit est tout à fait approprié)

$ sudo nano /etc/php5/apache2/php.ini
--> ajout de la ligne où on veut mais il existe une partie dédiée aux extensions vers le milieu du fichier :
extension=pgsql.so

Installation de PostGIS

Ici encore, c'est vraiment simple avec Ubuntu :

$ sudo apt-get install postgis

Installation de phpPgAdmin

Profitons-en pour installer tout de suite un outil d'administration de PostGreSQL utilisable via le Web.
Toujours aussi facile sur Ubuntu :

$ sudo apt-get install phppgadmin

Il faut également ajouter un lien symbolique :

$ sudo ln -s /usr/share/phppgadmin /var/www/

Et c'est tout, il suffit de se connecter avec son navigateur préféré à l'url : http//nom-de-domaine/phppgadmin

Voilà c'est presque (cf. un peu plus loin dans le tutoriel où nous mettrons à jour postgis) fini pour le système de gestion de base de données.

UbuntuGIS


Ubuntu ne propose pas la dernière version (5.6) de MapServer dans les dépôts officiels. Il existe une solution qui évite de compiler les sources pour installer la dernière version sortie : les PPA (Personal Package Archive).
Ubuntu (enfin Canonical Ltd.) propose une interface facilitée pour se fournir ou fournir des dépôts : Launchpad
L'équipe UbuntuGIS nous permet donc d'installer facilement les dernières évolutions de différentes librairies géographiques, les dernières versions de MapServer ou de PostGIS.

Cherchons tout d'abord les dépôts à ajouter. Pour cela rendez-vous sur la page ad-hoc et cherchons les entrées correspondant à notre distribution : pour cela cliquez sur Technical details about this PPA.

Ajoutons les dépôts PPA UbuntuGIS dans notre distribution et éditant le fichier sources.list :

$ sudo nano /etc/apt/sources.list

Ajoutons les lignes (ici pour Jaunty 9.04)
deb http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu jaunty main
deb-src http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu jaunty main

Dans Technical details about this PPA nous trouvons un code :

1024R/314DF160
Copions la deuxième partie de ce code et tapons les deux lignes de commande suivante :

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 314DF160
$ sudo apt-get update


GDAL, Proj4, Tilecache, GD et mise à jour de PostGIS


Nous allons mettre à jour la version de PostGIS installée plus haut dans ce tutoriel, maintenant que nous avons instancié les dépôts UbuntuGIS.
Et avant d'installer MapServer, il est préférable d'installer les différentes librairies dont nous allons avoir besoin :

$ sudo apt-get install php-gd
$ sudo apt-get install gdal-bin
$ sudo apt-get install tilecache
$ sudo apt-get install postgis


MapServer


L'installation de la dernière version de MapServer est très facile également :

$ sudo apt-get install mapserver-bin
$ sudo apt-get install cgi-mapserver
$ sudo apt-get install php5-mapscript
C'est définitivement très simple pour installer un serveur cartographique dernier cri.
Ajoutons l'extension PHPMapScript (qui est un ensemble de fonctions Php qui permettent de piloter MapServer avec ce langage de script) dans php.ini :

$ sudo nano /etc/php5/apache2/php.ini
-> ajouter la ligne suivante :
extension=php_mapscript.so

Testons notre serveur :

$ /usr/lib/cgi-bin/mapserv -v

Nous devons avoir une réponse de cet acabit :

MapServer version 5.6.1 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SWF OUTPUT=SVG SUPPORTS=PROJ SUPPORTS=AGG SUPPORTS=FREETYPE SUPPORTS=ICONV SUPPORTS=FRIBIDI SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=FASTCGI SUPPORTS=THREADS SUPPORTS=GEOS INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE

On peut également voir à l'url suivante - http://nom-de-domaine/cgi-bin/mapserv - si MapServer est correctement installé. Nous devons avoir la réponse suivante :

No query information to decode. QUERY_STRING is set, but empty.


Testons notre installation avec PHPMapScript


Maintenant que notre système est un serveur cartographique dernier cri, testons-le avec une simple carte affichée dans une page Php. Pour ceci, nous allons reprendre le tutoriel d'Initiation à MapServer et reproduire la même carte.
Les données au format MapInfo sont téléchargeables ici.

MapFile

Rien de spécial ici, juste une connexion OGR pour que MapServer puisse lire un fichier MapInfo et en dégager une couche - ici les limites administratives :

MAP
NAME "tutorial"
SIZE 550 350
EXTENT 94.0000 -9.0048 131.000 4
UNITS METERS
IMAGECOLOR 255 255 255
SHAPEPATH "path_to_rep/data"
TRANSPARENT ON

WEB
IMAGEPATH "/path_to_tmp/tmp/"
IMAGEURL "tmp/"
END

OUTPUTFORMAT
NAME png
DRIVER "GD/PNG"
MIMETYPE "image/png"
IMAGEMODE PC256
EXTENSION "png"
END

#==============================================================================
# Layer Administratif
#==============================================================================

LAYER
NAME Admin_Indonesie
STATUS ON
CONNECTIONTYPE OGR
CONNECTION "indonesie_surface.tab"
TYPE LINE
CLASS
STYLE
COLOR 0 0 0
OUTLINECOLOR 255 255 255
END
END
END

END

Faire bien attention à donner les droits d'écriture sur le répertoire tmp :

$ sudo chmod 777 path_to_tmp

PHP

Ici plus besoin de 'charger' l'extension PHPMapScript dans le code, en effet nous l'avons déclaré dans le php.ini (spécificité de PHP5).

$map_file = "./test1.map";
$map = ms_newMapObj($map_file);
$image=$map->draw();
$image_url=$image->saveWebImage(MS_PNG,1,1,0);
?>


PHPMapScript


>


Résultat

Nous devons donc voir une jolie carte des limites administratives de l'Indonésie.


Conclusion


En suivant toutes les étapes de ce tutoriel, l'installation d'une solution serveur cartographique dernier cri est relativement simple. Nous verrons maintenant que notre MapServer est installé comment tirer partie de ses performances - et notamment en testant le vieux fantôme du MapFile en XML.


Auteur : Fabien - fabien.goblet [ at ] gmail.com

A propos de l'auteur: 

Commentaires

bonjour, si tu es interessé, je peux te filer un mapfile avec les couches wms géosignal.

Avec plaisir !
fabien.goblet [at] gmail.com

Juste 2 questions les repertoirs path_to_tmp/tmp et path_to_rep/data c'est moi qui les crées ou existe-t-elles déjà ? (ne tout cas je ne les vois pas) et si je les crées ou dois-je le faire je rappelle que je travaille sous ubuntu merci et longue vie à geotribu

Bonjour

savez vous ou l'on peut se procurer des fonds de carte compatibles avec Mapserver : je recherche un découpage ville de plus de 20 000 habitants Europe entière ?

Merci par avances

Bonjour,
pratiquement tous les formats sont compatibles avec MapServer.
Pour votre recherche, je vous conseille la partie Données du ForumSIG : http://www.forumsig.org/forumdisplay.php?f=85.
Cordialement.

Bonjour,

Merci pour ce tutoriel qui m'a bien aidé.

Une question cependant : dans la partie 'configuration d'un utilisateur',

$ sudo nano /etc/php5/apache2/php.ini
--> ajout de la ligne où on veut mais il existe une partie dédiée aux extensions vers le milieu du fichier :
extension=psql.so

S'agit-il bien de psql.so ou de pgsql.so?

Merci,

Julie.

Bien vu Julie,
c'est bien pgsql.so !

Merci,
Fabien

Bonjour,

Dans ma version de mapscrit saveWebImage ne prend plus de paramètres

image_url=$image->saveWebImage(MS_PNG,1,1,0);

Donne donc une page blanche !

Pour commencer merciiiii bq pour le tuto très clair & bien expliqué

pour la commande : sudo nano /etc/php5/apache2/php.ini
sa fonctionne pas !! plutôt j ai pas apache2 mais plutôt apache2filter
bref j ai changer en : sudo nano /etc/php5/apache2filter/php.ini
çà fonctionne

autre chose

"$ sudo apt-get install php-gd" faut la changer en "php5-gd"