TopologyBuilder
Calcule les relations topologiques à partir d'entités ponctuelles, linéaires et/ou surfaciques en entrée. Le Transformer génère des nœuds, arêtes et faces avec des attributs décrivant leurs relations topologiques.
Cas d'utilisation courants
- Déterminer les relations topologiques entre des ensembles d'entités vectorielles.
- Trouver des intersections
Comment fonctionne-t-il ?
TopologuBuilder calcule les relations topologiques entre points lignes et entités surfaciques.
Les nœuds et les lignes significatifs d'un point de vue topologique sont calculés à l'aide de toutes les entités d'entrée et sortis avec des attributs supplémentaires qui décrivent les relations topologiques. Le TopologyBuilder intersectera les entrées avant de construire la topologie, à condition que le paramètre avancé Générer à partir de soit défini sur Nœuds finaux et intersections. Il prend n'importe quelles données et construit la topologie résultante après avoir calculé toutes les intersections présentes dans les données d'entrée.
Il produit les nœuds (points, port de sortie Node) et les arêtes (lignes, port de sortie Edge) significatifs avec des attributs décrivant leurs relations topologiques. Les faces (zones, port de sortie Face) sont produites avec des informations sur les arêtes qui les forment.
Ce Transformer est typiquement utilisé pour déterminer les relations topologiques permettant de prendre des décisions dans la suite du traitement.
* La ligne rouge indique la direction du flux
Exemples
Dans cet exemple, on traite un réseau de rues qui ne sont pas découpées aux intersections.
Les entités sont orientées dans TopologyBuilder.
Les paramètres par défaut produiront des résultats corrects et utiles. Il est intéressant de noter que le paramètre par défaut de Générer à partir de est laissé comme Nœuds finaux et Intersections, et créera donc des intersections là où les lignes se croisent.
A chaque intersection, les lignes sont découpées et des nœuds sont créés.
Les arêtes (segments de lignes) reçoivent les attributs de relations avec les entités adjacentes.
Notez que ces résultats ont été colorés de manière aléatoire pour illustrer des entités discrètes.
Dans cet exemple, on calcule la topologie d'un ensemble de polygones voisins.
Les polygones sont connectés au TopologyBuilder.
Les arêtes et nœuds topologiques sont ajoutés et une liste d'attributs est créée contenant les informations de relation topologique comme affiché pour ce polygone sélectionné.
Notes
- TopologyBuilder ne corrige pas les données , il recherche uniquement les relations et intersections existantes.
- Bien que les valeurs Z (Altitude) sont stockées dans les entités, elles ne sont pas considérées lors du calcul d'intersections.
Topologie de réseau dans FME
Pour générer avec succès une topologie de réseau, certaines conditions doivent être remplies.
-
Les lignes doivent se toucher (être accrochées) à un vertex de fin - le premier ou le dernier.
-
Les lignes doivent être divisées aux jonctions. TopologyBuilder peut automatiser ce processus, mais il ne prend pas en compte les valeurs z (et peut donc ne pas produire des résultats corrects pour les passages supérieurs et inférieurs, par exemple).
-
Une jonction à un sommet intérieur (et non à un sommet final) produit une arête complexe, qui n'est pas prise en charge.
Choisir un Transformer spatial
De nombreux Transformers peuvent évaluer les relations spatiales et effectuer des jointures spatiales - en analysant la topologie, en fusionnant les attributs et parfois en modifiant la géométrie. En général, le choix de celui qui est le plus spécifique à la tâche que vous devez accomplir fournira les résultats de performance optimaux. S'il existe plus d'une façon de procéder (ce qui est souvent le cas), il peut être utile de consacrer du temps à tester les performances des autres méthodes.
Pour analyser correctement les relations spatiales, toutes les entités doivent être dans le même système de coordonnées. Reprojector peut être utile pour reprojeter des entités dans le traitement.
Transformer |
Peut fusionner des attributs |
Altère la géométrie |
Compte le nombre d'entités liées |
Créé des listes |
Types supportés* |
Recommandé pour |
---|---|---|---|---|---|---|
SpatialFilter | Oui | Non | Non | Non |
|
|
SpatialRelator | Oui | Non | Oui | Oui |
|
|
AreaOnAreaOverlayer | Oui | Oui | Oui | Oui |
|
|
LineOnAreaOverlayer | Oui | Oui | Oui | Oui |
|
|
LineOnLineOverlayer | Oui | Oui | Oui | Oui |
|
|
PointOnAreaOverlayer | Oui | Non | Oui | Oui |
|
|
PointOnLineOverlayer | Oui | Oui | Oui | Oui |
|
|
PointOnPointOverlayer | Oui | Non | Oui | Oui |
|
|
Intersector | Oui | Oui | Oui | Oui |
|
|
Clipper | Oui | Oui | Non | Non |
|
|
NeighborFinder | Oui | Dans certains cas | Non | Oui |
|
|
TopologyBuilder | Oui | Oui | Non | Oui |
|
|
* Notez que les courbes (Curve) comprennent les lignes, les arcs et les chemins. Les surfaces (Area) comprennent les polygones, les polygones troués et les ellipses.
L'analyse spatiale peut nécessiter un traitement intensif, en particulier lorsqu'un grand nombre d'entités sont concernées. Si vous souhaitez améliorer les performances de votre traitement, voici un bon point de départ.
Quand il y a plusieurs façons de configurer un traitement pour atteindre le même but, il est souvent mieux de choisir le Transformer le plus adapté à votre tâche.
Si les performances sont un problème dans votre traitement, recherchez des méthodes alternatives, guidées par la géométrie.
Configuration
Ports en entrée
Ce Transformer accepte les nœuds, lignes et polygones.
Ports de sortie
Chaque primitive topologique ressort avec des attributs décrivant ses relations topologiques. Contrairement à la plupart des Transformers, vous ne pouvez pas nommer ces attributs.
Tous les nœuds significatifs (géométries ponctuelles) ressortent par ce port.
Attribut | Description |
---|---|
_node_number |
Un unique identifiant pour chaque nœud. |
<_edgeslistname>{} |
Si l'option Générer une liste des arêtes entrantes est activée, un attribut de liste décrivant la relation topologique de chaque arête connectée au nœud est ajouté. Les arêtes de cette liste sont ordonnées dans le sens inverse des aiguilles d'une montre. |
<_edgeslistname>{}.fme_arc_id |
L'ID de l'arête connectée à ce nœud. La valeur de l'ID correspond à l'_edge_id de l'arête connectée. Si l'ID est positif, le début de l'arête est connecté au nœud. Si l'ID est négatif, la fin de l'arête est connectée au noeud. |
<_edgeslistname>{}.fme_arc_angle |
Angle de la ligne tangente à l'arête au niveau du nœud. |
Toutes les arêtes significatives ressortent par ce port.
Attribut | Description |
---|---|
_edge_id |
Un unique identifiant pour chaque arête. |
_right_face |
_face_id de la face droite de l'arête. |
_left_face |
_face_id de la face gauche de l'arête. |
_right_edge |
L'_edge_id de l'arête qui est trouvée lorsque l'on voyage le long de cette arête et que l'on tourne à droite au niveau du _to_node. Si l'ID est positif, l'arête droite s'éloigne du noeud _to_node. Si l'ID est négatif, l'arête droite se rapproche du nœud _to_node. |
_left_edge | L'_edge_id de l'arête qui est trouvée lorsque l'on voyage en arrière le long de cette arête et que l'on tourne à droite au _from_node. Si l'ID est positif, l'arête gauche s'éloigne du _from_node. Si l'ID est négatif, l'arête gauche se rapproche du nœud _from_node. |
_from_node | Le numéro de nœud du nœud de début d'arête. |
_to_node | _node_number du nœud au fin de l'arête. |
_faces | Liste, séparée par des virgules, des ID des faces que cette arête borde. La grandeur de l'ID correspond à l'_face_id de la face bordée. Si l'ID est positif, la limite de la face contient cette arête. Si l'ID est négatif, la limite de la face contient l'inverse de cette arête. |
Toutes les faces significatives (géométries surfaciques) ressortent par ce port.
Attribut | Description |
---|---|
_face_id |
Un unique identifiant pour chaque face. |
_faces |
liste des ids_face partageant une arête (séparées par une virgule). |
_perimeter |
Longueur du contour de la face en 2D. |
_area |
Superficie de la face en 2D. |
_edges |
Liste, séparée par des virgules, des ID des bords qui composent l'univers. Une entrée 0 sépare les arêtes de frontières différentes. La grandeur de l'ID correspond à l'_edge_id de l'arête contenue. Si l'ID est positif, l'univers contient cette arête. Si l'ID est négatif, l'univers contient l'inverse de cette arête. Les ID des arêtes sont dans le même ordre que celui dans lequel les arêtes sont utilisées pour créer les limites de l'univers. Note Le paramètre Fournir des arcs englobants sur les faces en sortie modifie le comportement de l'attribut _edges. Pour plus d'informations, consultez la section ci-dessous qui décrit ce paramètre.
|
Les entités surfacique qui par soustraction, représente tout ce qui n'est pas couvert par des faces, ressortent par ce port.
Attribut | Description |
---|---|
_face_id |
Identifiant unique de face est toujours 0. |
_perimeter |
Longueur du contour de l'entité Universe en 2D. |
_area |
Superficie de l'entité universe en 2D. |
_edges |
Liste, séparée par des virgules, des ID des bords qui composent l'univers. Une entrée 0 sépare les arêtes de frontières différentes. La grandeur de l'ID correspond à l'_edge_id de l'arête contenue. Si l'ID est positif, l'univers contient cette arête. Si l'ID est négatif, l'univers contient l'inverse de cette arête. Les ID des arêtes sont dans le même ordre que celui dans lequel les arêtes sont utilisées pour créer les limites de l'univers. Note Le paramètre Fournir des arcs englobants sur les faces en sortie modifie le comportement de l'attribut _edges. Pour plus d'informations, consultez la section ci-dessous qui décrit ce paramètre.
|
Les entités sans géométrie de type point, texte, courbe ou surfacique ressortent par ce port avec un attribut complémentaire fme_rejection_code indiquant la raison du rejet.
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
Regrouper par |
Le comportement par défaut consiste à utiliser l'ensemble des entités comme groupe. Cette option vous permet de sélectionner les attributs qui définissent les groupes à former. |
||||
Traitement des regroupements |
Sélectionnez le moment du traitement où les groupes sont traités :
Considérations sur l'utilisation de Regrouper par
Il y a deux raisons typiques d'utiliser Quand le groupe change (avancé). La première concerne les données entrantes qui sont destinées à être traitées en groupes (et qui sont déjà classées ainsi). Dans ce cas, c'est la structure qui dicte l'utilisation de Regrouper par - et non des considérations de performance. La seconde raison possible est le potentiel gain de performances. Les gains de performance sont plus visibles quand les données sont déjà triées (ou lues en utilisant une déclaration SQL ORDER BY) puisque moins de travail est requis de la part de FME. Si les données doivent être ordonnées, elles peuvent être triées dans le traitement (bien que la surcharge de traitement supplémentaire puisse annuler tout gain). Le tri devient plus difficile en fonction du nombre de flux de données. Il peut être quasiment impossible de trier des flux de données multiples dans l'ordre correct, car toutes les entités correspondant à une valeur Regrouper par doivent arriver avant toute entité (de tout type d'entité ou jeu de données) appartenant au groupe suivant. Dans ce cas, l'utilisation de Regrouper par avec Lorsque toutes les entités sont reçues peut être une approche équivalente et plus simple. Note De multiples types d'entités et entités de multiples jeux de données ne vont généralement pas arriver dans l'ordre correct.
Comme pour beaucoup de scénarios, tester différentes approches dans votre traitement avec vos données est le seul moyen sûr d'identifier le gain de performance. |
Nombre max. de coordonnées par arête |
Le nombre indique la longueur maximale pour la sortie d'un bord. Si une ligne contient plus que ce nombre de coordonnées, elle sera divisée en morceaux qui seront produits séparément, chacun avec son propre ID d'arête, et correctement nodé. Une valeur de 0 indique un nombre illimité de coordonnées par bord. |
Grouper les attributs des entités superposées en entrée |
Si ce paramètre vaut oui, le Transformer entre dans un mode où aucune ligne colinéaire ou point superposés ne sont générés, bien qu'ils proviennent d'entité linéaire ou de limite d'entité surfacique ou de point. Dans ce mode, toutes les arêtes ou nœuds de sortie qui étaient en chevauchement avec au moins une entrée directe contiendront un attribut de liste (_overlapping_input_data) avec des informations sur chaque entrée avec laquelle il était en chevauchement. Ce mot-clé définit le nom de champ de l'attribut de liste pour qu'il contienne tous les attributs (à l'exception des attributs géométriques qui commencent par fme_) de toutes les lignes ou points d'entrée qui étaient en chevauchement avec l'arête ou le nœud de sortie final. Un effet secondaire de cette option est que seules les arêtes qui font partie d'une limite de face seront prises en compte dans le calcul de _left_edge et _right_edge. (Toutes les arêtes provenant uniquement de l'entrée de la ligne auront leur propre ID fourni comme ID d'arête gauche, et la négation de celui-ci comme ID d'arête droite). |
Fournir tous les arcs des polygones en sortie |
Tout :
Le premier arc par limite :
Le premier arc par limite intérieures disjointe et extérieure:
|
Gestion des agrégats |
Désagréger : Tous les agrégats d'entrée seront désagrégés, et chaque partie fractionnée sera traitée indépendamment. Avec ce paramètre, le Transformer peut produire plus d'entités que celles qui ont été données en entrée. Rejeter: tous les agrégats en entrée seront rejetés. |
Générer liste depuis les nœuds entrants |
Donne l'option de créer une liste dans les ports de sortie Face et Edge liées aux informations des nœuds en entrée. |
Générer liste depuis les arêtes entrantes |
Donne l'option de créer une liste dans les ports de sortie Node et Face liées aux informations des courbes en entrée. |
Générer liste depuis les faces entrantes |
Donne l'option de créer une liste dans les ports de sortie Node et Edge liées aux informations des faces en entrée. |
Préserver les arêtes internes |
Si Oui, les "cycles" de coordonnées au sein d'une face sont autorisés et seront préservés. Un "cycle" est une arête qui apparaît deux fois dans la limite de la même face (une fois dans chaque direction) ; l'ID de l'arête apparaîtra deux fois dans la liste des arêtes de cette face, positive dans un cas et négative dans l'autre. |
Générer depuis |
Nœud finaux et segments colinéaires : les nœuds de topologie qui seront placés aux nœuds finaux et à la fin des segments colinéaires dont les nœuds finaux sont présent dans les deux géométries en entrée. Nœud finaux et intersections (défaut) : de nouveaux points seront ajoutés aux géométries où les intersections ont lieu, si nécessaire, avant de construire la topologie depuis tous les nœuds partagés et les nœuds finaux. Uniquement les nœud finaux : la topologie sera générée depuis les nœuds finaux existants. |
Tolérance |
Ce paramètre est seulement utilisé quand Générer depuis est défini sur Nœuds finaux et intersections. La distance minimale entre les géométries en 2D avant qu'elles ne soient considérées comme égales, en unités terrestres. Si la tolérance est Aucune, les géométries doivent être exactement identiques pour être considérées comme égales. Si la tolérance est Automatique, une tolérance sera automatiquement calculée en fonction de l'emplacement des géométries saisies. En outre, une tolérance personnalisée peut être utilisée. |
É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 |
Oui |
Dépendances | |
Alias | Topologizer |
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.