Archives de mai, 2011:
Présentation des nouveautés de MapServer 6.0
UMN MapServer est un serveur cartographique prenant en charge un grand nombre de formats de fichier. Il est possible de l’utiliser en mode CGI ou à travers des langages de script tels que PHP, Ruby, Java, C#, etc à l’aide de MapScript. MapServer constitue donc un environnement de développement d’outils plus qu’un outil en lui même prêt à être installé et à être utilisé directement.
Au niveau des nouveautés de cette version majeure, nous trouvons au niveau du coeur de MapServer : une API d’interface de rendu, le refactoring de l’interpréteur des Expressions dans MapServer (MS RFC 64) et les requêtes en une seule passe (MS RFC 65), au niveau des améliorations : la sortie KML, amélioration de la gestion des étiquettes, amélioration de la gestion des styles des features, de nouveaux formats pour la requête GetFeature du service WFS, un visualiseur OpenLayers interne, une meilleure gestion des fichiers temporaires, la possibilité d’activer ou pas les services OGC, la fusion et le cluster des features.
Note : un document détaillant ces nouveautés est disponible sur le site du PortailSIG. Je reprend ici que l’introduction de chaque nouveautés.
Nouveautés
API de rendu d’interface (MS RFC 54)
L’objet de ce développement est de créer une API pour brancher des moteurs de rendues différents en fonction du format de sortie voulu, pour l’anecdote cette API fonctionne d’une manière similaire à la lecture des données.
Révision du parseur d’expression de MapServer (MS RFC 64)
L’objet de cette RFC est de revoir le parseur d’expression (i.e. le code qui interprète les expressions utilisées dans le mapfile, par exemple [name] = “Yves”) et en particulier les endriots où celui-ci est utilisé. Les modifications pouvant avoir un impact sur les expressions des requêtes et particulièrement aux bases de données. Un objectif de ces modifications est l’implémentation des expressions de filtres de l’OGC en seule passe et indépendamment du pilote.
Modification de la requête en seule passe (MS RFC 65)
Ces modifications consistent à une simplification du travail qui a été effectué lors de la release précédente (la 5.6). À ce moment un premier travail a été effectué mais il s’avère insuffisant même s’il a amélioré les choses. Avant la 5.6, une première requête permettait de récupérer les géométries potentielles, puis n requêtes plus petites pour récupérer les résultats, cela été lent particulièrement pour les serveurs de bases de données. À partir de la 5.6, seulement deux requêtes sont effectuées.
Gestion du rendu OpenGL (MS RFC 50)
Cette nouvelle fonctionnalité apporte l’utilisation du module Opengl pour le rendu à MapServer pour un rendu plus rapide des images.
Kml Output (MS RFC 58)
Le travail initial a été réalisé par David Kana lors du Google Summer of Code de 2009. Le code pour le rendu KML est basé sur la nouvelle API du moteur de rendu décrit dans la RFC 54. La première intention était d’utiliser la bibliothèque KML originale fournie par Google mais celle-ci était trop complexe et la bibliothèque libxml2, déjà incluses dans MapServer, a été utilisée.
Amélioration des étiquetages : possibilité d’annuler les étiquettes ANGLE FOLLOW si trop de caractères se superposent (MS RFC 60)
Lorsque des étiquettes étaient placées sur une ligne à forte courbure et que ces étiquettes devaient suivre la ligne (ANGLE FOLLOW) il arrivait que des caractères se chevauchent rendant illisible le texte. L’amélioration ici consiste à détecter ce genre de problème et à sauter l’emplacement qui pose problème. Le prochain emplacement qui ne présente pas ce problème affichera l’étiquette. La stratégie est la suivante et permettra de comprendre le nouveau mot-clé : l’angle des deux caractères consécutifs sont comparé et s’il est supérieur à 22.5° l’étiquette ne sera pas affichée.
Amélioration de la gestion des styles dans MapServer (MS RFC 61)
L’idée ici est de pouvoir utiliser des styles stockés avec la géométrie. Seul le pilote OGR gère le rendu avec le style lié à la géométrie de plus théoriquement seuls quelques formats gèrent le stockage des styles avec la géométrie (comme MapInfo, AutoCAD DXF, Microstation DGN), cependant ces styles peuvent facilement être transférés sous forme d’attributs en utilisant l’option SQL d’ogr2ogr.
Gestion de formats de sortie supplémentaire pour le GetFeature du WFS (MS RFC 62)
L’amélioration ici consiste à définir différent format de sortie pour la requête GetFeature du service WFS.
Visualiseur OpenLayers interne (MS RFC 63)
Les utilisateurs ont souvent demandée un moyen simple de tester les mapfiles. Cette amélioration permet un moyen simple de visualiser, tester et naviguer dans un mapfile en utilisant un visualiser interne basé sur OpenLayers. Il ne doit servir que pour tester et développer et non pas en production !
Meilleur prise en charge des fichiers temporaires (MS RFC 66)
Jusqu’à maintenant, MapServer écrit les fichiers temporaires dans un répertoire IMAGEPATH accessible par le web, ce qui n’est pas optimale mais pouvait être suffisant mais au fur et à mesure que les fichiers temporaires étaient de plus en plus utilisés, il fallait mettre en place une meilleure prise en charge.
Activer/Désactiver des couches dans les services web OGC (MS RFC 67)
Jusqu’à maintenant il n’était pas possible de cacher/désactiver une couche de service web OGC, cela est maintenant possible. Vous pouvez trouver une discussion sur ce sujet dans le wiki : http://trac.osgeo.org/mapserver/wiki/HidingLayersInOGCWebServices
Gestion de la combinaison de features à partir de différentes couches (MS RFC 68)
Aujourd’hui, vous pouvez combiner plusieurs fichiers en utilisant la fonction TILEINDEX, mais seulement si ces données ont les mêmes attributs et description. Il peut être intéressant d’être en mesure d’avoir des couches sources multiples qui ont des attributs semblables et d’être en mesure de les combiner en une seule couche (appelé couche “union”) en utilisant un sous-ensemble compatible des colonnes attributaires sources de sorte que la couche combinée peut être considérée comme une seule couche. On pourrait alors utiliser cette seule couche de la même manière que toute autre couche lors de la création des styles, classes et étiquettes.
Gestion des clusters de géométries dans les couches ponctuelles (MS RFC 69)
Afin de rendre les cartes pertinente pour une vue donnée, nous pouvons avoir besoin de limiter le nombre d’éléments affichés qui normalement se chevauchent les uns sur les autres. Nous pouvons maintenant réaliser un rendu des symboles sous forme de cluster à une échelle particulière. Selon l’exemple à http://trac.osgeo.org/mapserver/attachment/ticket/3700/cluster.png le nombre de traits formant les groupes sont affichés dans les étiquettes pour chaque feature dans le cluster.