SpatialRelator
Détermine le type de relations spatiales (topologiques) existant entre des ensembles d'entités de type point, ligne, zone et texte. Il marque les entités - mais ne modifie pas leur géométrie - lorsqu'il existe des relations sélectionnées, et effectue une jointure spatiale pour copier éventuellement les attributs entre les entités.
Aller à la configuration
Cas d'utilisation courants
- Identifie quel type de relation(s) spatiale(s) existe(nt) entre entités.
- Effectue une jointure spatiale pour transférer des attributs d'une entité à une autre en se basant sur leur relation spatiale.
Comment fonctionne-t-il ?
SpatialRelator reçoit deux flux d'entités : les demandeurs (port Requestor) et les fournisseurs (pour Supplier). Les demandeurs sont les entités sur lesquelles vous souhaitez identifier des informations, en déterminant la ou les relations spatiales qu'elles entretiennent avec les entités des fournisseurs. Seules les entités Demandeurs sont produites par le Transformer. Les fournisseurs sont utilisés pour effectuer l'analyse, puis rejetés.
Le Transformer peut être configuré pour rechercher un ou plusieurs types spécifiques de relations spatiales, et pour ajouter des attributs des Fournisseurs aux Demandeurs. Ces attributs, ainsi que les détails des relations spatiales, sont (par défaut) ajoutés aux entités du demandeur en tant qu'attributs de liste.
Chaque entité du fournisseur est comparée aux entités du demandeur, en fonction des tests choisis dans le paramètre Prédicats spatiaux à tester. Lorsque l'une des comparaisons est vraie, une entrée est ajoutée à l'attribut liste du demandeur. L'attribut liste n'est créé que pour les entités qui ont une correspondance. Chaque entrée contient :
- La chaîne DE9IM représentant la relation spatiale
- Le nom du type de relation spatiale
- Les attributs du Fournisseur (tous, quelques uns ou aucun, dépendant de votre sélection) obtenus durant la jointure spatiale
Chaque entité Demandeur, qu'elle corresponde à un Fournisseur ou non, reçoit un nouvel attribut contenant un nombre d'entités correspondantes.
En sortie, une entité qui correspond à deux Fournisseurs peut ressembler à cela, en utilisant les noms d'attributs par défaut et en sélectionnant un seul attribut Fournisseur pour inclusion :
SpatialRelator n'altère par la géométrie.
Exemples
Exemple : trouver les relations spatiales entre des lignes et surfaces
Dans cet exemple, nous comparons un ensemble d'entités linéaires (pistes cyclables) avec des polygones représentant des parcs urbains. Les pistes cyclables sont le Demandeur - les entités sur lesquelles nous voulons obtenir des informations - et les parcs sont le Fournisseur auquel ils seront comparés. Seules les pistes cyclables avec des attributs ajoutés seront produites - les parcs seront éliminés après avoir été utilisés pour effectuer l'analyse spatiale.
Dans la fenêtre de paramètres SpatialRelator, nous faisons les sélections suivantes :
Prédicats spatiaux à tester : dans ce cas, on sélectionne les relations spatiales qui nous intéressent :

Générer une liste : la génération d'une liste est le choix par défaut et permet d'ajouter des attributs pour des correspondances multiples. Sous Ajouter à la liste, nous choisissons Attributs sélectionnés, puis nous sélectionnons DogPark et ParkName:

En regardant les résultats dans la fenêtre FME Data Inspector, avec la couche Parks affichée pour référence, nous pouvons voir que tous les segments de chemin ont maintenant un attribut _related_candidates montrant combien d'entités de parc ils correspondent. L'entité 10, mise en évidence en bleu, passe d'un parc à l'autre, et présente donc deux entrées pour INTERSECTS dans son attribut _relations list.
La géométrie de l'entité n'a pas été modifiée.
Notes
- VoirRelations spatiales pour plus d'informations sur les prédicats spatiaux et une illustration des relations spatiales.
- Les relations spatiales dont basées sur les spécifications OGC et ne sont définies ni pour les géométries non valides (selon les critères OGC).
- Les agrégats sont acceptés par un sous-ensemble de prédicats, mais doivent être utilisés avec précaution. Voir Relations spatiales pour plus d'informations.
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.
Matrice de comparaison des Transformers spatiaux
SpatialFilter
|
Oui |
Non |
Non |
Non |
|
- Teste l'existence de relations spatiales entre deux jeux d'entités et les dirige selon la réussite ou l'échec du ou des test(s).
|
SpatialRelator
|
Oui |
Non |
Oui |
Oui |
|
- Identifier la nature des relations spatiales entre deux jeux d'entités.
|
AreaOnAreaOverlayer
|
Oui |
Oui |
Oui |
Oui |
|
- Trouve les superpositions de polygones et les extrait dans une nouvelle géométrie.
|
LineOnAreaOverlayer
|
Oui |
Oui |
Oui |
Oui |
|
- Trouve des intersections entre lignes et polygones et les fractionne en lignes là où elles intersectent les polygones.
|
LineOnLineOverlayer
|
Oui |
Oui |
Oui |
Oui |
|
- Trouver des intersections entre entités linéaires et les fractionner en nouvelles géométries de lignes et points représentant les intersections.
|
PointOnAreaOverlayer
|
Oui |
Non |
Oui |
Oui |
- Point et Surface
- Texte et Surface
|
- Identifie les points qui tombent dans des polygones et fusionne leurs attributs entre eux.
|
PointOnLineOverlayer
|
Oui |
Oui |
Oui |
Oui |
- Point et Courbe
- Texte et Courbe
|
- Identifier où les points tombent sur des lignes et les fractionner en nouvelles géométries.
|
PointOnPointOverlayer
|
Oui |
Non |
Oui |
Oui |
|
- Identifie les points à la même position (selon une tolérance) et fusionne les attributs entre eux.
|
Intersector
|
Oui |
Oui |
Oui |
Oui |
|
- Trouve les intersections entres toutes les entités en entrée quelle que soit leur géométrie (incluant les auto-intersections), fractionne les entités et créer de nouvelles géométries.
|
Clipper
|
Oui |
Oui |
Non |
Non |
- Point
- Texte
- Curve
- Area
- Surface
- Solides
- Raster
- Nuage de points
|
- Compare les entités contre un jeu d'entités Clipper et les fractionne selon ou le long des bordures des entités Clipper. Génère en sortie une géométrie nouvelle et intacte, identifiée comme étant à l'intérieur (port de sortie Inside) ou à l'extérieur (port de sortie Outside) du Clipper.
|
NeighborFinder
|
Oui |
Dans certains cas |
Non |
Oui |
|
- Identifie les entités les plus proches de chaque entité considérée, qu'elle soit dans un autre jeu d'entités ou dans le même.
|
TopologyBuilder
|
Oui |
Oui |
Non |
Oui |
|
- Analyse les relations spatiales entre les entités pour calculer la topologie, fractionner les entités et créer de nouvelles géométries représentant des nœuds, segments et faces topologiquement significatifs avec les attributs associés.
|
* 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.
Effet du choix de Transformer spatial sur les performances
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
Requestor
Les entités ponctuelles, linéaires, surfaciques et textuelles qui peuvent être comparées puis ressortent du Transformer avec une liste définie décrivant les relations.
Supplier
Les entités ponctuelles, linéaires, surfaciques et textuelles qui sont utilisées pour être comparées aux entités Demandeurs mais ressortent pas du Transformer.
Ports de sortie
Output
Entités Demandeurs avec les nouveaux attributs ajoutés. Une entrée de liste est faite pour chacun des Fournisseurs qui a au moins un prédicat correspondant.
<Rejected>
Les entités du demandeur et du fournisseur dont les géométries ne sont pas valides seront rejetées et produites via ce port. Si les prédicats sont fournis par le biais d'un attribut, les entités du fournisseur sans prédicats ou avec des prédicats invalides seront également envoyées via ce port.
Les entités rejetées ont un attribut fme_rejection_code avec l'une des valeurs suivantes :
INVALID_BASE_GEOMETRY_NOT_OGC_VALID
INVALID_BASE_GEOMETRY_TYPE
INVALID_BASE_GEOMETRY_VERTICES
INVALID_CANDIDATE_GEOMETRY_NOT_OGC_VALID
INVALID_CANDIDATE_GEOMETRY_TYPE
INVALID_CANDIDATE_GEOMETRY_VERTICES
INVALID_CANDIDATE_PARAMETER_PREDICATE
INVALID_GEOMETRY_TYPE
MISSING_CANDIDATE_PARAMETER_PREDICATE
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
Traitement par groupe
Regrouper par
|
Ce paramètre est utilisé pour indiquer que seuls les demandeurs et les fournisseurs qui ont la même valeur pour certains attributs doivent être comparés. Les demandeurs et les fournisseurs doivent avoir des noms d'attributs et des valeurs identiques.
|
Traitement des regroupements
|
Sélectionnez le moment du traitement où les groupes sont traités :
Quand toutes les entités sont reçues
|
Comportement par défaut. Le traitement ne se produira dans ce Transformer que lorsque toutes les entrées seront présentes.
|
Quand le groupe change (avancé)
|
Ce Transformer traitera les groupes en entrée dans l'ordre. Les changements de la valeur du paramètre Regrouper par sur le flux d'entrée déclencheront le traitement du groupe en cours de regroupement. Cela peut améliorer la vitesse globale (en particulier avec plusieurs groupes de taille égale), mais peut provoquer un comportement indésirable si les groupes en entrée ne sont pas ordonné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.
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.
|
Tests
Géométries supportées
|
Support des agrégats : (par défaut) Les géométries multiples et agrégées seront prises en charge. Cependant, les seuls prédicats disponibles seront OGC-Contains, OGC-Equals, OGC-Intersects, OGC-Touches et OGC-Within. Les prédicats OGC-Overlaps et OGC-Crosses ne seront pas pris en charge. Les masques à 9 caractères représentant des Matrice à 9 intersections étendue dimensionnellement ne seront pas non plus pris en charge.
Support de tous les prédicats : tous les prédicats décrits dans la pageDéfinitions des relations spatiales seront supportés, sauf OGC-Disjoint. Cependant, les géométries agrégées et multiples ne seront pas prises en charge.
|
Prédicats spatiaux à tester
|
Ce paramètre énumère les prédicats spatiaux qui seront utilisés pour les comparaisons entre les entités Demandeur et Fournisseur. Ceux-ci peuvent être sélectionnés directement dans la liste ou extraits des valeurs d'attributs. Les tests comprennent :
- Requestor OGC-Intersects Supplier
- Requestor OGC-Equals Supplier
- Requestor OGC-Touches Supplier
- Requestor OGC-contient Supplier
- Requestor is OGC-Within Supplier
- Requestor OGC-Crosses Supplier
- Requestor OGC-Overlaps Supplier
Toutes les tests ne sont pas disponibles pour les agrégats et multi-géométries.
Si le mode de support est Supporter tous les prédicats, vous pouvez également tester les relations en utilisant des masques arbitraires à 9 caractères. Ces masques sont constitués des lignes d'une Matrice à 9 intersections étendu dimensionnellement. Notez que pour utiliser ces masques avec SpatialFilter, vous devez les affecter à un attribut des entités candidates et inclure la valeur de cet attribut dans la clause Tests à effectuer (vous ne pouvez pas les spécifier directement). Vous pouvez spécifier plusieurs prédicats dans un attribut en les séparant par un espace.
Notez que ce Transformer ne permet pas l'utilisation d'une matrice représentant une relation disjointe. Cela inclut toute matrice qui a F ou * dans les quatre éléments supérieurs gauches. Si vous souhaitez trouver des entités qui sont disjointes à une autre entité, le Relations spatiales peut être utilisé. Pour plus d'informations sur les prédicats, voir SpatialFilter.
|
Attributs devant différer
|
Le paramètre Attribut devant différer contrôle quels attributs doivent avoir une valeur différente pour que la correspondance soit établie.
|
Règle des limites courbes
|
Ce paramètre indique comment déterminer la limite des géométries de courbes et de multicourbes. La règle par défaut est que tous les points d'extrémité de la courbe qui apparaissent un nombre impair de fois dans l'ensemble de la géométrie seront considérés comme sa limite - c'est-à-dire qu'une boucle linéaire (une ligne dont le point de départ est égal à son point d'arrivée) n'aura pas de limite. L'autre règle précise que la limite de la courbe ou de la multicourbe est l'ensemble de tous ses points d'extrémité.
|
Output
Attribut Nombre de fournisseurs liés
|
Ce paramètre définit le nom d'un attribut ajouté à chaque entité Fournisseur et qui stocke le nombre d'entités Demandeur avec lesquels l'entité de Fournisseur a établi au moins une relation.
|
Calculer la cardinalité des intersections
|
Si Oui, pour chaque Fournisseur correspondant à un Demandeur, trois attributs seront ajoutés à l'entrée de liste correspondante : card_point, card_line, et card_area. Ces attributs comptent le nombre de points, de lignes et de zones qui constituent l'intersection du Demandeur et du Fournisseur. Par exemple, un point est compté si deux polygones se touchent à un sommet, une ligne est comptée s'ils se touchent à une arête et une zone est comptée s'ils se chevauchent.
|
Gestion des attributs
Fusion des attributs
Cocher cette option active les paramètres de gestion des attributs.
Traitement des attributs
|
Fusionner les Fournisseurs : Les attributs de toutes les entités sont fusionnés. Les conflits sont traités en fonction du paramètre Résolution des conflits.
Préfixer les attributs Fournisseurs : tous les attributs Fournisseurs sont préfixés avec la valeur spécifiée dans le paramètre Préfixe.
Remplacer par une entité du port Supplier unique : seuls les attributs Fournisseurs sont utilisés.
|
Résolution de conflit
|
Spécifie la façon dont gérer les conflits d'attributs quand le Traitement des attributs vaut Fusionner les attributs.
Utiliser le demandeur : donne priorité aux attributs Demandeurs.
Utiliser le fournisseurs : donne la priorité aux attributs Fournisseurs.
|
Préfixe
|
Quand le Traitement des attributs vaut Préfixer les fournisseurs, les attributs sont préfixés par la valeur spécifiée.
|
Lorsque des attributs sont fusionnés vers le bas à partir d'entités du fournisseur vers le demandeur, les attributs existants ne sont pas remplacés. Par conséquent, si les fournisseurs et les demandeurs possèdent des attributs portant le même nom, les valeurs ne seront pas transférées vers le bas.
On peut contourner ce problème en renommant, supprimant ou préfixant les attributs pour éviter les conflits de noms. (Voir AttributeManager et BulkAttributeRenamer.)
Génération de liste
Lorsque cette option est cochée, elle active les options de génération de listes. La valeur par défaut est On.
Les attributs de la liste contiendront les valeurs des attributs de relation et de jointure spatiale. Les informations relatives aux relations spatiales sont ajoutées dans ce formulaire :
<LIST_NAME>{i}.de9im = [DE9IM string]
<LIST_NAME>{i}.pass{0} = [true PREDICATE 1]
<LIST_NAME>{i}.pass{1} = [true PREDICATE 2]
...
<LIST_NAME>{i}.pass{n} = [true PREDICATE n+1]
Liste
|
Ce paramètre spécifie le nom de l'attribut de liste qui sera ajouté aux entités Demandeurs.
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 Fournisseurs seront ajoutés aux Demandeurs.
Attributs sélectionnés : active le paramètre Attributs sélectionnés où des attributs spécifiques peuvent être choisis d'un Fournisseur à un Demandeur.
|
Attributs sélectionnés
|
Activé quand Ajouter à la liste est réglé sur Attributs sélectionnés.
Spécifier les attributs que vous souhaitez voir ajoutés des Fournisseurs aux Demandeurs.
|
Nom de l'attribut en sortie
Nombre de fournisseurs liés
|
Nommez cet attribut pour qu'il contienne le nombre de fournisseurs avec lesquels le demandeur avait au moins une relation vraie.
|
É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.
Définir des valeurs de paramètres
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.
Editeur de texte
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.
Éditeur arithmétique
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.
Options - Tables
Les Transformers avec des paramètres de style table possèdent des outils additionnels pour remplir et manipuler des valeurs.
Outils de tableau
Réordonner
|
Activé une fois que vous avez cliqué sur un élément de ligne. Les choix comprennent :
- Ajouter une ligne
- Supprimer une ligne
- Déplacer la ligne en cours au dessus
- Déplacer la ligne en cours en dessous
- Déplacer la ligne en cours en haut de liste
- Déplacer la ligne en cours en bas de liste
|
Couper, Copier et Coller
|
Activé une fois que vous avez cliqué sur un élément de ligne. Les choix comprennent :
- Couper une ligne - supprime et copie dans le presse-papiers.
- Copie une ligne dans le presse-papiers.
- Colle une ligne depuis le presse-papiers.
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
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 .
Les exemples peuvent contenir des informations sous licence Open Government - Vancouver et/ou Open Government - Canada.