Pentaho Data Integration a toujours autorisé la création de « plugins » permettant d’étendre les fonctionnalités de cet ETL en ajoutant notamment de nouvelles « JobEntries » pour les « Jobs » ou de nouveaux « Steps » pour les « Transformations ». Cette possibilité offerte à l’utilisateur permettait de couvrir nombre de besoins mais il fallait se limiter à la manipulation de données dont le type était nativement reconnu par l’ETL (BigNumber, Binary, Boolean, Date, Integer, Number, String).
pdi_gis_00Dans le contexte de l’information géographique et avec les versions antérieures à la version 5, la manipulation de données spatialisées nécessitait de transformer les géométries pour les exploiter à travers les types standards «String » ou « Binary ». Si cet artifice permettait de transporter tant bien que mal les descriptions géométriques d’objets dans les flux de données elle nécessitait cependant la mise en place de mécanismes particuliers afin de d’assurer notamment la lecture et l’écriture depuis ou vers les bases de données (utilisation de fonctions telles que St_Astext() pour PostGIS ou SDO_UTIL.TO_WKTGEOMETRY() pour Oracle).
Avec l’arrivée de la version 5.0 de Pentaho Data Integration, il devient désormais possible d’étendre les types de données proposés par défaut en ajoutant ses propres types de données basés sur la classe « ValueMetaBase ». Tirant parti de cette nouvelle possibilité, les équipes d’Atol Conseils et Développements ont souhaité enrichir l’ETL Pentaho Data Integration d’un nouveau type de données « Geometry » dédié à la manipulation de l’information géographique. Cette fonctionnalité initialement mise en œuvre pour couvrir les besoins en lecture et en écriture vers ou depuis PostGIS a finalement débouché sur la création de briques complémentaires permettant notamment de lire ou de produire les formats SIG courants, de prendre en compte les systèmes de coordonnées et de proposer quelques fonctionnalités de manipulation de géométries.

pdi_gis_01

Le nouveau type de donnée « Geometry »

Le nouveau type de données « Geometry » permet d’enrichir certaines briques existantes en apportant des fonctionnalités nouvelles en permettant une prise en compte directe dans certaines briques.

La création de géométries depuis une forme textuelle

pdi_gis_02La création d’une géométrie peut se réaliser en saisissant directement la forme textuelle dans les étapes de type « Génération Lignes » ou « Génération données (grille) ». La transformation d’un type « Geometry » vers le type « String » et inversement est également acceptée dans les étapes « Altération structure flux ».Cette conversion permet également de typer la donnée lors de la lecture d’un fichier texte contenant une géométrie encodée au format WKT depuis une étape « Extraction depuis fichier ».

pdi_gis_04

Impact du type « Geometry » sur les briques existantes

Lecture et écriture depuis et vers les bases de données

Actuellement, seuls les SGBD PostgreSQL / PostGIS, Oracle et MySQL sont supportés en lecture et en écriture. Les étapes impactées sont les suivantes :

  • « Extraction depuis table »
  • « Insertion dans table »
  • « Insertion / Mise à jour table »
  • « Mise à jour table »
  • « Jointure Base de données »
  • « Recherche dans Base de données »
  • « Interrogation dynamique d’une BdD »

pdi_gis_05

Les autres étapes telles que « Exécution script SQL », « Exécution script SQL dynamique » ne sont actuellement pas prises en compte.

Prise en compte des géométries dans l’étape « Statistique »

La brique « Agrégation de géométrie » reprends les fonctionnalités proposées par la brique « Agrégation valeurs » mais ajoute les fonctionnalités :

  • de calcul d’étendue de géométries (boîte englobante du flux ou du groupe)
  • de fusion de géométries
  • de création de collection de géométries (MULTIPOINT, MULTILINESTRING,MULTIPOLYGON ou GEOMETRYCOLLECTION)

Cette étape est disponible dans la catégorie « Information géographique »

pdi_gis_06

Nouvelles briques spécifiques à l’information géographique

Ces briques sont regroupées dans la catégorie « Information géographique »

Lecture de formats SIG

La brique « Extraction depuis fichier SIG » autorise la lecture de fichiers SIG dans les formats « ESRI Shapefile », « Mapinfo Interchange Format » et « GeoJSON » et les bases Spatialite. La 3D n’est prise en compte que pour le format « ESRI Shapefile ». En fonction des formats, des options peuvent êtres précisées.

pdi_gis_07

Écriture de formats SIG

La brique « Extraction depuis fichier SIG » permet l’écriture de fichiers SIG dans les formats « ESRI Shapefile », « GeoJSON » , KML et DXF. Ces formats n’autorisant qu’une seule géométrie par entité, il est systématiquement nécessaire de renseigner la colonne « Geometry » du flux à exploiter. A la génération du fichier les autres colonnes de type « Geometry » éventuellement présentes dans le flux sont ignorées.

pdi_gis_08

Prise en compte des systèmes de coordonnées

La brique « Opération avec système de coordonnées » propose 2 fonctionnalités :

  • L’affectation d’un système de coordonnées aux géométries
  • La reprojection des coordonnées d’une géométrie d’un système vers un autre

Le code du système de coordonnées (SRID) affecté à une géométrie doit exister dans la base EPSG mais la reprojection de données autorise des transformations pour les autorités IGNF et ESRI.

pdi_gis_09

Opérations sur les géométries

Les briques « Géotraitement », « Relation spatiale et proximité » et « Information sur géométrie » permettent respectivement de réaliser des opérations entre géométries via les opérateurs « classiques (buffer, union, intersection, etc.), des tests de relation spatiale (est contenu dans, etc.) ou d’obtenir des informations sur une géométrie.

pdi_gis_11

Conclusion

Le développement de ces extensions « spatiales » pour l’ETL Pentaho Data Integration répond à un besoin minimal de prise en compte de l’information géographique au sein de cet ETL et ne cherche en aucun cas à rivaliser en terme de fonctionnalités avec des outils dédiés tels que FME, Spatialitics ETL ou Talend Spatial Data Integrator qui proposent nativement plus de fonctionnalités. Il témoigne cependant des capacités de cet ETL à accepter des modules complémentaires mobilisables en cas de besoins.

Le projet sur github : https://github.com/atolcd/pentaho-gis-plugins