SpatialFilter
Filtre des entités points, lignes, surfaciques et texte selon des relations spatiales définies en paramètres.
Chaque entité candidate en entrée est comparée à toutes les entités du filtre, en fonction des tests spatiaux à remplir. Les entités qui réussissent l'un ou l'autre des tests sont produites par le port Passed ; toutes les autres entités sont produites par le port Failed.
Cas d'utilisations typiques
- Diriger des entités selon que la définition de la relation spatiale soit vraie ou fausse.
- Effectuer un contrôle qualité d'un jeu de données en vérifiant ses relations spatiales avec un autre jeu de données.
- Effectuer une jointure spatiale pour transférer des attributs d'une entité à une autre en se basant sur leur relation spatiale.
Comment fonctionne-t-il ?
SpatialFilter compare deux ensembles d'entités pour voir si leurs relations spatiales répondent à certaines conditions de test. Les entités testées (entités candidates) sont identifiées comme ayant réussi ou échoué le test.
Par exemple, si vous avez un jeu de données de routes (lignes) et voulez extraire toutes les routes qui passent par des parcs (polygones), vous redirigeriez les routes dans le port d'entrée Candidate et les parcs dans le port d'entrée Filter.
En sélectionnant les conditions de test Filter OGC-Intersects Candidate et Filter OGC-Contains Candidate, toutes les lignes routières qui se trouvent à l'intérieur des parcs ou qui les croisent sont émises via le port de sortie Passed, et les autres sont émises via le port de sortie Failed. Vous pouvez simultanément extraire un attribut du polygone du parc - le nom du parc, par exemple - et l'ajouter à l'entité ligne.
Exemples
Dans cet exemple, nous identifions les points d'adresse qui ne sont pas contenus par une empreinte de bâtiment. Les résultats peuvent être utilisés pour trouver les mauvais points d'adresse ou identifier les polygones de bâtiments manquants.
Les deux jeux de données source ressemblent à cela :
Les points d'adresse - le jeu de données à tester - sont connectés au port d'entrée Candidate. Les empreintes des bâtiments sont connectées au port Filter, et fournissent la géométrie par rapport à laquelle les points d'adresse seront testés.
Dans la fenêtre de dialogue SpatialFilter, nous faisons les sélections suivantes :
- Type de filtre : Plusieurs filtres Il y a plusieurs polygones de bâtiments que nous voulons tester.
- Critères de réussite : Pour au moins un filtre . Chaque point d'adresse ne doit se trouver qu'à l'intérieur d'un seul polygone, et non de tous les polygones.
- Prédicats spatiaux à tester : Filter OGC-Contains Candidate. Nous voulons vérifier si chaque candidat (point d'adresse) est compris dans un filtre (polygone de construction).
Ce sont les paramètres clés - les autres sont laissés par défaut pour cet exemple.
Les adresses qui passent le test - qui se trouvent à l'intérieur d'un polygone - sont envoyées vers le port Passed, et ont un nouvel attribut appelé _predicate, défini sur "CONTAINS".
Les points d'adresse qui échouent au test - qui sont en dehors de tous les polygones - sont envoyés par le port Failed. Les résultats, avec le style appliqué dans FME Data Inspector, ressemblent à ceci :
Notes
- Voir Relations spatiales pour plus d'informations sur les prédicats spatiaux et une illustration des relations spatiales.
- Les relations spatiales sont basées sur la spécification de l'OGC et sont donc indéfinies pour les géométries qui ne sont pas valides pour l'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.
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
Les entités de type point, ligne, surface et texte auxquelles les entités du pote Candidate seront comparés. Ces entités ne sont pas produites.
Les entités de type point, ligne, surface et texte comparées aux entités Filter.
Ports de sortie
Entités Candidates qui rencontre avec succès les conditions de texte sélectionnées dans le fenêtre de paramètres.
Entités Candidates qui ne répondent pas à ces conditions de test.
Les entités des ports Filter et Candidate dont les géométries ne sont pas valides seront rejetées et émises via ce port. Si les prédicats sont fournis par le biais d'un attribut, les entités candidates 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 :
EXTRA_BASE_FEATURE
INVALID_BASE_GEOMETRY_NOT_OGC_VALID
INVALID_BASE_GEOMETRY_TYPE
INVALID_CANDIDATE_GEOMETRY_NOT_OGC_VALID
INVALID_CANDIDATE_GEOMETRY_TYPE
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
Regrouper par |
Si les attributs Regrouper par sont spécifiés, les candidats sont uniquement comparés aux filtres ayant les mêmes valeurs dans ces attributs. Les candidats et les filtres 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 :
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. |
Type de filtre |
Le paramètre Type de filtre définit si une seule entité de Filtre est fournie ou si plusieurs entités sont utilisées.
|
Règle de validation |
Spécifie si une entité Candidate doit avoir un prédicat correspondant face à toutes les entités Filtres ou contre au moins une. |
Géométries supportées |
Supporter les agrégats - les géométries multis et agrégées seront prises en charge. Cependant, les seuls prédicats pris en charge seront OGC-Contains, OGC-Disjoint, 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 Matrices à 9 intersections étendues dimensionnellement étendues ne seront pas non plus pris en charge. Supporter tous les prédicats - tous les prédicats décrits dans la page Relations spatiales seront supportés. Cependant, les géométries agrégées et multiples ne seront pas prises en charge. |
Prédicats spatiaux à tester |
Définit les tests à effectuer. Les choix possibles sont les suivants :
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. Pour plus d'informations sur les prédicats, voir Relations spatiales. |
Utiliser le rectangle englobant |
Ce paramètre définit si les tests doivent être réalisés en utilisant les coordonnées exactes des entités Candidates ou leur rectangle englobant. |
Règle des limites courbes |
Cet attribut spécifie comment déterminer la limite des géométries de type courbe et multicourbe. 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 spécifie que la limite de la courbe ou de la multicourbe est l'ensemble de tous ses points d'extrémité. |
Définit si la fusion des attributs aura lieu. Si cette option est activée, chaque candidat qui correspond à un filtre reçoit les attributs de ce filtre. Le résultat est une opération connue sous le nom de jointure spatiale.
Traitement des attributs |
Activé si l'on fusionne des attributs. Les options comprennent :
|
Résolution de conflit |
Activé si l'on fusionne des attributs. Les options comprennent :
|
Préfixe |
Activé si la fusion des attributs et le mode d'accumulation sont définis sur Préfixe le filtre. Définit un préfixe à ajouter à tous les attributs qui sont fusionnés des Filtres aux Candidats. |
Conserver l'ordre des entités |
Ce paramètre contrôle l'ordre dans lequel les entités quittent un Transformer. Lorsqu'un Transformer a plus d'un port de sortie, les entités sortent généralement d'un port à la fois. Parfois, il peut être utile de garder l'ordre dans lequel les entités sont arrivées, en passant d'un port à l'autre si nécessaire. Cela permet de préserver l'ordre des entités, mais au prix d'une perte potentielle d'efficacité du traitement. Sélectionner une méthode pour l'ordre des entités :
|
Prédicat |
Nom de l'attribut devant contenir le nom du test spatial que l'entité a réussi. |
É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.