logo sitdi-france, valorisez vos géo-donnéesBonjour et bienvenue sur le blog SITDI-france, spécialiste dans la valorisation de vos géo-données (CAD et SIG).

Pour faire suite au dernier tutoriel paru sur ce blog qui vous proposait de créer des courbes de niveaux à partir d’un MNT (modèle Numérique de terrain), voici un tutoriel proposant de Drapper une Orthophotographie (Orthophoto) sur un TIN que nous allons générer ) partir de notre MNT.

Si vous avez suivi le tutoriel « courbes de niveaux« , vous avez dans un dossier Result les courbes de niveaux de la commune de Thann et nous souhaiterions pouvoir utiliser ces objets 3D pour appliquer l’altitude à un raster qui serait l’orthophoto de la commune. Sur FME, cette manipulation est simple et requiert seulement deux Transformers !

Information : Si vous souhaitez seulement pratiquer ces exercices, vous trouverez les courbes de niveaux dans ce zip (téléchargement).

Créer un TIN

  1. Ajoutez le Reader SHP des courbes de niveaux de la commune de Thann.
  2. Ajoutez le Writer PDF3D en lui donnant un nom et un dossier où il sera sauvegardé.

A vous de jouer : Essayez de trouver le Transformer nous permettant de générer un TIN.

Le premier transformer permet de générer un TIN à partir de nos courbes de niveaux. Les réseaux triangulés irréguliers (TIN) permettent de représenter numériquement la morphologie d’une surface. Le transformer qui nous intéresse dans notre cas se nomme « TinGenerator ». Il prendra en entrée nos courbes de niveaux dans son port Points/lines et nous utiliserons le port de sortie TIN pour la suite du traitement.

Astuce : Vous pouvez également utiliser le transformer « SurfaceModeller »

Information : Au besoin, pensez à ajouter le transformer 3DForcer et à passer l’attribut « _elevation » dans le champ « Elevation ». Ceci permet à FME de comprendre que l’objet possède bien une dimension 3D et donc une information dans l’attribut « Z ».

A partir de notre TIN nous allons Drapper notre Orthophoto via le Transformer «AppearanceSetter» (qui remplace AppearanceAdder) qu’il faudra paramétrer de cette manière

  1. Dans « Geometry Part Selection/Set appearance on » : Mettre en « Front side »
  2. Dans « Texture Coordinate Generation Parameters/Use Existing Texture Coordinates » Mettre en « From Top View »

Attention : En amont de la connexion des 3 dalles orthophoto, veillez à ne faire qu’une seule dalle grâce au Transformer « RasterMosaicker » sans modifier ses paramètres.

Enfin, ajoutez un Inspector et regardez le résultat en passant en mode 3D dans le logiciel Data Inspector

En cliquant sur le raster dans Data Inspector, il est possible de voir le TIN utilisé pour ce travail

Attention : J’ai détecté que dans la version 2017 de FME Data Inspector il est impossible d’afficher les Raster si vous avez un fond de plan ajouté via la configuration Tools => FME Options => Background Map

Note : La qualité du Raster est dégradée dans Data Inspector, la version PDF sera plus jolie visuellement.

Script Final du drappage (Téléchargement du script FME)

Écriture du PDF 3D

Pour écrire le PDF en 3D et pour éviter qu’il ne soit trop lourd et donc illisible, j’ai été obligé de couper le gros Raster composé des 3 dalles IGN via un clipper. Sur le port « Clippee », connectez le raster sortant du Transformer « RasterMoisaicker » et sur le port « Clipper » connectez le contour de la commune reprojeté au besoin via « Reprojector ».

Résultat du PDF 3D


Bien-sûr, nous pourrions ajouter les bâtiments issus d’OpenStreetMap en 3D en leur appliquant une extrusion, ajouter les routes ou d’autres objets vectoriels pour un rendu encore plus intéressant. Nous pourrions aussi créer un PDF 3D pour toutes les communes du département !

Bonus : Trouver la dalle orthophoto de la commune de Thann

Si vous avez téléchargez toutes les dalles de l’orthophoto du département du Haut-Rhin, vous pourriez avoir du mal à trouver la ou les bonnes dalles à utiliser. Je vous préconise de faire un petit script FME pour trouver la bonne dalle ! Reportez vous ci-après pour découvrir ce bonus.

  1. Ajoutez un Reader « .jpg » en utilisant non pas « Add a file » mais en utilisant la petite flèche puis en cliquant sur « Select multiple Folders/Files » afin d’ajouter le dossier ou se trouve tout vos fichiers « .jp2 ».

Ajout d'un reader Jpeg 2000 dans FME Workbench

Il faut ensuite cliquer sur Folder et sélectionner le dossier qui stocke les fichiers .jp2

Au besoin, pensez à cliquer la case à cocher « Subfolders » si des fichiers se cachent dans les sous dossiers du dossier choisi.

Une fois le Reader ajouté, utilisez le Transformer « SpatialFilter » pour tester la condition « Intersects » entre la couche de votre commune de Thann et ces dalles Orthophoto. Le port « Candidat » du « SpatialFilter » reçoit vos dalles quand le port « Filter » reçoit logiquement votre polygone communal.

Attention : Si vous voyez que cela ne fonctionne pas, posez vous la question de la projection utilisée par les données des communes OSM et des dalles IGN. Dans mon cas, les données OSM sont projetées dans le système WGS84 alors que les dalles sont en Lambert 93. Il faudra donc utiliser le Transformer « Reprojector » pour reprojeter la commune de Thann en Lambert 93.

Information : Sachez que FME dispose d’un Transformer permettant d’extraire la projection : « CoordinateSystemExtractor »

A partir de là et si tout est bien paramétré, nous devrions trouver la ou les dalles qui intersectent notre commune de Thann. Cette information ressortira par le port « Passed » du « SpatialFilter »

Voici les 3 dalles intersectées par la commune de Thann

Copier les dalles et fichiers liés

Si vous allez voir les donnés Raster, vous observez qu’il y a pour chaque dalle, 2 fichiers. Un .tab et un .jp2, il faut donc créer une commande récupérant les 2 fichiers à chaque fois. La commande « .* » sera ici indispensable pour faciliter le travail.

A partir de l’information de l’ attribut de format « fme_dataset », nous pouvons aller chercher les fichiers concernant notre commune.

  • Pour renommer le fichier avec son nom d’origine, nous utiliserons l’attribut « fme_basename »
  • Pour récupérer le chemin du fichier sans le nom de celui-ci, utilisez le transformer « FilenamePartExtractor » via le champ « _dirpath »

Commande COPY générée par StringConcatenator

copy « @Value(_dirpath)@Value(_rootname).* » « C:\Users\loicg\Desktop\Drive SITDI\SITDI-France\EIRL\Formation\FME\01_Débutant\SITDI-France Formation initiation FME 2018\Ressources\Exercices\Exercice raster\Exercice 5\Result\@Value(fme_basename).* »

Le Transformer « SystemCaller » permet ensuite de copier les fichiers .tab et .jp2.

Script FME permettant l’extraction des dalles touchées par la commune de Thann (Téléchargement du script FME)

Logo FME de safe softwareCe tutoriel s’achève et nous espérons avoir réussi de vous convaincre encore une fois de toute la puissance de cet outil ETL spatial qu’est FME.

A bientôt pour d’autres découvertes avec FME et d’ici là, n’hésitez pas à solliciter SITDI-France pour que nous puissions vous aider à valoriser vos géo-données !

Loïc Guénin Randelli, expert ETL FME, SITDI-France