Archive pour septembre 2007

Du neuf dans les GeoFormats ?

Dimanche 30 septembre 2007

En complément à un précédent post, le FOSS m’a permis d’y voir un peu plus clair sur les différents formats “interropérables” pour les données géographiques et surtout de percevoir un distinction majeure entre ceux-ci : il y a d’un côté les formats issus du monde géographique et créés pour diffuser l’information géographiques sous la formes de services web : WMS, WFS et donc GML sont de ceux-là.
D’un autre côté, on trouve les formats du Web 2.0 qui intègrent peu à peu la dimension géographique : AtomPub, GeoRSS en font partie. Le KML/Z quant à lui se situant entre ces deux approches : imaginé pour diffuser de l’information géographique (et rien de plus, comme le rappelle Raj Singh), il intègre aussi étroitement la notion d’interropérabilité totale.

Car c’est bien en termes d’interropérabilité que les formats se distinguent. Là où les premiers ont été faits pour permettre à des systèmes géographiques d’interropérer (afficher dans MapInfo une carte issue d’un serveur WMS, crééer un application web à partir de multiples serveurs WMS-WFS différents), le deuxième groupe est fait pour permettre à des applications web d’interropérer, nonobstant leur capacité à analyser ou traiter la donnée géographique. Ce point est central pour la compréhension des avantages et inconvénients de chacuns. Là où un flux AtomPub intégrant des balises de géolocalisation en GeoRSS pourra être interprété par n’importe quel client Atom, qu’il exploite les données géographiques ou pas, le flux GML d’un serveur WFS ne sera correctement affiché sous forme de carte que par des clients dédiés à l’affichage cartographique. Cependant, pour des raisons d’homogénéité et de standardisation, l’AtomPub, tout comme le KML, ne diffuse qu’un contenu attributaire restreint (nom - description de l’objet, même si celle-ci peut-être complexe, de la forme d’un bloc HTML complet), tandis que le GML transporte toute la richesse attributaire nécessaire à une réelle exploitation des données. Les usages sont donc forcément différents. Là où le GeoRSS répond au besoin de “Affiche mes posts dans GoogleMaps”, le GML est porteur d’une réelle richesse attributaire et d’une plus value qualitative évidente, qui se paye par une plus grande complexité.

Qu’est-ce qu’on parle au FOSS4G ?

Dimanche 30 septembre 2007

Après une semaine fort excitante passée à suivre les conférences et ateliers du FOSS4G2007, je profite du temps épouvantable qui m’oblige à rester cloîtré dans la salle commune du Whalers on the Point Guesthouse de Tofino et m’empêche de sortir ma planche de surf pour livrer quelques réflexions sur ce que j’ai pu apprendre ces derniers jours.

Premièrement, concernant les langages de développement, Python fait réellement l’événement puisque c’est le langage utilisé dans les applications les plus pointues et récentes présentées au FOSS. Citons TileCache, FeatureServer, Cartoweb 4, Shapely, GeoDjango, tous ces projets ont privilégié le python en raison de sa stabilité et de son extraordinaire versatilité (au sens anglo-saxon du terme). Java est toujours là, structurant des projets déjà reconnus (uDIG) ou en devenir (un ETL OpenSource présenté par Talend et CampToCamp). Par contre le PHP ne fait plus partie des langages en vue. Encore utilisé largement, s’il apparaît notamment dans des retours d’expérience il n’est plus le fer de lance du développement en WebMapping, dont l’architecture s’oriente vers des bibliothèques puissantes écrites en C, intégrées dans des wrappers python. Cela a été rendu possible par l’intégration de Ctypes dans python 2.5 qui permet l’appel direct de bibliothèques C sans passer par une fastidieuse interface SWIG.
Du côté des geeks, Charlie Savage met désormais en oeuvre du GeoRuby pour faire tourner son MapBuzz, et à créé une liste dédiée au webmapping dans RubyOnRails, que rien ne semble arrêter !

Tout ceci produit des applications plus puissantes, plus stables et plus robustes, notamment dans la gestion de la mémoire et de la montée en charge. Des bibliothèques aussi cruciales que Geos, Gdal, Ogr, Proj peuvent ainsi être utilisées au coeur même d’une application web dont les scripts python constituent une double interface entre les requêtes utilisateurs d’un côté et la manipulation des données à un bas niveau de l’autre. Ceci devrait faire émerger des frameworks cartographiques avec de véritables fonctions d’administration des données, qui sont encore des aspects trop négligés par le monde OpenSource.

GeoDjango devrait montrer la voie puisque ses concepteurs ont montré un vif intérêt à l’idée d’intégrer des notions de règles de topologies à la gestion des tables.

Mise à jour de la doc d’install MapServer

Mardi 18 septembre 2007

Suite à l’arrivée de la version 5, j’ai mis les docs d’install à jour. J’en ai profité pour mettre aussi à jour les différentes versions des librairies utilisées que j’ai pu tester récemment.

Téléchargement au format OpenOffice, Microsoft Word, PDF.

MapServer 5

Mardi 18 septembre 2007

La version 5.0 de MapServer vient d’être publiée. Elle intègre de nombreuses modifications, même si elle traîne toujours le rustique fichier .map. Un des apport les plus intéressants à mon sens concerne le rendu des vecteurs. Grâce à la bibliothèque AGG (Anti-Grain Graphics), les rendus sont spectaculaires, courbures et contours sont lissés. Mais chaque médaille ayant son revers, les fichiers PNG générés avec AGG sont beaucoup plus lourds, de 3 à 12 fois environ. Voici quelques exemples :

PNG standardPNG 8 bits, sans AGG 7 Ko

AGG en mode RGBAGG en mode RGB, 71 Ko

AGG optimiséAGG optimisé (palette adaptative), RGB, 20 Ko

Ce dernier mode est donc relativement performant, générant de belles images sans faire des fichiers trop volumineux.

De plus, la gestion de la transparence pose quelques problèmes. Seul le mode RGBA permet de disposer d’un fond transparent, alors qu’en PNG standard 8 bits cela est possible. Dans une application OpenLayers, où les fonds doivent être transparents pour que chaque couche soit visible, ça devient gênant car ça oblige à l’utilisation du mode RGBA non optimisé, et donc la manipulation de fichiers beaucoup trop gros. C’est un défaut qui a déjà été constaté par les utilisateurs et qui sera donc vraisemblablement corrigé dans les mois à venir.

Reste qu’en utilisation “classique” de MapServer, le mode optimisé fonctionne très bien et permet de très belles réalisations. C’est aussi un rendu qui sera très appréciable pour les exports PDF.

Petit exemple

Côté compatibilité, rien de bien compliqué. Les attributs LABELANGLEITEM et LABELSIZEITEM, ainsi que ANGLEITEM et SIZEITEM disparaissent au profit de simples ANGLE et SIZE placés dans les contextes du label ou du symbole.
Le mot-clé SYMBOL du fichier de symboles est remplacé par PATTERN pour ne plus créer de confusion avec le contenu du fichier .map. Enfin, TRANSPARENCY est enfin remplacé par ce qu’il signifiait vraiment, à savoir OPACITY !

La compilation ne pose pas de problème nouveau. Pour le support d’AGG, il suffit de récupérer cette bibliothèque, puis de faire un simple make, rien de plus. Le configure de mapserver comportera alors une option de plus : –with-agg=/chemin_vers_le_rep_de_compilation. Je vais ajouter ce point à ma documentation au plus vite.

Pour de plus amples informations, voir :

La description des nouveautés et améliorations :
http://mapserver.gis.umn.edu/development/rfc et http://trac.osgeo.org/mapserver/browser/tags/rel-5-0-0/mapserver/HISTORY.TXT
Le guide de migration 4.x -> 5.0 :
http://mapserver.gis.umn.edu/download/current/MIGRATION_GUIDE.TXT/

Quelques tuyaux pour optimiser le driver AGG :
h
ttp://mapserver.gis.umn.edu/docs/howto/agg-rendering-specifics

et enfin les sources :
http://download.osgeo.org/mapserver/mapserver-5.0.0.tar.gz

OpenLayers 2.5 approche

Lundi 17 septembre 2007

C’est le blog d’OpenLayers qui le dit, la nouvelle version disponible depuis ce jour en Release Candidate 1 propose de nombreuses améliorations à l’excellent client javascript de cartographie :

  • Amélioration de la prise en charge des formats vectoriels via du GeoJSON
  • Amélioration des fonctionnalités d’édition des objets, et notamment des petites ancres au milieu des segments qui permettent facilement d’ajouter des sommets sans manipulation complexe de la forme existante (voir la démo)
  • Meilleure prise en charge des données hétérogènes
  • Fonction de création de polygones réguliers à partir de quelques paramètres (centre, rayon, nombre de faces)
  • Possibilité de faire pivoter les objets vectoriels. Ca donne un peu le tournis, mais à n’en pas douter ça peut avoir quelques applications intéressantes.

Un grand bravo donc à tous les développeurs de cette nouvelle version, et notamment aux équipes de CampToCamp et Metacarta qui n’ont semble-t-il pas ménagé leurs efforts. Il est vrai que le prochain CartoWeb 4, qui sera présenté à l’occasion du FOSS4G, utilisera OpenLayers en lui adjoignant des modules serveurs complémentaires.