PointCloudExpressionEvaluator
Cas d'utilisation courants
- Effectuer des calculs sur des valeurs de points individuelles dans un nuage de point
- Mettre à jour des valeurs de composants de nuages de points
- Ajouter de nouveaux composants de nuages de points
Comment fonctionne-t-il ?
PointCloudExpressionEvaluator reçoit des entités nuages de points et évalues les expressions définies en utilisant les valeurs individuelles des composants de chaque points, puis génère une entité nuage de points avec les valeurs calculées appliqués aux composants nouveaux ou existants.
Expressions
Les expressions sont définies dans la colonne de droite du tableau Expression(s) du composant. Chaque ligne du tableau correspond à un composant, qui peut être nouveau ou existant. Les noms des composants peuvent être sélectionnés dans une liste de composants standard ou spécifiés par l'utilisateur.
Le Type de données pour chaque composant est aussi spécifié ici, et il peut être défini pour déterminer automatiquement le type approprié ou pour conserver le type d'un composant existant. Les chaîne de caractères ne sont pas supportées.
Les expressions peuvent être aussi simples qu'une valeur constante ou une simple opération arithmétique. L'éditeur arithmétique est disponible via le bouton Expression ellipsis (...) pour faciliter la construction des expressions. Les composants du nuage de points sont disponibles dans l'éditeur.
Les expressions sont sensibles à la casse.
Exemples
Syntaxe de l'expression
Une expression consiste en une combinaison d'opérandes, d'opérateurs et de parenthèses.
Des espaces peuvent être utilisés entre les opérandes, les opérateurs et les parenthèses mais ils sont ignorés par le processeur d'expression.
Tests à effectuer
Voir Opérateurs mathématiques pour une liste complète et la documentation.
|
Signifie... |
---|---|
|| | Ou |
&& | Et |
== | Egal |
!= | Différent |
< | Inférieur à |
> | Supérieur à |
Opérandes
Les opérandes peuvent être de la forme :
|
Exemple(s) |
Description |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Composant |
@Component(z) @Component(color_red) @Component(return) @Component(<user_component>) |
Une composante d'un nuage de points. Notez que si un composant a une échelle/décalage, la valeur "appliquée" du composant sera utilisée dans l'expression. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Constante |
42 0 13.5 3. 6e4 7.91e+16 |
Une constante numérique, ou entier ou flottant. Quand cela est possible, les constantes numériques sont interprétées comme des valeurs entières; dans le cas contraire, les opérandes seront considérés comme des nombres flottants. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Valeur de l'attribut |
@Value(point_cloud_id) | La valeur d'un attribut, en utilisant la fonction: @Value(). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fonction |
@sqrt(@Component(z)) @if(@Component(z) < 0,0,@Component(z)) |
Une fonction dont les arguments ont l'une des formes ci-dessus pour les opérandes. Les fonctions disponibles sont les suivantes :
Note Voir Fonctions mathématiques pour une liste complète des fonctions mathématiques de FME et la documentation. Toutes les fonctions ne sont pas disponibles dans tous les contextes.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Paramètres privés ou publiés |
$(User_Parameter)
|
Paramètres publiés et privés, y compris les paramètres de l'utilisateur. Voir Créer et modifier un paramètre publié. |
Types de données et dépassements de capacité des données
Ce Transformer tente d'éviter les débordements en changeant les types de données au cours de l'évaluation d'une expression. Par exemple, si deux valeurs UInt8 sont additionnées, les calculs internes seront effectués avec un type UInt16, ce qui garantit qu'aucun débordement ne se produira.
En général, l'exécution d'une opération arithmétique sur des types entiers produira un type entier. La division fait exception à cette règle : elle produit toujours un résultat en virgule flottante. Une opération arithmétique sur des types à virgule flottante produira toujours un type à virgule flottante.
Notez que lors de la conversion entre différents types de données, un Cast borné est utilisé. Par conséquent, lorsqu'une valeur calculée ne tient pas dans le type de données de destination spécifié, la valeur de destination correspondante sera définie sur la valeur minimale ou maximale possible dans le type de données de destination. Par exemple, une valeur de 300, si elle est convertie en un composant entier non signé de 8 bits (UInt8), deviendra 255 (la valeur maximale disponible pour ce type de données).
Dans cet exemple, nous allons calculer les hauteurs au-dessus du sol (AGL) pour un nuage de points LiDAR, dans une zone située près de la côte, proche du niveau de la mer, avec de nombreux immeubles hauts.
Notez que l'entité source, vue ici dans FME Data Inspector de données depuis un angle oblique en 3D, a une composante z représentant l'élévation du point - qui n'est pas nécessairement l'élévation du sol. Les points sont renvoyés au-dessus du sol lorsqu'ils rencontrent des structures et de la végétation.
Nous allons superposer le nuage de points sur un raster d'élévation du MNE afin d'extraire les élévations du sol. Notez que les élévations sont stockées dans la bande 0 de ce raster à bande unique. Les deux jeux de données sont dans le même système de coordonnées et les mêmes unités.
L'opération se déroule en deux étapes. Tout d'abord, le nuage de points et le raster MNE sont acheminés vers un PointCloudOnRasterComponentSetter pour extraire les élévations du sol. Ensuite, l'entité résultante du nuage de points est envoyée à PointCloudExpressionEvaluator pour calculer les hauteurs AGL.
Étape 1 - Extraire les élévations terrain
Dans les paramètres de PointCloudOnRasterComponentSetter, nous réglons Consomposants à définir sur Personnalisé.
Le composant personnalisé est défini dans la table Composants en extrayant les valeurs de Band 0 vers un nouveau composant nommé Elevation. La valeur par défaut est fixée à 0.
Notez que l'entité en sortie du nuage de points a une nouvelle composante : Elévation. Le point sélectionné ici a une valeur z d'environ 97,57 mètres - mais l'élévation du sol à cet endroit n'est que de 4,985 mètres.
Étape 2 - Calculer la hauteur
Dans la boîte de dialogue des paramètres du PointCloudExpressionEvaluator, un nouveau Composant est défini, nommé AGL. Le type de données est défini sur Auto, et une expression est construite pour soustraire l'élévation du sol de l'élévation du point.
L'entité nuage de points générée possède un nouveau composant AGL avec le résultat de l'évaluation de l'expression.
Notes
- Ce Transformer ne prend pas en charge les chaînes de caractères. Pour ajouter des composants de type chaîne, utilisez PointCloudComponentAdder.
- Ce Transformer peut être utilisé pour définir un composant existant à une valeur constante end paramétrant l'expression sur la constante souhaitée.
- L'éditeur arithmétique est disponible à partir du bouton ellipse (...) pour aider à construire des expressions. Voir Éditeur arithmétique pour la documentation complète.
Choisir un Transformer Nuages de points
FME possède une gamme de Transformers spécialisés dans le traitement de données nuages de points.
Pour plus d'informations sur les propriétés et géométrie des nuages de points, vois Nuages de points (IFMEPointCloud).
Combine les entités en un seul nuage de points. Les géométries de nuages de points et de nuages non ponctuels sont prises en charge. |
|
Ajoute de nouveaux composants de valeurs constantes à un nuage de points. |
|
Copie les valeurs des composants sélectionnés dans des composants soit nouveaux soit existants. |
|
Conserve seulement les composants nuages de points spécifiés, supprimant tous les autres. |
|
Supprime les composants spécifiés d'un nuage de points. |
|
Renomme un composant existant. |
|
Modifie le type de données de composants nuages de points et convertit les valeurs des composants si besoin est. |
|
Lit les entités du nuage de points à des fins de test, y compris toute opération accumulée sur le nuage de points. Aucune opération supplémentaire n'est effectuée, et rien n'est fait avec les entités. |
|
Crée un nuage de points selon une taille et une densité avec des valeurs de composants par défaut |
|
Calcule des expressions sur chaque point dans une entité nuage de points, comme des opérations algébriques et des déclarations conditionnelles, et définit les valeurs de chaque composant nuage de points. |
|
Sérialise la géométrie d'une entité raster dans un attribut Blob, encodant le contenu selon un choix de formats nuages de points binaires classiques. |
|
Sépare les nuages de points en plusieurs entités, en se basant sur l'évaluation d'expressions comprenant des valeurs de composants, et crée un port de sortie distinct pour chaque expression définie. |
|
Fusionne les nuages de points en joignant les points où les valeurs des composants sélectionnés correspondent (clé de jonction), y compris les composants x, y, z et autres. Les valeurs des composantes sont transférées entre les nuages de points et la sortie est filtrée en fonction de la réussite de la correspondance et de la duplication. |
|
Définit les valeurs des composantes du nuage de points en superposant un nuage de points sur une trame. Les valeurs des composantes de chaque point sont interpolées à partir des valeurs de la bande à l'emplacement du point. |
|
Extrait les propriétés géométriques d'une entité de nuage de points et les expose en tant qu'attributs, en vérifiant éventuellement leur existence, en récupérant les propriétés des composants et en trouvant les valeurs minimales et maximales. Les étendues peuvent également être recalculées et mises à jour. |
|
Décode un attribut binaire contenant des nuage de points encodés stockés en tant que blobs, puis remplace la géométrie de l’entité avec le nuage de point décodé. |
|
Réduit le nombre de points dans un nuage de points en conservant sélectivement les points en fonction de la forme du nuage de points. Les points simplifiés et supprimés sont produits comme deux nuages de points discrets. |
|
Tri les points d'un nuage de points en fonction des valeurs de ses composants |
|
Découpe un nuage de points en plusieurs entités, chacune ayant des valeurs homogènes pour les composants ayant servi de critère de découpage. |
|
Calcule des statistiques sur les composants des nuages de points et ajoute les résultats sous la forme d'attributs. |
|
Prend un nuage de points en entrée et le reconstruit dans une maille. |
|
Réduit le nombre de points dans (amincit) un nuage de points en conservant les points à un intervalle fixe, un nombre maximum de points, ou une quantité définie de premiers ou de derniers points. Les points restants sont éliminés. |
|
Convertit des nuages de points en points ou géométries multi-points, retenant optionnellement des valeurs d'attributs et composants. |
|
Applique une échelle, un décalage ou une transformation matricielle pour recalculer des valeurs de composants et supprimer des valeurs de transformation |
Configuration
Ports d'entrée
Ce Transformer n'accepte que les entités de type nuage de points.
Ports de sortie
Entités nuages de points avec des valeurs de composants mises à jour ou nouvelles comme spécifié en paramètres.
Les entités non nuages de points sont dirigées vers le port <Rejected>, de même que les nuages de points invalides.
Les entités rejetés auront un attribut fme_rejection_code avec l'une des valeurs suivantes :
INVALID_GEOMETRY_TYPE
INVALID_FEATURE_COMPONENTS
MISSING_FEATURE_COMPONENTS
INVALID_FEATURE_MISSING_ATTRIBUTES
Gestion des entités rejetées : ce paramètre permet d'interrompre la traduction ou de la poursuivre lorsqu'elle rencontre une entité rejetée. Ce paramètre est disponible à la fois comme option par défaut de FME et comme paramètre de traitement.
Paramètres
Composant |
Spécifie le composant à définir par l'expression correspondante. Les noms de composants standard peuvent être sélectionnés dans le menu déroulant. Les noms de composants personnalisés peuvent être saisis directement par l'utilisateur. Les composants peuvent soit exister ou être nouveaux, et seront respectivement soit mis à jour soit créés. |
Méthode |
Sélectionnez le type de composant dans le nuage de points de sortie. Les choix possibles sont les suivants :
|
Expression |
Définir une expression à évaluer. L'éditeur arithmétique est accessible via le bouton ellipse (...) pour vous aider à créer des expressions. Le résultat de cette expression est stocké dans le composant correspondant dans le nuage de points généré. |
Éditer les paramètres des Transformers
À l'aide d'un ensemble d'options de menu, les paramètres du Transformer peuvent être attribués en faisant référence à d'autres éléments de traitement. Des fonctions plus avancées, telles qu'un éditeur avancé et un éditeur arithmétique, sont également disponibles dans certains Transformers. Pour accéder à un menu de ces options, cliquez sur à côté du paramètre applicable. Pour plus d'informations, voir Options de menus et paramètres de Transformer.
Définir les valeurs
Il existe plusieurs façons de définir une valeur à utiliser dans un Transformer. La plus simple est de simplement taper une valeur ou une chaîne de caractères, qui peut inclure des fonctions de différents types comme des références d'attributs, des fonctions mathématiques et de chaînes de caractères, et des paramètres de traitement. Il existe un certain nombre d'outils et de raccourcis qui peuvent aider à construire des valeurs, généralement disponibles dans le menu contextuel déroulant adjacent au champ de valeur.
Utilisation de l'éditeur de texte
L'éditeur de texte fournit un moyen efficace de construire des chaînes de textes (dont les expressions régulières) à partir de données source diverses, telles que des attributs, des paramètres et des constantes, et le résultat est directement utilisé dans le paramètre.
Utilisation de l'éditeur arithmétique
L'éditeur arithmétique fournit un moyen simple de construire des expressions mathématiques à partir de plusieurs données source, telles que des attributs et des fonctions, et le résultat est directement utilisé dans un paramètre.
Valeur conditionnelle
Définit des valeurs selon un ou plusieurs tests.
Fenêtre de définition de conditions
Contenu
Les expressions et chaînes de caractères peuvent inclure des fonctions, caractères, paramètres et plus.
Lors du paramétrage des valeurs - qu'elles soient entrées directement dans un paramètre ou construites en utilisant l'un des éditeurs - les chaînes de caractères et les expressions contenant des fonctions Chaîne de caractères, Math, Date et heure ou Entité FME auront ces fonctions évaluées. Par conséquent, les noms de ces fonctions (sous la forme @<nom_de_fonction>) ne doivent pas être utilisés comme valeurs littérales de chaîne de caractères.
Ces fonctions manipulent les chaînes de caractères. | |
Caractères spéciaux |
Un ensemble de caractères de contrôle est disponible dans l'éditeur de texte. |
Plusieurs fonctions sont disponibles dans les deux éditeurs. | |
Fonctions Date/heure | Les fonctions de dates et heures sont disponibles dans l'Editeur texte. |
Ces opérateur sont disponibles dans l'éditeur arithmétique. | |
Elles retournent des valeurs spécifiques aux entités. | |
Les paramètres FME et spécifiques au traitement peuvent être utilisés. | |
Créer et modifier un paramètre publié | Créer ses propres paramètres éditables. |
Options - Tables
Les Transformers avec des paramètres de style table possèdent des outils additionnels pour remplir et manipuler des valeurs.
Réordonner
|
Activé une fois que vous avez cliqué sur un élément de ligne. Les choix comprennent :
|
Couper, Copier et Coller
|
Activé une fois que vous avez cliqué sur un élément de ligne. Les choix comprennent :
Copier, copier et coller peuvent être utilisés au sein d'un Transformer ou entre Transfromers. |
Filtre
|
Commencez à taper une chaîne de caractères, et la matrice n'affichera que les lignes correspondant à ces caractères. Recherche dans toutes les colonnes. Cela n'affecte que l'affichage des attributs dans le Transformer - cela ne change pas les attributs qui sont sortis. |
Importer
|
Le bouton d'import remplit la table avec un jeu de nouveaux attributs lus depuis un jeu de données. L'application spécifique varie selon les Transformers. |
Réinitialiser/Rafraîchir
|
Réinitialise la table à son état initial, et peut fournir des options additionnelles pour supprimer des entrées invalides. Le comportement varie d'un Transformer à l'autre. |
Note : Tous les outils ne sont pas disponibles dans tous les Transformers.
Références
Comportement |
|
Stockage des entités |
Non |
Dépendances | Aucun |
Alias | |
Historique |
FME Community
FME Community est l'endroit où trouver des démos, des tutoriaux, des articles, des FAQ et bien plus encore. Obtenez des réponses à vos questions, apprenez des autres utilisateurs et suggérez, votez et commentez de nouvelles entités.
Voir tous les résultats à propos de ce Transformer sur FME Community.
Les exemples peuvent contenir des informations sous licence Open Government - Vancouver et/ou Open Government - Canada.
Mots clefs : points, nuages de points, sonar LIDAR