Les fonctions d’export de PostGIS, permettent à partir d’une géométrie de générer des flux textes dans différents formats. Parmi les formats existants, on note SVG, GML (2.1.2 et 3.1.1), KML et GeoJson. Suite à la version 1.3.5 et à l’ajout du support de GeoJson, j’ai commencé à reprendre les différentes fonctions d’export pour homogénéiser leurs comportements, et ensuite reprendre pour certaines l’organisation du code. Un moyen à la fois pratique et concret pour manipuler les différentes structures de données des géométries PostGIS internes, et permettre de faire le lien avec l’application TinyOWS qui réutilise tout ou partie de ces fonctions d’export.
Le Toronto Code Sprint a été l’occasion pour moi de continuer à avancer dans ce process, et faire en sorte d’améliorer encore la qualité et la robustesse du code de ces fonctions. L’ensemble des modifications réalisées étant intégré à la future release 1.4.0 qui doit sortir sous forme d’une première RC dans un avenir très proche.
A l’issue de ces journées, en guise de bilan, a été réalisé, pour les fonctions d’export:
- Une réécriture de l’ensemble de la fonction d’export ST_AsSVG, avec ajout de tests unitaires et de test de non régression. Fonctionnelement, son comportement est très proche de celle de la branche 1.3… sauf qu’elle corrige un bug bloquant sur des aggrégations de géométries volumineuses (GEOMETRYCOLLECTION) avant export SVG.
- L’ajout dans les fonctions d’export GML et GeoJson de la possibilité de générer des CRS dans un format compliant RFC 5165. Ce format est attendu par les units tests de validation OGC (CITE) pour GML, et il est recommandé comme format préférentiel par la spécification GeoJson 1.0. Une évolution suivante sera de pouvoir rajouter la version de la base EPSG utilisée (envisagée pour la 1.5 de PostGIS)
- Une analyse et mise en place de la couche bas niveau permettant d’assurer un futur support des géométries de type Curves pour GML3 et SVG (ces deux formats permettant une description des curves). Un post présente les logiques de représentation Curves pour PostGIS . Pour rappel les curves ne font pas parti de OGC SFS 1.1, mais de ISO/SQL:MM part 3, cette dernière spécification devient le nouvel objectif de PostGIS à terme (à l’horizon de la 2.0).
Un premier prototypage pour GML3 pour les arcstrings et circularstrings a été également réalisé (mais non commité). Il reste en effet encore du travail sur les COMPOUNDCURVE et les curves surfaciques (enchainement de LINESTRING et CIRCULARSTRING).
Pour la prochaine release 1.5 de PostGIS, les fonctions d’import sont également envisagées, i.e pouvoir convertir du GML en Geométrie PostGIS native, et idem pour les KML et le GeoJson…
Bref encore une foultitude de fonctionnalités qui continuent à faire de PostGIS le SGBD spatial de référence en OpenSource.
Merci à Mark, Regina et Paul pour leurs soutiens, conseils et encouragements sur Toronto et sur la mailing list dev ,
Olivier Courtin, GIS Expert, PostGIS Developper