Neogeo passe au cube

Posté le 2 juillet 2010 par Guillaume Sueur

Il y aurait cent jeux de mots à faire, de la trinité au triolisme, mais l’idée du cube est celle que je préfère. Parce que ça rappelle les cubes OLAP, et que le nouvel arrivant apporte précisément une nouvelle dimension à notre activité.

On ne le présente plus, tant son blog l’a rendu célèbre, tant ses découvertes et ses analyses pertinentes en ont fait un commentateur de référence du geoweb. Vous l’avez compris, il s’agit de Benjamin Chartier, qui rejoint aujourd’hui Neogeo Technologies en tant qu’expert Inter-opérabilité et Défense. Ses principales missions vont donc couler de source. Il représentera Neogeo Technologies auprès de l’OGC, assurera les prestations liées au domaine de la Défense, et interviendra en expertise sur l’ensemble des projets de Neogeo Technologies.

Bienvenue à Benjamin donc, et longue vie à Neogeo³ !

Analyse raster Online

Posté le 15 juin 2010 par Guillaume Sueur

Ce n’est pas parce qu’un nouveau rédacteur a fait l’apparition sur ce blog et vous propose des articles intéressants et complets que je dois complètement passer la main. Je ne viens pas de passer une semaine dans un monastère italien à travailler sur GeoNetwork, donc je n’en ferai pas le compte-rendu (bien qu’il soit attendu par tous… François, si tu me lis…), mais je viens de découvrir une application qui ouvre des perspectives intéressantes de traitement raster en ligne (sur le client).

London at Night est une application permettant de calculer des temps de parcours en bus de nuit dans l’agglomération londonienne. On ne peut pas vraiment choisir sa ligne, mais pour un point donné on obtient la carte des endroits accessibles en moins de n minutes. Rien de révolutionnaire jusqu’ici. Sauf que le traitement et son rendu sont réalisés directement sur le client. Une immense matrice grise recouvre l’habituel fond Google (en mode nuit cependant), et c’est le passage en transparence complète des diverses cases qui illumine le fond pour mettre en avant la zone correspondant à vos critères. Outre la qualité visuelle du rendu, et la rapidité à laquelle il est obtenu, cette expérimentation ouvre sans doute la voie à d’autres dans une approche cliente du traitement raster. Son auteur, Stephan Wehrmeyer, présente sa démarche sur son blog.  A suivre donc. Par ailleurs, le code est disponible sous licence CC-by-nc-sa.

via GoogleMapsMania.

Léger changement de cap pour le module spatial de l’ETL Talend

Posté le 13 juin 2010 par François-Xavier Prunayre
Depuis son lancement en 2007, le produit Spatial Data Integrator a émmergé comme une solution de traitement et gestion de données géographiques. En effet, partant du large spectre fonctionnel fourni par Talend (+ de 500 composants aujourd’hui), les « géocomposants » permettent la réalisation de traitements (eg. validation de géométrie, calcul de distance, agrégation, intersection) et la gestion (eg. création de métadonnées, publication dans un catalogue) de données géospatiales.
Cependant, il était difficile de suivre le rythme de progression de Talend Open Studio (également appelé TOS). Afin de bénéficier des avancées rapides faites par l’équipe de Talend, il a été décidé de pouvoir connecter le module spatial sur une installation de TOS existante.
Pour cela, l’architecture utilise maintenant des points d’extension pour l’ensemble des plugins du module spatial (type Geometry, librairies, composants, routines, assistants). Ainsi, le processus de création d’une nouvelle version est grandement simplifié. L’utilisation de plugins et la suppression des « patches » permettent également une prise en main beaucoup plus aisée pour d’éventuels nouveaux contributeurs.
La version 4.0.1 sortie vendredi dernier est donc la première ébauche de cette nouvelle architecture qui devrait être finalisée lors de la sortie de la version suivante. Cette version bénéficie donc des fonctionnalités de la version 4.0.1 de TOS, de corrections de bugs ainsi que quelques ajouts fonctionnels.

De nouveaux parfums de catalogue

Posté le 31 mai 2010 par François-Xavier Prunayre
Printemps actif pour les communautés GeoNetwork et GéoSource qui ont sorti 3 nouvelles versions en Mai ! Les version 2.4.3 et 2.5.0 de GeoNetwork et une version 2.3.0 de GéoSource ont vu le jour. La première apporte essentiellement des corrections de bugs de la version précédente de GeoNetwork (2.4.2) sortie en octobre 2009. Pour les deux autres, les nouveautés portent sur :
  • Améliorations ergonomiques : L’interface d’édition des métadonnées de la version 2.5.0 est maintenant basée sur un mode Ajax permettant une saisie plus rapide. Pour les mots-clés et les projections des assistants permettent maintenant la recherche et l’ajout rapide des informations par groupe. L’éditeur est doté de gadgets spécifiques pour la saisie des emprises (cartes dynamiques avec des outil de dessins pour rectangle, polygone et cercle) et des périodes. Les coordonnées peuvent être saisies en WGS84 ou en projection locale (eg. Lambert 93). Les emprises peuvent être générées automatiquement par analyse des mots clés saisis dans la fiche. Complété par une mise en évidence des champs contenant des valeurs invalides, le rapport de validation permet de consulter les différents niveaux de validité : ISO, profil de métadonnées, règles métiers tel que celle recommandées par la directive INSPIRE par exemple.
  • INSPIRE : Une nouvelle vue a été ajoutée permettant d’afficher les champs INSPIRE décris dans les règles d’implémentation. Les thesaurus GEMET, les thèmes INSPIRE et la classification de services peuvent être intégrés par import du format SKOS dans un catalogue existant. Les règles de validation INSPIRE ont été améliorées afin de fournir un rapport complet (eg. validation multilangues des thèmes).
  • Multilinguisme : L’éditeur de métadonnées supporte la saisie multilangue des informations. Il est alors possible de traduire tout ou partie d’une fiche en s’aidant éventuellement d’un service web de traduction en ligne tel que Google Translate. En consultation, le catalogue affiche autant que faire se peut les informations dans la langue de l’interface.
  • L’interface est maintenant disponible en 8 langues avec l’ajout du Portugais et du Hollandais.
  • Gestion des relations entre les métadonnées :
  1. parent / enfant utilisée par exemple dans le cas des séries de données. Il est alors possible de mettre à jour tout ou partie des descripteurs des enfants à partir de ceux du parent.
  2. métadonnées de données et métadonnées de services; en effet la directive INSPIRE demande de référencer les services (eg. visualisation, découverte, téléchargement), il est alors possible de savoir quelles sont les données diffusées et d’avoir des informations sur le service via ses métadonnées (eg. url, contraintes d’utilisation, contact, disponibilité, …).
  3. support de la norme ISO19110 pour la saisie d’un catalogue d’attributs d’un jeu de données.
  • Moissonnage de nouveaux protocoles : Z39.50, THREDDS, ArcSDE.
  • Amélioration des performances de manière significative pour tous les processus d’indexation en masse (eg. moissonnage) et de recherche. Pour les catalogues volumineux, PostGIS est recommandé.
Tous ces changements ont permis la sortie de la version 2.5 de GeoNetwork qui va entrer dans une phase active de tests, documentation et stabilisation en vue des prochaines versions. Le code sprint monastique de la semaine prochaine en Italie sera probablement une étape importante. GéoSource quant à lui est désormais très proche de GeoNetwork. Les deux points de divergence restants sont l’annuaire de contacts et l’interface de recherche basée sur OpenLayers.
Tous ces travaux ont été principalement réalisés grâce aux projets menés en Europe par le BRGM avec GéoSource, swisstopo avec geocat.ch, le GéoPortail hollandais GeoNovum et en Australie par le CSIRO avec BlueNet.

Mapserver et GDAL, duo magique

Posté le 20 avril 2010 par Guillaume Sueur

La dernière version de GDAL, la 1.7.1, améliore encore l’utilisation de sources de données distantes de type WMS. La documentation reste toutefois succinte et ne dévoile pas les possibilités offertes par les « minidrivers ». Rappelons le principe de base : il s’agit de pouvoir considérer une ressource distante (WMS, TMS) comme une source de données GDAL standard et de pouvoir la manipuler comme s’il s’agissait d’un raster en local. Ca peut déjà rendre service avec le WMS. Mais l’intérêt principal réside en sa capacité à exploiter des ressources tuilées. Qui n’a jamais été frustré de ne pas pouvoir exploiter un service WMS-C ou TMS car la projection proposée ne correspondait pas à son besoin ? Les « minidrivers » permettent de contourner cet obstacle. Comment ? Assez simplement en fait. GDAL va considérer le résultat que vous lui demandez (étendue géographique, projection…), récupérer les tuiles correspondantes, en découper le superflu,  les assembler en une seule image et reprojeter le tout dans ce que vous aurez demandé.  La configuration de l’accès au service se fait via un petit fichier XML simple à renseigner :

<GDAL_WMS>
  <Service name="WMS"> --> Description du type de service (WMS, TMS...)
    <Version>1.1.1</Version> --> Version du service
    <ServerUrl>http://labs.metacarta.com/wms-c/Basic.py?</ServerUrl>
                    --> Url d'accès au service
      <Layers>basic</Layers> --> Couches à récupérer
  </Service>
  <DataWindow> --> Configuration plus générale de la données distante
    <UpperLeftX>-180.0</UpperLeftX> --> Sur ces quatres lignes, la bbox
    <UpperLeftY>90.0</UpperLeftY>
    <LowerRightX>180.0</LowerRightX>
    <LowerRightY>-90.0</LowerRightY>
    <TileLevel>19</TileLevel> --> Le nombre de niveaux dans le cache
    <TileCountX>2</TileCountX> --> Le nombre de tuiles en X à la plus
                                   faible résolution (niveau 0)
    <TileCountY>1</TileCountY> --> Le nombre de tuiles en Y à la plus
                                   faible résolution (niveau 0)
  </DataWindow>
  <Projection>EPSG:4326</Projection> --> Projection de la source de données
  <BlockSizeX>256</BlockSizeX> --> Largeur des tuiles
  <BlockSizeY>256</BlockSizeY> --> Hauteur des tuiles
  <BandsCount>3</BandsCount> --> Canaux de couleur dans l'image
                                 (ici, 3 pour RGB)
</GDAL_WMS>

Avec ces informations, GDAL se retrouve capable de traiter la ressource distante comme une donnée locale. Mais ce n’est pas tout. MapServer pouvant utiliser un tel fichier de configuration XML comme source de données d’un LAYER, on peut connecter le service distant à un contexte MapServer particulier, et créer un service WMS non tuilé exploitant des données distantes tuilées. Pratique pour les outils SIG bureautiques par exemple, qui restent incapables d’exploiter le WMS-C !

La configuration d’un tel LAYER dans MapServer est assez basique :

LAYER
 NAME test_wms_c
 DATA "wms_c.xml"
 METADATA
   "ows_title"    "Couche WMS-C réassemblée"
 END
 TYPE raster
 PROCESSING "OVERSAMPLE_RATIO=1" --> Ne pas récupérer
                                     plus de tuiles que
                                     nécessaire (directive pour GDAL)
 PROCESSING "RESAMPLE=BILINEAR" --> rééchantillonner l'image
 STATUS ON
 PROJECTION
 "init=epsg:4326"
 END
END

On peut alors reprojeter la ressource initiale, ainsi que l’exploiter sur des échelles intermédiaires non prévues dans le tuilage. Attention quand-même à ne pas trop en faire, car les tuiles reprojetées et rééchantillonnées ne seront pas forcément très belles à voir. L’idéal reste quand-même de conserver au moins la projection initiale.

En résumé nous avons donc :

  ressource distante tuilée, définie sur certaines échelles
                             et une projection spécifique
     |
     |
  GDAL : calcule les requêtes à effectuer,
         récupère les tuiles, les assemble,
         reprojette si demandé,
         découpe si nécessaire
     |
     |
  MapServer : publie la nouvelle ressource pseudo-locale
              en toute liberté (projection, échelles...) mais
              avec une qualité du rendu potentiellement
              dégradée (en fonction des transformations effectuées).

Pour les obsessionnels, oui, on peut aussi mettre en cache la ressource MapServer locale. Mais pas besoin de TileCache pour cela. Les « minidrivers » intègrent un mécanisme de cache qui permet à GDAL de stocker localement les tuiles récupèrées et ainsi de pouvoir les réutiliser plus tard. Pour ce faire, il suffit de rajouter un bloc « cache » dans le fichier XML (voir la doc pour cela).

Mais je sens déjà la question venir chez tous les habitués des caches… Comment GDAL fait-il pour déterminer les résolutions et la grille à utiliser ? Ah, bonne question. Pour les résolutions, autant le dire tout de suite, il suppose unilatéralement que chaque niveau vaut la moitié du précédent, ou que chaque tuile se subdivise en quatre si vous préférez. C’est l’approche standard, mais si on vous demande du 25k, 20k,15k,10k,5k, ça ne va pas être possible.

Pour les limites de la grille, l’exemple plus haut se base sur une grille standard WGS sur le monde entier, et le TileCount permet de calculer l’emprise des tuiles du premier niveau, puis des niveaux suivants. Pour des emprises plus spécifiques, on peut aussi utiliser TileX et TileY, qui représentent des valeurs à ajouter pour gérer un décalage de la grille sans toucher à l’extent globale.

Les domaines d’application sont nombreux. On peut citer d’emblée :

  • L’intégration de données tuilées dans des clients non prévus pour cela
  • La reprojection de données tuilées
  • L’utilisation de données tuilées à des zooms spécifiques non disponibles
  • L’alignement des grilles de deux ressources tuilées configurées différemment
  • L’exploitation en pur WMS de données lourdes à générer (Open Street Map par exemple)
  • Et sans doute bien d’autres problèmes d’exploitation que l’on rencontre.

Ainsi, ce petit exemple illustre bien, une fois de plus, les étonnantes possiblités offertes par MapServer et GDAL quand ils sont utilisés de concert. Plus que le strict respect des normes, c’est la liberté qu’ils donnent aux utilisateurs pour résoudre leurs problèmes qui est précieuse.