Skip to Content

Foire Aux Questions - Quels sont les différents modes d'utilisation de MapServer ?

Auteur : L.Jégou

MapServer à la base ne produit qu'un fichier image contenant une carte, selon une "recette" contenue dans un fichier mapfile, qui va chercher des données et les assemble pour former une carte. Dans le cadre d'une utilisation sur un serveur web, les auteurs de MapServer ont ajouté une fonctionnalité au logiciel pour lui permettre de générer non seulement une image de carte, mais un document HTML complet comprenant les divers éléments (carte, échelle, légende, titres et mentions).

Cette fonctionnalité se base sur l'utilisation d'un fichier modèle HTML, dans lequel MapServer va modifier des valeurs pour y introduire les éléments cartographiques qu'il va produire. Ce fichier modèle HTML c'est ce qu'on appelle un "template" dans le vocabulaire de MapServer.

Le fonctionnement des templates est très simple : dans le mapfile on spécifie le chemin vers un fichier template HTML. Ce dernier contient le code HTML de la page dans laquelle vont se trouver les éléments que doit produire MapServer, identifiés par des balises spéciales, qui seront remplacées par le code HTML adéquat par MapServer.

La balise la plus importante est la balise [img], qui sera remplacée par MapServer par le chemin vers le fichier image de la carte qu'il génère. Le passage des paramètres entre le template HTML et MapServer se réalise selon les procédures HTML classiques, par le biais de variables CGI, donc en utilisant les formulaires HTML.

Le référence des balises utilisables se trouve sur cette page : http://mapserver.gis.umn.edu/docs/reference/templatereference/templatereference

Voici un exemple : http://www.geotests.net/test/symbprop/symboles.php
Son mapfile : http://www.geotests.net/test/symbprop/symboles.map
Et le modèle HTML utilisé : http://www.geotests.net/test/symbprop/symboles.txt

Auteur : L.Jégou

MapServer possède un mode d'utilisation qui permet de réaliser des requêtes sur les données affichées, et de recevoir en retour une liste de résultats correspondant à l'endroit cliqué. C'est ce que l'on appelle le mode QUERY.
Pour qu'un document interactif MapServer fonctionnne dans ce mode, il faut que le CGI de MapServer soit appellé avec le paramètre "mode=query", et que le mapfile soit paramétré pour gérer la requête au clic, avec les mots-clés suivants dans les blocs LAYER :

  • TOLERANCE et TOLERANCEUNITS, qui indiquent la tolérance acceptée (généralement en pixels) entre la distance du point cliqué sur l'écran et les objets géographiques de la carte. Ainsi on peut renvoyer des résultats même si le clic est approximatif.
  • TEMPLATE : Le bloc class doit obligatoirement comporter une valeur à ce paramètre, même si elle ne correspond pas à un fichier html modèle quand on veut utiliser le mode query directement. Sinon il s'agit du chemin vers le fichier html modèle qui va formater les résultats de la requête.

Cf. les exemples bien documentés du Tutorial MapServer : http://biometry.gis.umn.edu/tutorial/section3.html

Auteur : L.Jégou

MapServer peut générer des images par un simple appel à l'éxécutable CGI dans l'URL (la barre d'adresse) d'un navigateur Internet. C'est un moyen rapide de générer des images, et on peut l'utiliser comme valeur du paramètre "source" d'un tag HTML <img> pour inclure facilement une carte MapServer dans une page web.
La création de la carte se fait généralement sur la base d'un mapfile, modifié ou non par des paramètres, qui sont passés dans l'url en utilisant la syntaxe GET classique, par exemple :

http://serveur/cgi-bin/mapserv?parametre1=valeur1&paramètre2=valeur2&mode=browse

(le nombre de paramètres n'est limité que par la longueur maximale de l'url, 256 caractères étant une limite conseillée par le W3C).

La liste des paramètres acceptés par le CGI est détaillée sur cette page de la documentation officielle : http://mapserver.gis.umn.edu/docs/reference/cgi/controls

Auteur : L.Jégou

MapServer peut être utilisé de diverses façons pour produire des cartes :

  • génération de fichiers images en local avec l'utilitaire shp2img
  • avec un serveur web en mode cgi, avec l'exécutable mapserv
    • Mode browse : par appel direct dans l'url, de type http://serveur/cgi-bin/mapserv?map=lemapfile.map&mode=browse
    • Mode Query : en mode interactif, avec détection des clics et réaction, souvent à l'intérieur d'une interface utilisant des modèles (templates) html qui insèrent le document cartographique dans une page html comportant des balises spécifiques, ce qui permet de réaliser des interfaces utilisateur web.
  • avec un serveur web en tant que bibliothèque de fonctions pour un langage de scripts (php par exemple) avec la "library" mapscript.