Travaux Pratiques Découverte du serveur cartographique Mapserver

Transcription

Travaux Pratiques Découverte du serveur cartographique Mapserver
Master Géomatique HMGE304 Travaux Pratiques Découverte du serveur cartographique Mapserver Partie 1 Jean Christophe Desconnets : Jean-­‐[email protected] Carmen Gervet : [email protected] Objectifs et contenu du TP L’objectif de ce premier TP est la découverte du serveur cartographique Mapserver open source dans sa version 5.6. Il s’agit notamment d’appréhender les composants nécessaires à son installation et son fonctionnement dans Linux Ubuntu, les opérations de configuration nécessaires pour mettre en place diverses données spatiales et définir leur rendu cartographique. Ce TP s’organise en 3 grandes parties : • Installation du serveur web Apache et PHP • Installation de Mapserver • Définition des données et de leur rendu cartographique Environnement de travail Ce TP se déroule sur une image virtuelle hébergée par la machine virtuelle VirtualBox de Sun. Le système d’exploitation est Ubuntu 12.04 Installations déjà réalisées • Le SGBD open source : Postgresql 8.4 PostGIS 1.3 • Ajout des dépôts PPA Ubuntu GIS pour installer Mapserver avec la commande apt-­‐get Sources pour la conception et construction de ce TP • GeoTribu -­‐ Initiation à Mapserver : http://geotribu.net/node/5 • GeoTribu -­‐ Installation de Mapserver et PostgreSQL / PostGIS sous Ubuntu : http://geotribu.net/node/227 • GeoTribu -­‐ Exemple des différentes sources de données utilisables par MapServer : http://geotribu.net/node/92 • Documentation officielle Mapserver 5 et 6 notamment les sections suivantes : o Mapfile : http://mapserver.org/mapfile/index.html o Symbologie : http://mapserver.org/mapfile/symbology/construction.html o Source de données : http://mapserver.org/input/index.html o Support OGC : http://mapserver.org/ogc/index.html Quelques commandes Unix utiles • sudo permet de prendre le rôle d'administrateur (e.g. sudo gedit permet de lancer l'éditeur gedit en tant qu'administrateur). • sudo apt-­‐get install permet d'installer des paquets avec le rôle administrateur • cp permet de copier un fichier ou un dossier dans un dossier cible • chown permet de modifier le propriétaire d'un fichier ou d'un dossier • chmod permet de modifier les droits en lecture, écriture et exécution d'un fichier ou d'un dossier • ls affiche les fichiers d’un répertoire. Quelques options indispensables : o -­‐a : Affiche tous les fichiers des répertoires, y compris les fichiers commençant par un `.'. o -­‐l : En plus du nom, afficher le type du fichier, les permissions d'accès, le nombre de liens physiques, le nom du propriétaire et du groupe, la taille en octets, et l'horodatage (de la dernière modification, sauf si une autre date est réclamée). 2 Vous trouverez la manière d'utiliser ces commandes, leurs options et des exemples en tapant dans le shell « man nomCommande » ou « nomCommande -­‐-­‐help » 3 Partie 1 : Installation et configuration du serveur Apache et du module PHP Afin de faciliter la mise en place des divers composants nécessaires à l’installation de Mapserver, nous allons réaliser leur installation en utilisant la commande apt-get install d’Ubuntu qui assure l’installation et la configuration des composants et leurs dépendances. Nous exécuterons cette commande au sein d’un terminal shell. Pour en savoir plus sur la commande apt-get : http://doc.ubuntu-­‐fr.org/apt-­‐get 1.1 Le serveur web Apache 2 1.1.1
Installation
Exécutez la commande suivante dans un terminal shell , vous devez fournir le mot de passe de l’utilisateur tp pour exécuter cette commande (pwd : « géomatique ») : $ sudo apt-get install apache2 $ [sudo] password for tp : Pour information, Les paquets suivants sont installés : apache2-­‐mpm-­‐worker, apache2-­‐utils, apache2.2-­‐bin, apache2.2-­‐common, libapr1 libaprutil1. L’exécution de l’installation par la commande apt-­‐get a permis de mettre en place une configuration par défaut et de démarrer le serveur Apache. 1.1.2 Configuration
Le répertoire /etc/apache2 stocke les fichiers de configuration d’Apache 2. Lors de l’installation Apache a crée l’utilisateur www-­‐data et le groupe d’utilisateur www-­‐data. Le répertoire dans lequel doivent être placé les fichiers et les programmes accessibles par un navigateur web a aussi été crée par Apache. Son chemin est : /var/www/ Afin que Apache puisse lire, écrire et exécuter les fichiers html ou les programmes, vous devrez les placer dans le répertoire de publication /var/www/ et modifier pour chacun des dossiers et fichiers : • Le nom du propriétaire pour qu’il corresponde à l’utilisateur Apache : www-­‐data, • Les droits en écriture, lecture et exécution afin de les donner au propriétaire Apache et à son groupe d’utilisateur. 4 a) Modifiez le propriétaire du répertoire /var/www/ et des fichiers. Pour cela, exécutez les commandes suivantes : $ cd /var/www $ ls –l $ sudo chown –R www-­‐data:www-­‐data * $ [sudo] password for tp : -­‐ l’option –R (R pour récursif) permet de réaliser le changement de propriétaire dans le répertoire et les sous répertoire b) Modifier les droits pour le propriétaire www-­‐data au répertoire de publication /var/www/ Pour cela, exécutez les commandes suivantes : $ cd /var $ ls -­‐l $ sudo chmod –R ug+rwx www $ [sudo] password for tp : Note : vous devrez refaire ces deux opérations à chaque fois que vous ajoutez des répertoires et des fichiers dans le répertoire de publication d’Apache 1.1.3 Test
Pour tester la bonne installation d’Apache, ouvrez un navigateur web et tapez l’adresse : http://localhost/ . La page suivante doit s’afficher. Pour en savoir plus sur l’installation et la configuration d’apache2 dans Ubuntu : 5 http://doc.ubuntu-­‐fr.org/apache2 1.2 PHP5 Extrait Wikipedia : « PHP est un langage de scripts libre principalement utilisé pour produire des pages Web dynamiques via un serveur HTTP, mais pouvant également fonctionner comme n'importe quel langage interprété de façon locale, ….» 1.2.1 Installation
Exécutez la commande suivante dans un terminal shell : $ sudo apt-get install php5
Dans cette installation, php5 est installé en tant que module d’Apache. L’exécution du paquet php5 entraine l’installation des paquets suivants : et de ses dépendances : php5-­‐cli, php5-­‐common, … 1.2.2 Configuration
Le fichier de configuration PHP : Php.ini se trouve dans le répertoire /etc/php5/apache2. Afin de compléter le module PHP, plusieurs extensions sont nécessaires, notamment celle permettant à PHP de se connecter à une base de données PostgreSQL pour extraire ou insérer des données. Pour cela nous devons installer l’extension php5-­‐pgsql a) Installer l’extension PHP pour postgreSQL avec la commande suivante : $ sudo apt-get install php5-pgsql
b) Définir cette extension dans le fichier php.ini Pour cela, ouvrir un éditeur de texte (gedit) avec la commande « sudo gedit nomFichier » et ajouter dans la section « extension » de php.ini la ligne suivante : extension=pgsql.so
c) Redémarrer le serveur Apache afin qu’il prenne en compte ces modifications Le serveur Apache peut être redémarré avec les commandes suivantes : $ sudo /etc/init.d/apache2 restart
ou $ sudo service apache2 restart 6 1.2.3 Tests
a) Pour tester l’installation de PHP et l’interprétation des scripts par le serveur Apache, créez le fichier info.php, dans le répertoire de publication Apache, contenant la ligne suivante : <?php phpinfo() ; ?>
b) Puis affichez le en utilisant votre navigateur web, la page suivante doit apparaître : 7 Partie 2 : Installation de Mapserver 2.1 Installation des composants pour Mapserver Avant d’installer Mapserver, il est nécessaire d’installer 3 paquetages, « tirés » du dépôt Ubuntu GIS, qui sont indispensables à son fonctionnement : • Gdal-­‐bin : correspond à la librairie open source qui permet de traiter un grand nombre de formats d’images en tant que source de données pour Mapserver. Elle comprend un sous projet OGR qui lui permet de traiter les données vectorielles. Pour plus d’informations sur cette librairie : http://www.gdal.org/ et http://www.gdal.org/ogr/ • TileCache : est un composant (serveur de cache) qui permet de découper les images que Mapserver publie afin d’optimiser la rapidité d’accès lors de requêtes répétées, notamment. Pour en savoir plus : http://tilecache.org/ , http://softlibre.gloobe.org/openlayers/tilecache • Php5-­‐gd : est une librairie graphique qui permet la manipulation d’images avec PHP a) Pour installer ces 3 paquetages, exécutez successivement dans un terminal shell, les commandes suivantes : $ sudo apt-get install php5-gd
$ sudo apt-get install gdal-bin
$ sudo apt-get install tilecache
2.2 Installation de Mapserver L’installation de Mapserver se décompose en 3 paquetages « tirés » du dépôt Ubuntu GIS : • Mapserver-­‐bin : contient le moteur cartographique (cœur de Mapserver) • CGI-­‐mapserver : apporte le mécanisme de liaison entre Apache et Mapserver via l’interface CGI (Common Gateway Interface) • Php5-­‐mapscript : ensemble de fonctions Php pour accéder aux objets et opérations délivrés par Mapserver au sein de scripts PHP. a) Pour installer ces 3 paquetages, exécutez successivement dans un terminal shell les commandes suivantes : $ sudo apt-get install mapserver-bin
$ sudo apt-get install cgi-mapserver
$ sudo apt-get install php5-mapscript
b) Modifier le fichier php.ini pour inclure les 2 nouvelles extensions php installées Pour cela, vous devez ajouter 2 lignes : extension=php_gd.so
extension=php_mapscript.so
2.3 Test de l’installation Mapserver 8 Tester votre installation de 2 manières différentes a) En ligne de commande pour connaître la configuration de votre installation. Pour cela, tapez la commande $ /usr/lib/cgi-bin/mapserv –v
Vous devez avoir une réponse de ce type : 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
c) A partir d’un navigateur web Tapez l’adresse suivante dans votre navigateur : http://localhost/cgi-­‐bin/mapserv Vous devez recevoir ce message comme réponse : No query information to decode. QUERY_STRING is set, but empty.
Votre installation de Mapserver est correcte. La prochaine étape est de définir les données spatiales qui seront exposées par Mapserver. C’est l’objet de la partie 3 de ce TP. 9 Partie 3 : Définition des données et de leur rendu cartographique (édition du mapfile) Objectifs Plusieurs objectifs dans cette partie. Il s’agit tout d’abord de découvrir la construction du fichier de configuration de Mapserver : mapfile (extension .map) qui assure la définition des propriétés d’affichage et de rendu des données servies par Mapserver. La découverte portera sur l’édition des objets principaux du mapfile. Pour cela, on vous propose de construire une carte représentant les limites administratives de l’Indonésie ainsi que ses principales agglomérations avec un habillage cartographique représentant la bathymétrie des océans et la topographie. Rendu final A l’issue du TP, l’invocation de Mapserver par un navigateur devra afficher cette carte Données à utiliser Pour découvrir l’écriture du mapfile, nous utiliserons 4 jeux de données de nature différentes portant sur l’Indonésie et ses alentours : • Trait de cote de l’Indonésie : couche vectorielle shapefile (de type ligne), fichiers : Mapserver/TP1/indonesia_coastline.shp et ses fichiers associés (shx, dbf, prj), • Population des grandes agglomérations de l’Indonésie : couche vectorielle Shapefile (de type point), fichiers : Mapserver/TP1/indonesie_pop.shp et ses fichiers associés (shx, dbf, prj), • Limites administratives de l’Indonésie : couche vectorielle MapInfo (de type polyligne), fichiers Mapserver/TP1/indonesie_surface.MAP et ses fichiers associés ( tab, ID, DAT), Le service WMS DEMIS http://www.demis.nl/ qui offre des couches d’informations de référence du monde. Les couches et les propriétés de ce service sont définies dans le fichier Mapserver/TP1/wms-­‐demis.xml. Rappel sur le mapfile Le mapfile est 'LE' fichier de configuration de MapServer. Il est composé d'une hiérarchie d'objets. Chaque objet peut contenir certains autres objets et/ou des propriétés. Un objet en terme de syntaxe : • Commence par un mot clé par exemple MAP • Se termine par END L'ensemble des objets et propriétés sont documentés: http://mapserver.org/mapfile/map.html • L'ordre des propriétés n'est pas signifiant 10 Seul l'ordre des objets LAYER est signifiant Le commentaire simple d’une ligne est le caractère # Schéma de la hiérarchie des objets (non exhaustive) du mapfile •
•
MAP
WEB
IMAGEPATH
...
OUTPUTFORMAT
PROJECTION
LEGENDE
SCALEBAR
LAYER
NAME
....
CLASS
STYLE
LABEL
PROJECTION
11 Exemple d’un mapfile minimal : mapfile.map Il définit l’affichage des limites de la France métropolitaine à partir d’un fichier shapefile de type polygone dans un système de coordonnées en degrés décimaux. Note : définition des objets et propriétés utilisés dans cet exemple MAP : objet racine ouvrant le mapfile STATUS : définit l’état d’affichage de la carte NAME : définit le nom SIZE : définit la taille de l’image produite en pixel (hauteur, largueur) EXTENT : étendue de la carte exprimée avec les unités définies dans UNIT. On donne successivement xmin (longitude Ouest), ymin (latitude Sud), xmax (longitude Est), ymax (latitude Nord). UNITS : unité de mesure avec laquelle est définie l’étendue spatiale. Cette unité est celle du système de projection utilisé pour projeter votre carte SHAPEPATH : chemin absolu du répertoire des données spatiales WEB : objet donnant les propriétés relatives à l’environnement web IMAGEPATH : chemin relatif (sur le disque) où sont stockées les images générées par Mapserver IMAGEURL : adresse web d’accès aux images. LAYER : objet définissant les propriétés des données à représenter sur la carte NAME : nom de la couche TYPE : type de la couche (raster, polygon, point, line) STATUS :définit l’état d’affichage de la couche au sein de la carte DATA : donne le nom du fichier shapefile dans lequel sont contenues les données CLASS : objet donnant les propriétés d’affichage de la couche STYLE : objet donnant le style d’affichage des géométries de la couche COLOR : couleur en code RGB du trait ou du point (selon le type de géométrie OUTLINECOLOR : couleur de fond de la géométrie Préalable : mise en place des répertoires et des données 12 Dans le répertoire de publication web /var/www/, vous devez créer le répertoire data et les sous répertoires tmp et TP1. Vous copierez les données présentes dans le dossier Maperver/TP1 dans le répertoire
/var/www/data/TP1/ . Les droits d’accès et d’exécution des répertoires et fichiers copiés doivent être donnés à l’utilisateur Apache (www-­‐data). NOTE : Le sous-­‐répertoire tmp sert à stocker les images générées par Mapserver. Il sert aussi à définir l’URL d’accès aux images pour Mapserver (de la forme « tmp/ »). 3.1 Création du mapfile Afin d’aboutir à la carte donnée en début de section, il est nécessaire de définir les caractéristiques générales de la carte que produit Mapserver ainsi que les couches d’information que l’on va y associer. Au final, cette carte sera accessible via une requête WMS. Pour cela, nous allons procéder par étape. Les travaux sont découpés en 4 grandes étapes : • Définition de l’objet MAP • Connexion aux données spatiales, • Amélioration du rendu cartographique, • Ajout de fonctionnalités Avant tout, vous devez créer le fichier TP1.map dans le répertoire TP1. Il va contenir les définitions des données utilisées par Mapserver. 3.1.1 Définition de l’objet MAP
En vous référant à l’exemple ci-­‐dessus (exemple d’un mapfile minimal), vous devez créer un objet MAP dont le nom est «TP1» de taille 1000 x 500. L’étendue spatiale de cet objet est exprimée en degrés décimaux et a pour valeur xmin = 84.0 ; ymin=-­‐21.0 ; xmax=143.0 ; ymax = 22.0. Les données qui seront publiées par Mapserver sont dans le répertoire TP1. L’objet WEB doit aussi être défini. Il contient le chemin absolu1 pour accéder aux images générées et l’url de ces images. 3.1.2 Connexion aux données spatiales
4 sources de données spatiales doivent être définies dans votre mapfile (cf « données à utiliser »). Chaque couche est définie au sein d’un objet LAYER. Pour en savoir plus sur la connexion aux sources de données : http://mapserver.org/input/index.html Attention : l’ordre de description des couches dans votre mapfile est important. Elles sont positionnées dans l’ordre d’apparition dans le mapfile. La couche qui est définie en dernier dans le mapfile sera positionnée au dessus des autres dans la carte fournie par Mapserver Méthodologie pour corriger/valider votre configuration: lorsque vous avez défini toutes les propriétés d’une couche, vous pouvez déceler les erreurs et valider son rendu graphique en visualisant la carte générée par Mapserver dans votre navigateur. 1
Chemin absolu est le chemin pour accéder à un fichier ou répertoire qui démarre de la racine d’un disque. Ex : /home/tp/Bureau est le chemin absolu du dossier Bureau de l’utilisateur tp 13 L’URL doit être construite comme suit : http://nom-­‐domaine/cgi-­‐bin/mapserv?map=/chemin_absolu/mapfile.map&mode=map . a) Ajout d’un objet LAYER de type shapefile : « trait de côte de l’Indonésie ». En vous inspirant de l’exemple donné ci-­‐dessus, vous devez définir l’objet LAYER dont le nom sera « coastline ». La géométrie est de type ligne. Les géométries sont fournies par le shapefile « indonesia_coastline.shp ». Pour représenter les lignes, vous utiliserez une couleur de ligne bleue foncée et une épaisseur de 1.0. Le paramètre WIDTH doit être utilisé. C’est une propriété de l’objet CLASS. Vous donnerez un état d’affichage permanent à la couche en utilisant la valeur appropriée du paramètre STATUS. NOTE sur la syntaxe des propriétés STATUS [on|off|default] : Sélectionne l'état actuel de la couche. La couche est affichée en permanence avec la valeur « default ». TYPE [point|line|polygon|circle|annotation|raster|query] : Spécifie comment les données doivent être tracées. Pour en savoir plus : http://mapserver.org/mapfile/layer.html Note : les couleurs sont données par leur code RGB. La syntaxe est la suivante : COLOR [r] [g] [b] . Pour définir les codes couleurs RGB : http://www.jokconcept.net/codes-­‐couleurs-­‐hexdecimal.php b) Ajout d’un objet LAYER de type shapefile : « Population de l’Indonésie». Comme précédemment, définissez un objet LAYER dont le nom sera « indonesie_pop ». La géométrie est de type point. Les géométries sont fournies par le shapefile « indonesie_pop.shp ». Pour représenter les points, vous utiliserez un cercle de couleur noire dont la taille est égale à 5 pixels. Vous donnerez un état d’affichage permanent. NOTE : Pour afficher les points avec Mapserver, vous devez définir au moins 3 propriétés de l’objet STYLE : -­‐ SYMBOL : SYMBOL [string] : nom du symbole définit dans le fichier de symboles dont le nom est donné par la propriété SYMBOLSET de l’objet MAP2. -­‐ COLOR (syntaxe donnée plus haut) : couleur du symbole -­‐ SIZE : SIZE [integer], hauteur en pixel du symbole c) Ajout d’un objet LAYER de type mapinfo : « Limites administratives de l’Indonésie » Définissez un objet LAYER dont le nom sera « indonesie_admin ». La géométrie est de type ligne. Les géométries sont fournies par le fichier mapfinfo « indonesie_surface.tab ». Pour représenter les lignes, vous utiliserez une couleur de ligne bleue claire et leur donnerez une épaisseur de 1.0. Vous donnerez un état d’affichage permanent. NOTE : Pour se connecter aux données mapInfo avec Mapserver, vous devez utiliser deux nouvelles propriétés de l’objet LAYER qui remplace la propriété DATA : -­‐ CONNECTIONTYPE : CONNECTIONTYPE [local|sde|ogr|postgis|oraclespatial|wms] définit le type de la connection. Les données mapInfo sont accédées avec la librairie OGR -­‐ CONNECTION : CONNECTION [string] : nom du fichier ou des paramètres relatifs à la base de données distante. Pour en savoir plus : http://mapserver.org/input/vector/index.html#vector 2
Pour ce TP le fichier symbologie est « symbols35.sym ». Il est fourni dans le dossier Mapserver/TP1/symbols. Copiez le dans le dossier /var/www/data 14 d) Ajout d’un objet LAYER de type WMS : «Topographie » Définissez un objet LAYER dont le nom sera «demis_ topo ». Les données sont fournies par le service distant OGC WMS Demis dont l’URL est : http://www2.demis.nl/WMS/wms.asp?wms=WorldMap. Les données fournies sont de type raster. L’analyse du fichier définissant les capacités du service WMS DEMIS données dans le fichier wms-­‐demis.xml du dossier Mapserver/TP1 vous fournira les caractéristiques de la couche « Topography » à afficher dans Mapserver. Ces caractéristiques doivent être définies par l’objet METADATA de l’objet LAYER. NOTE : dans l’objet METADATA définissant les caractéristiques de la couche distante à connecter à Mapserver, il est au moins nécessaire de définir : -­‐ Le nom de la couche avec la propriété "wms_name" -­‐ Son système de projection avec la propriété "wms_srs" -­‐ Le format avec lequel la couche est accessible "wms_format" -­‐ La version du serveur wms : "wms_server_version" La syntaxe est la suivante : "nom_propriété" "valeur" . Les propriétés et des exemples sont donnés à cette adresse : http://mapserver.org/ogc/wms_client.html#mapfile-­‐configuration e) Ajout d’un objet LAYER de type WMS : « Bathymétrie » Définissez un objet LAYER dont le nom sera «demis_ bathy ». Les données sont fournies par le service distant OGC WMS Demis dont l’URL est : http://www2.demis.nl/WMS/wms.asp?wms=WorldMap. Les données fournies sont de type raster. L’analyse du fichier définissant les capacités du service WMS DEMIS données dans le fichier wms-­‐demis.xml du dossier Mapserver/TP1 vous fournira les caractéristiques de la couche « Bathymetry» à afficher dans Mapserver. Ces caractéristiques doivent être définies par l’objet METADATA de l’objet LAYER. Le fichier wms-­‐demis.xml fournit, notamment, les métadonnées sur les formats de sortie (<GetMap><Format>), les caractéristiques des couches exposées par le service Titre : <Layer><title> ; Nom: <Layer><title> ; le système de projection <Layer><SRS> ; l’étendue de la couche : <Layer><BoundingBox>). 3.1.3 Amélioration du rendu cartographique
A partir des objets LAYER définis précédemment, nous allons utiliser de nouvelles propriétés afin de définir plus finement le rendu cartographique de ces couches, notamment maîtriser les niveaux d’apparition des couches selon l’échelle de visualisation, leur opacité, ajouter les libellés des objets, modifier la taille des symboles en fonction d’un critère numérique issu des attributs de la couche. a) Modifier la niveau d’apparition du LAYER « indonesie_pop » Nous souhaitons contrôler le niveau d’apparition/disparition des villes d’Indonésie de sorte que les villes apparaissent à partir de l’échelle 1/10 000 000 et disparaissent pour les échelles inférieures à 1/200 000. Pour cela, vous devez vous servir des propriétés MINSCALEDENOM et MAXSCALEDENOM pour permettre cela au niveau de l’objet LAYER. Vous vérifierez l’apparition disparition de votre couche en utilisant les paramètres scale et mapxy de la requête que vous réalisez sur votre navigateur. Exemple de requête pour visualiser la carte au 15 1/5 000 000 dont le centre est x = 110° et y=2°: http://localhost/cgi-­‐
bin/mapserv?map=/chemin/mapfile.map&mode=map&scale=5000000&mapxy=110 2 Syntaxe : MINSCALEDENOM [double] MAXSCALEDENOM [double] Pour en savoir plus : http://mapserver.org/mapfile/layer.html b) Modifier l’opacité du LAYER « indonesie_admin » Nous souhaitons donner un niveau de transparence de 60 % au LAYER « indonesie_admin ». Pour cela, vous devez vous servir de la propriété OPACITY. Syntaxe : OPACITY [integer] Pour en savoir plus : http://mapserver.org/mapfile/layer.html c) Afficher le nom des villes du LAYER « indonesie_pop » Compléter votre mapfile de sorte que le nom des villes puisse être affiché. Les libellés (label) auront les propriétés suivantes : une police « Vera » de type truetype, de couleur noire et de taille 9 pixels. Par ailleurs, nous laissons choisir Mapserver le positionnement du label par rapport au symbole. Les compléments à apporter à votre mapfile sont : -­‐ sur l’objet MAP : Donner le nom et le chemin de définition des polices truetype (le fichier est donné dans le dossier Mapserver/TP1/fonts) en utilisant la propriété FONTSET, -­‐ sur l’objet LAYER : Définir l’attribut de la couche « indonesie_pop » (voir fichier mapfinfo) dans lequel Mapserver trouvera le nom de la ville en utilisant la propriété LABELITEM, -­‐ la définition de l’objet LABEL contenu dans l’objet CLASS qui permet de définir les propriétés d’affichage des libellés. NOTE: Nom et syntaxe des Objets ou propriétés à utiliser Objet MAP -­‐ FONSET [filename] Objet LAYER -­‐ LABELITEM [attribute] Objet LABEL -­‐ TYPE [bitmap|truetype] -­‐ FONT [name] -­‐ COLOR [r] [g] [b] -­‐ SIZE [double]|[tiny|small|medium|large|giant] -­‐ POSITION [ul|uc|ur|cl|cc|cr|ll|lc|lr|auto] Pour en savoir plus : http://mapserver.org/mapfile/label.html d) Modifier la taille des points et des libellés en fonction du nombre d’habitants Sur la LAYER « indonesie_pop » et afin de mieux faire ressortir les grandes agglomérations, moduler la taille des symboles et des libellés en fonction du nombre d’habitants des villes. Nous vous proposons de le réaliser en considérant 4 classes : -­‐ classe 1 : 100 000 < nb habitants -­‐ classe 2 : 100 000 > nb habitants < 300 000 -­‐ classe 3 : 300 000 > nb habitants < 1 000 000 16 -­‐ classe 4 : nb habitants > 1 000 000 Nous utiliserons l’attribut POPEST95 de la couche « indonesie_pop » qui donne le nombre d’habitants des grandes agglomérations indonésiennes. Pour chacune de ces classes, vous devez redéfinir les propriétés des objet STYLE et LABEL. Utiliser La fonction EXPRESSION pour définir les classes de vos symboles et labels. EXPRESSION [string] : Trois types d'expressions sont supportés pour définir le lien de classe. Les comparaisons entre chaîne de caractères, les expressions régulières et les expressions logiques simples. Exemple : EXPRESSION ([POPULATION] > 50000 AND '[LANGUAGE]' eq 'FRENCH'). Cette expression permet de filtrer les objets dont la population est supérieure à 50000 habitants et dont la langue est le français. Pour en savoir plus : http://mapserver.org/mapfile/class.html 3.1.4 Ajout de propriétés supplémentaires
a) Définition des formats de sortie fournis par Mapserver Mapserver peut fournir à une application cliente une carte sous différents formats (cf cours : présentation Mapserver). La disponibilité des formats d’images ou vectoriels dépendent de votre installation. Le format des images envoyées par Mapserver est multiple. La commande passée en début de TP $/usr/lib/cgi-­‐bin/mapserv –v vous donne les formats de sortie possible dans votre installation. Extrait : MapServer version 5.6.1 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SWF
OUTPUT=SVG …
La propriété OUTPUTFORMAT de l’objet MAP définit les formats de sortie et leurs paramètres. Ils peuvent être multiples pour pour un même objet MAP. A partir de l’exemple suivant permettant de définir le format PNG, définissez deux autres OUTPUTFORMAT en JPEG et GIF. Paramétrer les pour obtenir la meilleure qualité de rendu. Exemple : OUTPUTFORMAT NAME PNG DRIVER "GD/PNG" MIMETYPE "image/png" IMAGEMODE PC256 EXTENSION "png" END Pour en savoir plus : http://mapserver.org/mapfile/outputformat.html b) Définition des systèmes de projection dans Mapserver pour fournir une carte avec le système Google (Virtual Earth projection) Afin de pouvoir combiner différents systèmes de projection (SRS) au sein d’une même carte et assurer la reprojection des données sur un même SRS, Mapserver permet de définir un système de projection au niveau de la carte (objet MAP) et des couches de données (objet LAYER). Deux cas de figures peuvent être considérés : • La projection de la carte et des données sont identiques : il n’est pas utile de déclarer l’objet PROJECTION. • La projection de la carte est différente de celles de certaines couches : il est nécessaire de définir explicitement la propriété PROJECTION dans l’objet MAP ainsi que celle des couches pour que Mapserver puisse aller chercher les informations pour reprojeter les couches avec la projection de la 17 carte. 1 – vous devez insérer dans le fichier de définition de projection /usr/share/proj/epsg, la définition de la projection Virtual Earth : <900913> +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs 2 -­‐ En utilisant l’objet PROJECTION, vous définirez : -­‐ l’objet PROJECTION pour que la carte fournie par Mapserver soit projetée avec le SRS Virtual Earth de Google, -­‐ l’objet PROJECTION de tous les objets LAYER précédemment déclarés. Ils ont tous le même système de coordonnées. Vous pouvez le trouver dans l’extension .prj des fichiers shapefile ou pour les données issues du WMS Demis dans la métadonnée « wms_srs » 3 -­‐ Les propriétés EXTENT et UNITS devront être redéfinies en conséquence. Les nouvelles valeurs xmin, ymin, xmax et ymax sont les suivantes : 10038300, -­‐1326150, 16358800, 1237250 Et redéfinir la valeur de la propriété UNITS pour qu’elle corresponde à celle de la nouvelle projection. Note : syntaxe des objets/propriétés à utiliser PROJECTION « init=[namespace] :[srid] » END EXTENT [xmin ymin xmax ymax] UNITS UNITS [feet|inches|kilometers|meters|miles|dd] Pour en savoir plus : http://mapserver.org/mapfile/projection.html c) Habillage de la carte : ajout d’une barre d’échelle Mapserver permet d’associer une barre d’échelle à votre carte. Ce nouvel objet peut être défini avec l’objet SCALEBAR. Mettez en place la barre d’échelle en testant les différents styles. Vous devrez au minimum utiliser les propriétés suivantes : IMAGECOLOR, BACKGROUNDCOLOR, LABEL, STYLE, SIZE, COLOR, UNITS, INTERVALS, STATUS. La syntaxe des propriétés de cet objet est fourni à cette adresse : http://mapserver.org/mapfile/scalebar.html#scalebar d) Habillage de la carte : ajout d’une légende Mapserver permet d’associer une légende à une carte. Cela peut être soit défini à partir d’un page modèle html (Template) soit uniquement à partir des propriétés de l’objet LEGEND. Mettez en place la légende en définissant l’objet LEGEND au sein du mapfile. Vous devrez au minimum utiliser les propriétés suivantes : STATUS, POSITION, LABEL. La syntaxe des propriétés de cet objet est fourni à cette adresse : http://mapserver.org/output/html_legend.html#html-­‐legend e) Habillage de la carte : ajout d’une légende avec template html 18 Si vous souhaitez tester la deuxième possibilité afin de réaliser des légendes, des exemples de templates html sont donnés à
cette page : http://mapserver.org/output/html_legend.html#sample-site-using-the-html-legend. Dans ce cas, vous devrez
ajouter la propriété TEMPLATE à votre objet LEGEND. Ce Dernier remplace la propriété LABEL. 19 

Documents pareils