Bonjour à toutes et à tous,

Je me suis récemment posé une question avec FME : Comment géolocaliser des données vectorielles ? Avec Qgis, il semble que cela soit faisable avec ogr2ogr

De mon côté j’ai donc creusé la question et il s’avère qu’il n’y a pas de Transformer tout prêt pour faire ça sous FME. Pour autant, c’est tout à fait faisable et le résultat est très satisfaisant. Je vous propose à travers ce tutoriel, un exercice expliquant pas à pas le traitement à mettre en œuvre pour géo-référencer via 4 points de calage toutes les couches d’un projet FME ayants la même origine.

I] La mission

Admettons qu’un bureau d’étude vous fournisse un fichier Autocad (.dwg) avec plusieurs layers. Ce fichier n’a malheureusement pas été géo-référencé. Avant de pouvoir utiliser ces données, la mission est donc de géo-référencer en Lambert 93. pour rappel, cette projet possède le code EPSG : 2154. La transformation à effectuer peut être schématisée via l’image ci-dessous.

Principe du géo-référencement

II] La réflexion & la préparation

AfiineWarper : le transformer adapté

Après quelques recherches, il s’avère que pour géo-référencer des données  vectorielles sous FME, le transformer AffineWarper est adapté. Ce Transformer est un peu capricieux et nécessite des données particulières en entrée :

  • Il à besoin qu’on lui fournisse au minimum 4 points de calage
  • Ces 4 points doivent être reliés par une ligne
  • Les lignes doivent être créées dans le sens « points non géo-référencés vers ceux qui le sont »

Le fichier de calage

Pour géo-référencer nos données il va être nécessaire de sélectionner 4 points sur le fichier d’origine afin de relever les coordonnées X et Y. Il faudra ensuite faire de même sur un outil vous permettant de vous repérer le plus précisément possible là où les points devraient être au final. Dans l’idéal, il nous faudrait un outil nous donnant les coordonnées sur la projection désirée. Vous pouvez par exemple utiliser l’outil Géoportail sur vue aérienne de qualité comme celle de Bourgogne-Franche-Comté  Ainsi, il est possible de créer nos 4 points de calage assez facilement.

Récupérer les coordonnées en Lambert 93 sur Géoportail

Sur le Géoportail, il est simple de récupérer les coordonnées dans la projection Lambert 93. Il suffit d’aller sur l’icône « outils » puis modifier le système de référence sur « Lambert 93 ».

Afficher coordonnées GPS et autre sous le géoportail

Pour stocker ces informations, j’ai décidé de mon côté de créer deux feuilles dans un fichier .xls (Excel). La première listant les points géo-référencés et la seconde ceux qui ne le sont pas.Il y a 4 colonnes pour chaque feuille :

  • Points (nom du point)
  • x (coordonnée x)
  • y (coordonnée y)
  • Priorite (permet de trier les points dans le processus FME)

Feuille des points géo-référencés

Fichier point de calage des points géo-référencés (SIG)

Feuille des points non géo-référencés

Fichier point de calage des points non géo-référencés (SIG)

III] Action (scripting FME)

Nous sommes maintenant prêt à agir. D’un côté, nous savons comment géo-référencer sur l’ETL FME (via AffineWarper) et de l’autre, nous avons un fichier de calage listant 4 points issus du fichier source et 4 points dans la projection Lambert 93.

Le script FME à développer est plutôt simple au final. Il faut comme d’habitude décomposer le problèmes en sous problème.

Étape 1 : Ajouter vos données sources

Pour ajouter vos données, glissez-déposez le fichier .xls et votre fichier à géo-référencer ou alors passer par Readers > Add Reader. Pensez à annoter ces derniers pour que cela soit plus clair pour vous et pour ceux qui auraient besoin de réutiliser votre script FME.

Données sources FME (readers)

Étape 2 : Créer vos points géo-référencés et ceux qui ne le sont pas

Pour créer des points à partir de coordonnées sous FME, le Transformer VertexCreator doit être utilisé.

Créer des points via des coordonnées sur FME

Son paramétrage est simple, il suffit de lui donner le champ contenant la coordonnée x et le champ contenant la coordonnée y et sélectionner « Add point » dans la liste déroulante « Mode »

Vertexcreator FME, paramétrage ajout de point

Remarquez que VertexCreator est capable de prendre une valeur en Z ce qui permet de créer des points en 3D.

Étape 3 : Trier les points de calage et créer des lignes entre les points

Cette étape est un petit peu plus compliquée car il est nécessaire de créer des lignes entre les points non géo-référencés vers ceux qui le sont. Il faut le faire entre les points portant le même nom. La ligne doit également être créée dans le sens point non géo-référencé (0) point géo-référencé (1).

Pour faire cela, il fallait bien penser le fichier de calage afin d’effectuer un « Group By » par le nom tout en triant en amont les points grâce au champ « priorite »

La création des lignes s’effectue alors facilement avec le Transformer LineBuilder. Le paramétrage prend le champ « Points » dans Connection Break Attributes » ce qui permet de générer une ligne pour chaque nos 4 points de calage. Sans ce paramétrage, le Transformer aurait créé une seule ligne reliant nos 8 points.

Transformer LineBuilder FME pour créer des lignes entre les points

Trier les données

FME propose le Transformer Sorter pour trier les données. Dans notre cas, il est nécessaire de faire un double tri. Le premier sur le champ « Points » et le second sur « priorite ». Ce tri permettra le bon fonctionnement du Transformer AffineWarper.

triers les données avec FME et le transformer Sorter

Étape 4 : Géo-référencer

Voici la dernière étape permettant de géo-référencer nos données vectorielles. AffineWarper n’a pas de paramètre mais il faut que les données soient bien injectées (cf. la partie sur le fichier de calage). Ci-dessous, nous retrouvons une capture d’écran permettant  de géo-référencer des données vectorielles avec l’ETL FME.

Script FME permettant de géo-référencer des données vectorielles

Notre donnée vectorielle est maintenant géo-référencée en Lambert 93.

Données géo-référencées par FME

J’espère que ce tutoriel FME sera utile pour le plus grand nombre. Pour tout projet de valorisation de vos données et géo-données, n’hésitez pas à faire appel à l’expertise de SITDI-France. A bientôt et bonne utilisation de FME !