Skip to Content

Foire Aux Questions - Comment habiller une carte produite par MapServer ?

Auteur : L.Jégou

L'étiquetage des éléments d'une couche dans MapServer s'effectue en utilisant le bloc LABEL, à l'intérieur des blocs CLASS de la couche.

  • Le texte des étiquettes doit être contenu dans les données attributaires de la couche, et précisé par le paramètre LABELITEM du bloc LAYER.
  • L'aspect des étiquettes est précisé par plusieurs paramètres :
    • le type de police : bitmap ou truetype (dans ce dernier cas prévoir un fichier fontset)
    • la taille (SIZE) et la couleur (COLOR) du texte
    • la taille de la réserve autour du texte (BUFFER, en pixels)
    • la couleur de la réserve (OUTLINECOLOR)
    • la couleur de l'arrière-plan (BACKGROUNDCOLOR)
    • l'antialiasing du texte
    • la position des étiquettes par rapport au centroïde de l'objet (POSITION)
    • l'angle du texte par rapport à la verticale ou l'angle s'il s'agit d'un objet linéaire (ANGLEITEM et ANGLE).
  • Le contrôle de l'affichage des étiquettes est réglé par :
    • MINSIZE et MAXSIZE (en pixels)
    • la taille minimale des objets pour qu'ils soient étiquetés (MINFEATURESIZE)
    • la distance minimale entre deux étiquettes (MINDISTANCE)
    • la possibilité d'afficher des étiquettes tronquées (PARTIALS)

On peut utiliser des polices truetype de symboles pour réaliser des cartes d'inventaire.

Auteur : L.Jégou

L'ajout d'une rose des vents à un document MapServer peut s'effectuer de différentes manières.

  • Si le nord est classiquement vers le haut du document et que ce dernier ne sera jamais pivoté (documents non interactifs, par exemple), on peut utiliser un LAYER comportant un simple point sur lequel sera placé un LABEL composé d'un symbole.
  • Si le document est appelé à pivoter, on peut alors utiliser la possibilité de dessiner des objets graphiques à partir du MapFile, en utilisant le mot-clé FEATURE, pour dessiner une flèche en direction du nord. La documentation correspondante se trouve sur cette page : http://mapserver.gis.umn.edu/docs/reference/mapfile/feature
Auteur : L.Jégou

MapServer sait générer une échelle graphique, il faut pour cela utiliser le bloc SCALEBAR dans le mapfile. La taille de la barre d'échelle est paradoxalement donnée en pixels, MapServer se chargeant d'indiquer les longueurs correspondantes en fonction de l'échelle du document.

Cette échelle peut être à l'intérieur de l'image de la carte (STATUS EMBED), et alors elle est dessinée dans un des coins spécifiés par le paramètre POSITION, ou être dessinée comme une image à part (STATUS ON), qui pourra alors être intégrée à une mise en page avec un modèle HTML, par exemple.

MapServer propose deux types de barres d'échelle avec le paramètre STYLE,  la valeur 0 donnant une barre de rectangles pleins, la valeur 1 une barre fine munie de repères en barbules.

Auteur : L.Jégou

MapServer possède des fonctions de création automatique de légende assez intéressantes, elles s'activent en ajoutant un bloc LEGEND au premier niveau du MapFile. Cf. la documentation.


Comme pour les échelles, les légendes peuvent être incluses dans l'image de la carte (STATUS EMBED, localisation sur la carte avec le mot-clé POSITION), ou générées comme une image à part (STATUS ON). L'autre possibilité pour personnaliser finement l'apparence de la légende est d'utiliser une légende de type HTML (Cf. le howto), basée sur un modèle, ce qui permet de localiser et de libeller chaque élément, caisson, symbole et texte.

Une erreur classique est d'oublier de nommer chaque élément de la carte (CLASS) avec le mot-clé NAME "nom", ce qui désactive son apparition en légende.

Un exemple : http://www.geotests.net/test/analyse/thematique.php
Son mapfile : http://www.geotests.net/test/analyse/thematique.map