PointOnAreaOverlayer
Effectue une superposition de points dans un polygone. Les points peuvent recevoir des attributs de zone contenant, et les zones peuvent recevoir des attributs de point contenant (jointure spatiale).
Utilisations typiques
- Trouver dans quelles surfaces tombe le point
- Trouver quels et combien de points sont contenues dans des surfaces
Comment fonctionne-t-il ?
PointOnAreaOverlayer compare des points et des polygones. Chaque point peut hériter des attributs des polygones dans lequel il est contenu, et chaque polygone peut hériter des attributs des points qu'il contient.
Les intersections entre les entités d'une zone ne sont pas calculées. FME considère les points situés sur la limite d'une zone comme étant "dans", et donc si un point se trouve exactement sur la ligne entre deux polygones, il sera considéré comme étant "dans" les deux zones.
Les agrégats peuvent être soit désagrégés avant le traitement ou rejetés.
Exemples
Dans cet exemple, nous avons un jeu de données de points représentant des restaurateurs et un jeu de données de polygones représentant les quartiers.
Pour trouver dans quel voisinage se trouve un restaurateur, nous connecter les points restaurateurs au port d'entrée Point et les quartiers au port d'entrée Area.
Dans la boîte de dialogue des paramètres, les paramètres par défaut fourniront les bons résultats. Notez que le mode Attribut > Accumulation est réglé sur Incoming, ce qui ajoutera à chaque point les attributs du polygone de voisinage.
En regardant les restaurateurs en sortie, nous voyons que les attributs du quartier englobant a été ajouté.
En observant la sortie des surfaces, l'attribut _overlaps nous indique combien de restaurateurs existent dans chaque quartier.
En utilisant les mêmes points de restaurateurs et polygones de voisinages que précédemment, nous allons aussi construire un attribut de liste qui contient tous les restaurateurs pour un quartier donné.
Dans la fenêtre de paramètres, activez Générer Liste à la sortie 'Area', donnez un nom à la liste et sélectionnez les attributs à inclure.
En observant le résultat, nous pouvons voir que le quartier de Fairview contient 7 restaurateurs, et les noms et descriptions de ces restaurateurs sont contenus dans un attribut de liste.
Notes
- Si vous avez beaucoup d'entités à traiter, vous pouvez améliorer les performances de la superposition en utilisant également le Transformer Clipper. Clipper offre également différentes options pour un point qui tombe exactement sur une ligne. Consultez l'exemple Clipper sur FME Community pour savoir comment utiliser moins de mémoire en utilisant le paramètre Emporte-pièces en premier.
- Si vous avez beaucoup d'entités ponctuelles en particulier, vous pouvez réduire la mémoire utilisée par PointOnAreaOverlayer en utilisant le paramètres Surfaces en premier.
- Notez que les géométries de type Nuage de points ne sont pas supportés par ce Transformer.
- PointOnAreaOverlayer n'a pas d'option de tolérance pour la position.
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 |
|
|
* NOTE: Curve includes Lines, Arcs, and Paths. Area includes Polygons, Donuts, and Ellipses.
Spatial analysis can be processing-intensive, particularly when a large number of features are involved. If you would like to tune the performance of your workspace, this is a good place to start.
Quand il y a plusieurs façons de configurer un espace de travail 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 projet, recherchez des méthodes alternatives, guidées par la géométrie.
Configuration
Ports en entrée
Entités ponctuelles (incluant texte) auxquelles seront comparées les surfaces.
Entités surfaciques auxquelles seront comparés les points.
Ports de sortie
Entités ponctuelles, avec des attributs ajoutés selon la configuration des paramètres du Transformer. La géométrie n'est pas modifiée.
Entités polygonales, avec des attributs ajoutés selon la configuration des paramètres du Transformer. La géométrie n'est pas modifiée.
Les entités avec des géométries invalides sont rejetées et ressortent par ce port.
Les entités rejetées ont un attribut fme_rejection_code avec l'une des valeurs suivantes :
INVALID_POINT_GEOMETRY_TYPE
INVALID_POLYGON_GEOMETRY_TYPE
INVALID_POLYGON_GEOMETRY_VERTICES
INVALID_POLYGON_GEOMETRY_DEGENERATE
EXTRA_POLYGON_FEATURE
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 |
Lorsque toutes les entités sont reçues : comportement par défaut. Le traitement n'aura lieu qu'une fois que toutes les entités en entrée seront présente. 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. 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 projet avec vos données est le seul moyen sûr d'identifier le gain de performance. |
Polygones en premier |
Si l'option Polygones en premier a pour valeur Oui, le calque PointOnAreaOverlayer part du principe que toutes les entités du port Area entrent dans le Transformer avant les entités Point. Cela peut réduire l'utilisation de la mémoire de PointOnAreaOverlayer si vous avez beaucoup d'entités ponctuelles à superposer. Toute autre entité polygonales qui arrive après la première entité de point sera enregistrée avec un avertissement et rejetée. Si le paramètre Traitement des regroupements est défini sur Quand le groupe change, le prérequis Polygones en premier s'applique à chaque groupe séparément. Cela signifie que les entités Area et Point du premier groupe doivent entrer dans le Transformer avant les entités Area et Point du second groupe. |
Gestion des agrégats |
Choisir comment les agrégats de géométries doivent être gérés. Désagréger : décomposent les agrégats en leurs composants individuels. Rejeter : ne pas traiter les agrégats et les sortir via le port <Rejected>. |
Si les attributs des entités entrantes et originales ont le même nom, mais ne sont pas d'attribut de géométrie commençant par fme_, alors ils seront considérés comme en conflit.
Fusion des attributs
Traitement des attributs |
Regrouper les entités entrantes : l'entité originale conservera tous ses attributs non conflictuels et acquerra en plus tous les attributs non conflictuels de l'entité entrante. Ce mode traitera les attributs conflictuels en fonction du paramètre de résolution des conflits. Préfixer les entités entrantes : L'entité originale conservera tous ses attributs. De plus, l'original acquerra des attributs reflétant les attributs de l'entité entrante, avec le nom préfixé par le paramètre Prefix. Remplacer par une seule entité entrante : tous les attributs de l'entité originale seront supprimés, à l'exception des attributs géométriques qui commencent par fme_. Ensuite, tous les attributs d'une entité entrante (arbitraire) seront placés sur l'original. |
Résolution de conflit |
Utiliser les attributs d'origine : si un conflit d'attributs apparaît, les valeurs des entités d'origine sont conservées. Utiliser les attributs des entités appariées : si un conflit d'attributs apparaît, les valeurs des attributs de la liste seront transférées aux entités d'origine. |
Préfixe | Si le paramètre Traitement des attributs vaut Préfixer les éléments entrants , la valeur saisie en paramètre préfixera les attributs ajoutés aux entités d'origine. |
Générer liste dans le port de sortie ‘Point’
Quand activé, ajoute un attribut de liste aux entités sortant du port Point et les attributs de chaque surface comprenant un point en sortie sont ajoutés dans la liste du point.
Aucune intersection des entités surfaciques n'est réalisée.
Nom de la liste ‘Point’ |
Entrer un nom de liste. Note: Les attributs de liste ne sont pas accessibles à partir du schéma de sortie dans 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 'Point' |
Tous les attributs: tous les attributs seront ajoutés aux entités ponctuelles 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 "Points" vaut Attributs sélectionnés. Spécifiez les attributs que vous souhaitez inclure. |
Gérer liste dans le port de sortie 'Surface'
Quand activé, ajoute un attribut de liste aux entités sortant du port Area et les attributs de chaque ligne comprise dans une surface en sortie sont ajoutés à la liste de cette surface.
Aucune intersection des entités surfaciques n'est réalisée.
Nom de liste 'Area' |
Entrer un nom de liste. Note: Les attributs de liste ne sont pas accessibles à partir du schéma de sortie dans 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 'Area' |
Tous les attributs : tous les attributs seront ajoutés aux entités surfaciques 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 "Area" vaut Attributs sélectionnés. Spécifiez les attributs que vous souhaitez inclure. |
Nombre de superpositions |
L'attribut Nombre de superpositions ajouté aux entités ponctuelles contient le nombre de surfaces dans lesquelles ils étaient. Le paramètre Attribut Nombre de superpositions contient le nom de l'attribut ajouté aux entités surfaciques en sortie qui stocke le nombre de superpositions avec les entités ponctuelles. |
É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 du 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 d'espace de travail. 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 projet 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 iest 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.
Rechercher tous les résultats sur ce Transformer sur FME Community.
Les exemples peuvent contenir des informations sous licence Open Government - Vancouver et/ou Open Government - Canada.