Intersector
Calcule les intersections entre toutes les entités en entrée, en découpant les lignes et les polygones partout où une intersection se produit et en créant des nœuds à ces endroits. Les segments qui se chevauchent sont réduits à un seul segment avant d'être édités.
Cas d'utilisations typiques
- Identification des intersections dans un jeu de données
- Réduction de la géométrie en segments de lignes
- Intersection d'entités linéaires aux jonctions pour créer une topologie propre
- Découpe des dépassements à leur intersection
- Création de points (nodes) aux intersections pour trouver des entités semblables
Comment fonctionne-t-il ?
Intersector prend toutes les entités d'entrée et les compare les unes aux autres. Les entités sont divisées partout où il y a une intersection. Les entités divisées reçoivent les attributs des entités qui se croisent (une jointure spatiale), et le nombre de chevauchements rencontrés et de segments créés est compté.
Les segments intersectés sont édités, ainsi que les nœuds (entités ponctuelles) placés à l'emplacement de chaque intersection. En option, il est possible de créer un attribut de liste qui conservera les attributs pour les correspondances multiples.
Les agrégats peuvent être soit désagrégés avant le traitement ou rejetés.
Exemples
Dans cet exemple, nous partons d'un ensemble de polygones de parc et de lignes de pistes cyclables, et nous voulons diviser les polygones là où les lignes les croisent. Pour ce faire, nous allons d'abord utiliser l'Intersector, puis construire les zones segmentées.
La première étape est de diriger les deux jeux de données dans un Intersector.
Les paramètres par défaut produiront le résultat que nous souhaitons.
Intersector réduit tous les types de géométries à des segments de lignes et créé des nodes aux points d'intersection.
En guidant seulement les entités intersectées dans un Transformer AreaBuilder et en filtrant uniquement les Parcs, nous finissons avec des polygones de parcs fractionnés là où les pistes cyclables les traversent.
Dans cet exemple, nous commençons avec un jeu de données de lignes centrales de rues. La géométrie des rues est aussi contiguë que possible - les segments de ligne ne sont pas interrompus aux intersections, comme on le voit ici avec une rue sélectionnée surlignée en jaune. Nous voulons créer des intersections, et trouver quelles rues se croisent à ces intersections, en utilisant un attribut de liste.
Le jeu de données de rues est dirigé vers Intersector.
Dans la boîte de dialogue Paramètres de l'Intersector, l'option Générer une liste est activée. La liste est nommée Intersections, et un attribut sélectionné - NAME - sera capturé dans la nouvelle liste.
À chaque intersection des lignes, celles-ci sont divisées, et un nœud est placé à l'intersection. Les nœuds ont une liste appelée Intersections, qui contient l'attribut NAME que nous avons demandé, ainsi que l'angle et la direction de la ligne à laquelle il fait référence.
Le nœud sélectionné ici a quatre éléments dans la liste, car quatre segments de ligne convergent en ce point - Broughton St entrant et sortant, et Alberni St entrant et sortant.
Les listes peuvent être manipulées plus en détails, voir A propos des attributs de liste.
Notes
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 d'entrée
Entités à comparer pour les intersections. Les entités de type point, ligne et zone sont prises en charge.
Ports de sortie
Les entités intersectées sont sorties sur ce port. Si le paramètre Nom de liste a été spécifié, ces entités auront un attribut contenant leur nombre d'entités d'entrée superposées. Elles auront également tous les attributs des entités d'origine.
Par exemple, une situation où deux lignes (qui se croisent) représentent des routes, où une route est un viaduc au-dessus de l'autre route. avec des élévations différentes.
Les entités plus petites que la valeur de tolérance sont réduites en un point et sont envoyées à ce port.
Toutes les entités de type surface, solide, raster et nuage de points ressortent via ce port.
Les entités dont la projection sur le plan xy n'est pas finie (c'est-à-dire les coordonnées nan ou infini) sont également sorties de ce port.
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. |
Tolérance |
La distance minimum entre les géométries 2D avant qu'elles ne soient considérées égales, en unités terrain. Si la tolérance est Automatique, une tolérance sera automatiquement calculée en fonction de l'emplacement des géométries d'entrée. En outre, une tolérance personnalisée peut être utilisée. |
Dupliquer les nœuds pour chaque Z |
La création de nœuds peut être calculée en 3D, si on le demande. La création de nœuds en 3D signifie que les segments de ligne ne partagent un nœud que s'ils ont la même valeur Z au point d'intersection. La création de nœuds en 2D signifie que tous les segments qui se croisent partagent un nœud commun, indépendamment de leurs valeurs Z respectives. Par exemple, une situation où deux lignes (qui se croisent) représentent des routes, où une route est un viaduc au-dessus de l'autre route. avec des élévations différentes. Si vous avez construit des nœuds en 3D, ces deux routes ne seront pas liées par un même nœud. Deux nœuds seraient produits au point de croisement, chacun avec une valeur Z différente. Si vous avez construit des nœuds en 2D, alors ces lignes seront liées à un nœud commun situé à l'emplacement de leur croisement. Dans les deux cas 2D et 3D , les dimensions de l'entrée sont conservées dans la sortie - les entités 3D ne sont jamais converties en 2 D. Le choix de la 2D ou 3D indique seulement la manière dont les nœuds sont créés et quelles lignes sont connectées à ces derniers, il n'affecte pas la dimension des entités en sortie. Oui - Lorsque des lignes 3D se croisent à des hauteurs différentes, deux nœuds 2D sont émis via le port Node. Chaque nœud aura les mêmes coordonnées x et y, mais un numéro de nœud différent. Non - à chaque fois que des lignes 3D s'intersectent à différentes hauteurs, une seule node 2D ressortira au point d'intersection. |
Distinguer les segments colinéaires |
Si Oui - fait en sorte que les segments qui se chevauchent ne soient pas fusionnés en un seul segment : une copie est produite pour chaque entité originale partageant le segment. Chacun de ces segments aura les attributs de l'entité originale respective comme attributs principaux, et les attributs de toutes les autres entités colinéaires seront ajoutés comme attributs de liste, si le nom de liste a été fourni. Quand une couverture de polygones est traitée, l'ensemble des lignes topologiquement significatives qui forment leurs bordures est produite. |
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. |
Traiter les mesures comme |
Quand de nouvelles coordonnées sont ajoutées en raison de l'intersection, les mesures à ces coordonnées sont déterminées depuis les coordonnées existantes. Continu : les nouvelles mesures seront calculées depuis une interpolation linéaire dans les coordonnées voisines le long de ce segment. Discret : les mesures seront définies selon les mesures des coordonnées les plus proches le long du segment intersecté. |
Direction
|
Nom de l'attribut facultatif à inclure dans les listes générées. Sur les entités de segment, indique si les attributs à cette entrée de la liste proviennent d'une entité colinéaire qui avait la "même" ou la "direction opposée" que l'entité de sortie. Sur les entités de nœuds, indique si les attributs de cette entrée de la liste proviennent d'une entité de segment "sortante" du nœud ou "entrante" du nœud. |
Nombre de superpositions |
Nom de l'attribut qui contient le nombre de lignes d'entrée colinéaires qui se superposent au segment de sortie. |
Nombre de segments |
Nom de l'attribut qui contient le nombre de segments en lesquels l'entité d'origine du segment a été divisée. Si l'entité en entrée a été découpée en n segments, chacun de ces derniers aura un attribut nommé <attribute name> qui aura une valeur de n. |
Numéro de nœud |
Nom de l'attribut qui contient un ID unique pour chaque nœud topologiquement significatif. |
Traitement des attributs |
Spécifie comment les attributs source doivent être traités. Supprimer les attributs : tous les attributs entrant sont supprimés des entités. Regrouper les attributs : fusionne tous les attributs des segments se superposant. Utiliser les attributs d'une entité : prend tous les attributs d'une entité représentative |
Préfixe |
Lorsque l'option Séparer les segments colinéaires est Oui et que le mode de traitement des attributs est Fusionner les attributs, cette valeur préfixe tous les attributs entrants sur les segments colinéaires. Elle n'affecte pas la sortie des nœuds (points). |
Génération de liste
Lorsqu'il est activé, ajoute un attribut de liste aux entités de sortie, et les attributs des entités qui se croisent sont ajoutés à la liste. Les nœuds recevront les attributs de liste de toutes les entités qui se croisent, y compris la direction et l'angle.
Liste |
Entrer un nom de liste. Note Les attributs de liste ne sont pas accessibles à partir du schéma de sortie dans FME Workbench, sauf s'ils sont d'abord traités à l'aide d'un Transformer qui opère sur eux, comme ListExploder ou ListConcatenator. Il est également possible d'utiliser AttributeExposer.
|
Ajouter à la liste |
Tous les attributs: tous les attributs seront ajoutés aux entités en sortie. Attributs sélectionnés: Active le paramètre Attributs sélectionnés où des attributs spécifiques peuvent être choisis pour inclusion. |
Attributs sélectionnés |
Activé lorsque l'option Ajouter à la liste est définie sur Attributs sélectionnés. Indiquez les attributs que vous souhaitez inclure. |
É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 | |
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.