FME et les données Lidar
Cet article présente ce que FME permet concernant les nuages de points, et aussi ce qu’il ne permet pas. S’il n’est pas un outil de traitement complexe de nuages de points, c’est un excellent outil d’organisation et de gestion des données.

(crédit : IGN – https://geoservices.ign.fr/lidarhd)
La technologie de télédétection par laser dite Lidar (light detection and ranging) n’est pas spécialement récente puisqu’elle est employée dès les années 1960, par exemple pour mesurer précisément la distance Terre-Lune. Elle s’est cependant démocratisée depuis une quinzaine d’années pour constituer une solution complémentaire aux procédés de photogrammétrie classiques.
Son adoption a été favorisée par la possibilité d’embarquer les capteurs sur des vecteurs divers, aéroportés (avions, hélicoptères, drones) ou terrestres (trains, voitures…). Les jeux de données issus de ce type de capteurs sont communément nommés nuages de points ou point clouds.
Spécificités et cas d’usage
La caractéristique principale de ces nuages de points est un volume très important d’informations à gérer, l’ordre de grandeur classique du nombre de points présents dans une unité de stockage (fichier) étant de l’ordre de la dizaine de millions de points.
Cette spécificité doit être prise en compte à tous les niveaux par les outils de gestion, sous peine de saturer la mémoire et/ou d’offrir des performances insuffisantes pour la manipulation de jeux de données réalistes.
Outre la grande précision spatiale des mesures effectuées, ce procédé de télédétection présente l’avantage de permettre d’analyser des milieux semi-transparents aux rayonnements, tels que le feuillage pour les milieux arborés ou les plans d’eau peu profonds pour les milieux marins. Les jeux de données sont ainsi particulièrement appréciés dans le domaine archéologique (recherche de vestiges masqués par la végétation) ou océanographique (étude de la bande côtière peu profonde).
Même si des jeux de données étaient disponibles localement, l’engouement général en France pour les nuages de points est apparu avec la disponibilité des jeux de données produits par l’IGN (Institut National de l’Information Géographique et Forestière) dans le cadre du projet national Lidar HD, et par le SHOM (Service Hydrographique et Océanographique de la Marine) dans le cadre du projet Litto3D.
Nature des données
Sans surprise, un nuage de points contient un ensemble d’informations organisées par point. Suivant le capteur, les choix de paramétrage, et les traitements intermédiaires appliqués, les informations peuvent varier, mais on retrouve le plus souvent :
- La position X, Y, Z
- L’intensité du rayon capté
- L’instant correspondant à l’émission du rayon
- Le numéro de retour et le nombre de retours correspondant à un rayon émis
Parmi les autres informations fréquemment présentes, on retrouve :
- Un indice de classification (calculé ultérieurement à l’acquisition par un outil spécifique)
- L’angle formé par le capteur avec la verticale lors de l’acquisition
- Un indice de passage correspondant à une ligne de vol
- Les composantes couleurs RGB (rouge, vert, bleu)
Gestion avec FME
Historique et généralités
Le type géométrique PointCloud est apparu dans FME dès 2011.
Il faut noter que, contrairement aux autres types de géométries gérés par FME, l’API Python de FME ne propose ni classe ni fonction pour manipuler les nuages de points.
Notion de composant
Les informations relatives à chaque point d’un nuage sont modélisées dans FME grâce à la notion de composant (component en anglais). Un composant est le plus souvent de type numérique (entier signé ou non, sur 8, 16 ou 32 bits ; flottant sur 32 ou 64 bits), très rarement de type chaîne de caractères. Il n’existe pas de composant de type liste.
En première approche, on peut imaginer ces composants comme des attributs liés à chaque point.
Visualisation
Deux modes de visualisation sont proposés :
- 2D : vue « du dessus » avec des symboles assez larges pour les points (ce qui nuit à la précision du rendu), mesure possible de distances dans le plan X, Y
- 3D : vue oblique, désignation possible d’un point du nuage pour connaître les valeurs des composants
Les performances sont largement perfectibles, en particulier le calcul préalable des index spatiaux lors de l’initialisation de la vue est assez long.
Transformers spécifiques à la structure des composants
De nombreux Transformers permettent de manipuler la structure des composants, de façon assez similaire à la structure des attributs, de façon à ajouter, supprimer, conserver, copier ou renommer les composants. Il s’agit des Transformers commençant par PointCloudComponent… que vous pouvez retrouver dans la catégorie Nuages de points du Guide des Transformers.
Calculs numériques sur les valeurs de composants
Le Transformer qui permet de réaliser des calculs numériques pour créer ou mettre à jour des composants est PointCloudExpressionEvaluator.
Il fonctionne de manière similaire à ExpressionEvaluator et RasterExpressionEvaluator : seules les valeurs de composants du point courant, les attributs de l’entité ou les paramètres utilisateurs sont accessibles pour les calculs.
Classification
Classifier un nuage de points consiste à calculer pour chaque point la classe d’occupation du sol à laquelle il appartient parmi un ensemble prédéfini comprenant par exemple le sol, le bâti, la végétation, etc. Dans un souci d’efficacité, chaque point se voit attribuer comme valeur de composant classification le code (nombre entier de type UInt8) correspondant à la classe d’occupation du sol auquel il appartient.
Il existe un consensus pour adopter la table proposée par l’ASPRS (American Society for Photogrammetry and Remote Sensing) dans la norme du format LAS.
Aucun algorithme de classification n’est intégré à FME, mais plusieurs Transformers personnalisés sont disponibles sur le FME Hub pour faire appel aux outils de la librairie LASTools. Attention, cette librairie est sujette à licence et doit être installée séparément de FME.
Filtrage, séparation, combinaison
Il est possible de filtrer les points d’un nuage pour ne retenir que ceux dont les valeurs de composants répondent à des critères spécifiques (plages de valeurs, types, formules, …) grâce au PointCloudFilter. De manière similaire au TestFilter, plusieurs ports de sortie peuvent être définis, correspondant à plusieurs conditions.
Le Transformer PointCloudSplitter permet de séparer le nuage en autant de nuages que de valeurs ou de plages de valeurs présentes dans le nuage initial.
A l’inverse, le Transformer PointCloudCombiner permet de combiner plusieurs nuages en un seul nuage (ou plusieurs avec l’option de regroupement par valeur d’attribut). A noter que ce Transformer permet également d’assembler des entités présentant d’autres types de géométries (points, lignes, polygones, rasters) en un nuage.

Fusion de composants suivant des valeurs communes
Le Transformer PointCloudMerger est un Transformer essentiel dans la manipulation de nuages de points. Il permet d’ajouter sur les points d’un nuage Requestor des composants provenant des points d’un autre (ou du même) nuage Supplier sélectionnés en fonction de valeurs de composants communes.
Lorsque des doublons existent dans le nuage Supplier, seuls les composants issus du premier point répondant à tous les critères sont fusionnés. L’ordre des points dans le nuage Supplier est donc important et peut nécessiter un tri préalable (PointCloudSorter).
Réduction du nombre de points
Lorsque le nombre de points d’un nuage est trop important pour permettre son traitement, il est possible de réduire la densité des points de plusieurs manières.
PointCloudSimplifier permet d’éliminer les points les moins significatifs en termes de forme du nuage, par exemple en supprimant des points dans les zones planes. Cette méthode nécessite le calcul d’une surface sous-jacente au nuage pour en respecter la forme générale, elle est donc gourmande en ressources et peut altérer significativement les performances du traitement.
PointCloudThinner permet de ne conserver qu’un sous-ensemble de points selon l’ordre qu’ils occupent dans le nuage (soit les N premiers, soit les N derniers, soit un point tous les N, soit N points régulièrement répartis). Cette méthode est simple et rapide, mais elle peut altérer significativement la forme générale du nuage.
Conversion depuis/vers d’autres types géométriques
Il est possible de convertir un nuage de points en points simple avec l’opérateur PointCloudToPointCoercer. Il convient cependant d’être prudent et d’éviter cette pratique autant que possible, FME n’étant pas prévu pour manipuler des millions d’entités “point”.
De manière générale, il est préférable soit de calculer un Modèle Numérique de Terrain (MNT ou DEM en anglais) à partir du nuage de points (par exemple avec SurfaceModeller), soit, si le nuage de points a une structure de grille, de convertir le nuage en Raster (NumericRasterizer), chaque point devenant un pixel.
A l’inverse, il est possible de convertir en nuage de point des géométries variées, l’exemple le plus fréquent étant de convertir un Raster avec PointCloudCombiner, ce qui permet de créer un nuage de points structuré possédant un point pour chaque pixel d’origine.
FME, un compagnon efficace pour vos traitements de nuages de points
Comme pour le traitement des images, le but de FME n’est pas d’appliquer des algorithmes complexes de traitement de données sur les nuages de points (par exemple de classification), mais d’automatiser la manipulation du contenu en préparation de l’exploitation dans des outils métier dédiés.
FME n’entre donc pas en concurrence avec les suites logicielles de traitement de nuages de points, mais en complément de celles-ci.










