Geospatial – Actualités

Publication de MapServer 6.4

19 septembre 2013

MapServer est un moteur cartographique open source éprouvé fournissant d’excellentes performances ainsi que des possibilités de présentation cartographiques très avancées. Le respect des normes OGC permet son intégration dans des architectures logicielles orientées services, tel que le Géoportail MapFish qui bénéficie ainsi de toutes ces innovations. MapServer dispose d’une très large communauté de développeurs et d’utilisateurs.

L’équipe de développeurs vient de publier une nouvelle version de MapServer. Cet article a pour objectif de présenter les nouveautés ajoutées au sein de cette nouvelle version. Les informations sont issues des RFC (les propositions soumises au vote des développeurs qui décrivent les fonctionnalités ajoutées, les contraintes, etc.). La liste des corrections et améliorations est suffisamment longue pour mériter une synthèse que nous vous proposons ici :

Camptocamp propose des formations en sessions intra ou inter-entreprise pour vous remettre à niveau, ainsi que du support sur MapServer. N’hésitez pas à nous contacter !

Rendu de contour vectoriel

MapServer peut maintenant réaliser un rendu vectoriel linéaire à partir d’un MNT. Le fonctionnement est similaire à celui du champ vectoriel : un nouveau type de connexion a été rajouté appelé CONTOUR (après celui UVRASTER ajouté l’année dernière). Le paramètre PROCESSING permet de définir plusieurs sous-paramètres : le nom de l’attribut contenant l’élévation (CONTOUR_ITEM, optionnel) pour être utilisé comme champ d’affichage des labels, la valeur de l’intervalle entre deux linéaires (CONTOUR_INTERVAL) et une liste de niveaux fixes à extraire (CONTOUR_LEVELS).

Exemple issu de la RFC :

LAYER NAME "my_contour_layer"
  TYPE LINE
  STATUS DEFAULT
  CONNECTIONTYPE CONTOUR
  DATA /mnt/data/raster/grib/dem.grib
  PROCESSING "BANDS=1"
  PROCESSING "CONTOUR_ITEM=elevation"
  PROCESSING "CONTOUR_INTERVAL=0,25000:5" # interval of 5 for scales
  of 25000 or less
  PROCESSING "CONTOUR_INTERVAL=25000,500000:10" # interval of 10 for
  scales in the 25000 to 500000 range
  PROCESSING "CONTOUR_LEVELS=500000,0:10,25,50,100" # explicit list
  of levels for scales of 500000 and up
  LABELITEM "elevation"
  CLASS
    STYLE
      WIDTH 2
      COLOR 255 0 0
    END
    LABEL
      ...
    END
  END

Sauvegarde des objets MapServer en chaîne

Cet ajout a pour finalité la transformation des objets du mapfile vers une chaîne de caractères au sein de MapScript. Elle est complémentaire de la RFC 31.

Géo-transformation au niveau des couches

Jusqu’à maintenant, MapServer proposait de réaliser des modifications de la géométrie avant son rendu. Cette transformation était définie au niveau de l’objet STYLE. Lorsque l’utilisateur définissait plusieurs objets « STYLE » avec la même transformation géométrique, cela avait une influence importante sur les performances. Il est maintenant possible de définir la transformation au niveau de l’objet « LAYER ». Cette transformation s’appliquera à toutes les « CLASS ».

Trois nouvelles opérations ont été rajoutées :

  • simplify : simplification via l’algorithme de Douglas-Peucker dans GEOS.
  • simplifypt : simplification avec préservation de la topologie via GEOS.
  • generalize : généralisation.

Activation et désactivation des couches des services web OGC par liste d’IP

Plusieurs paramètres à définir au sein de l’objet METADATA, soit au niveau de l’objet WEB, soit au niveau de l’objet LAYER, permettent d’activer ou désactiver des services OGC et en mode template pour des adresses IP définies dans le mapfile ou dans un fichier texte.

Lissage des géométries

Cette fonctionnalité ajoute une valeur smoothsia au paramètre GEOMTRANSFORM de l’objet LAYER. Elle permet d’adoucir/ lisser des géométries et pas forcément de les simplifier ! D’ailleurs, si votre couche de données possède un nombre de points trop élevé (une résolution importante), le rendu ne pourrait pas être d’assez bonne qualité. Dans ce cas, vous pouvez utiliser la fonction simplifypt avant le lissage : GEOMTRANSFORM (smoothsia(simplifypt([shape], 10))).

Gestion des listes d’expressions

Lorsqu’on filtre des données via un attribut, plusieurs valeurs peuvent maintenant être listées pour le filtrage, par exemple pour avoir un rendu identique pour les routes de type primary et secondary dans un jeu OSM, nous pouvons utiliser :

LAYER
  ...
  CLASSITEM "type"
  CLASS
    EXPRESSION {primary,secondary}
    ...
  END
END

Gestion de la dimension temporelle dans les définitions de tuiles dans MapCache Tilesets

MapCache fait partie de la suite MapServer. Il permet de générer un cache de tuiles afin d’améliorer les performances. Le paramètre TIME est maintenant géré et permet de générer différents caches de tuiles en fonction du paramètre TIME. MapServer gère depuis un bon moment les services WMS-T (WMS avec l’option TIME).

Gestion des icônes SVG sur les systèmes linux

Il y a quelques versions de cela, la gestion des symboles SVG a été rajoutée au sein de MapServer. La bibliothèque utilisée posait problème pour les systèmes de type unix. Une nouvelle bibliothèque est donc utilisée pour garder une compatibilité inter-systèmes. Le support des symboles SVG est maintenant compatible sur les systèmes unix.