Generalizer
Transforme ou mesure des entités géométriques selon l'algorithme spécifié.
Il existe quatre types d'algorithmes disponibles :
-
L'algorithme de généralisation va supprimer des points.
-
L'algorithme de lissage va déterminer une nouvelle position pour chaque vertex.
-
L'algorithme de mesure calcule l'emplacement des points et retourne une liste de ces points (par exemple, pour mesurer la sinuosité d'une entité).
-
L'algorithme Fitting remplace complètement la géométrie originale avec une nouvelle entité selon une ligne spécifique (par exemple, pour minimiser la distance orthogonale à l'originale).
Notes
-
Les géométries nulles entrantes ressortent inchangées.
-
Pour maintenir des topologies impliquant d'autres entités lors d'une généralisation, pensez à utiliser le Transformer SherbendGeneralizer.
Configuration
Ports de sortie
Les entités généralisées sont sorties sur ce port. Elles auront tous les attributs des entités originales.
Toutes les géométries contenant des géométries non "lissables" (comme des solides, surfaces, nulls, ou des géométries dégénérées) ressortent par ce port. Elles auront tous les attributs des entités originales, et un attribut supplémentaire fme_rejection_code.
Paramètres
Regrouper par |
Le comportement par défaut consiste à utiliser l'ensemble des entités d'entrée comme groupe. Cette option vous permet de sélectionner les attributs qui définissent les groupes à former. Chaque ensemble d'entités ayant la même valeur pour tous ces attributs sera traité comme un groupe indépendant. |
||||
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. |
Algorithme |
Le choix de l'algorithme détermine quels paramètres seront activés dans le Transformer. Algorithme de généralisation
DouglasL'algorithme de Douglas-Peucker supprime les sommets qui provoquent une déviation inférieure à la tolérance de généralisation, mais l'emplacement des sommets restants n'est pas modifié. Ainsi, cet algorithme est bon pour réduire le nombre de points d'une ligne, il n'est pas très bon pour préserver la forme ou la relation spatiale de la ligne par rapport à d'autres entités. Lorsqu'il est utilisé sur des polygones, le point de départ n'est jamais supprimé. Paramètres correspondants :
Douglas avec ajustement de l'arcL'algorithme Douglas avec ajustement d'arc effectue les mêmes opérations que l'algorithme de Douglas, mais il tente également d'ajuster des arcs circulaires aux données, ce qui entraîne souvent un nombre réduit de sommets. Tous les arcs ajoutés seront dans la tolérance de généralisation de l'entrée originale. Cet algorithme supprimera toujours un nombre de points supérieur ou égal à celui qui serait supprimé par l'algorithme de Douglas, mais le résultat peut être un IFMEPath au lieu d'un IFMELine. Paramètres correspondants :
ThinL'algorithme Thin supprime les sommets qui se trouvent à une distance inférieure à la tolérance de généralisation d'un sommet adjacent. Les points de début et de fin ne sont jamais déplacés, sauf si la longueur totale de l'entité à amincir est inférieure à la tolérance, auquel cas l'entité est remplacée par une entité ponctuelle contenant la coordonnée finale. Paramètres correspondants :
Thin No PointL'algorithme Thin No Point supprime les sommets qui se trouvent à une distance inférieure à la tolérance de généralisation d'un sommet adjacent. Les points de début et de fin ne sont jamais déplacés, même lorsque la longueur totale de l'entité à amincir est inférieure à la tolérance, auquel cas l'entité est remplacée par une entité linéaire reliant le premier point au dernier point. Paramètres correspondants :
DeveauL'algorithme de Deveau supprime les sommets qui contribuent le moins à la forme globale de l'entité, et peut introduire de nouveaux sommets à des positions qui ne figurent pas à l'origine dans l'entité. Le comportement inhérent de l'algorithme est tel qu'il invalide la coordonnée z des sommets, ainsi que toute mesure. Par conséquent, les entités de sortie seront toujours en 2D et ne comporteront aucune mesure. Le paramètre Facteur de lissage et le paramètre Angulositédoivent être spécifiés. Paramètres correspondants :
WangL'algorithme de Wang élimine et exagère les coudes jusqu'à ce qu'une entité linéaire n'aie plus de virage plus petit que la valeur de tolérance fournie. Paramètres correspondants :
Algorithme de lissage
McMasterL'algorithme de McMaster calcule un nouvel emplacement pour chaque point en prenant d'abord la valeur moyenne des coordonnées x et y du point et d'un certain nombre de points voisins. Il fait ensuite glisser le point moyen vers le point d'origine en fonction d'une valeur de déplacement spécifiée. L'effet global est que chaque point sera tiré vers ses points voisins. Paramètres correspondants :
McMaster Weighted DistanceL'algorithme de distance pondérée de McMaster effectue les mêmes opérations que l'algorithme de McMaster, mais il utilise la pondération inverse de la distance pour prendre en compte la distance entre chaque voisin et le point à déplacer. L'effet global est que les points les plus éloignés auront moins d'"attraction" que les points proches. Le paramètre Coefficient de pondération est utilisé uniquement par l'algorithme de distance pondérée de McMaster. Il est utilisé pour déterminer le poids de chaque point voisin. Note Pour les lignes, les algorithmes de McMaster ne modifient pas les N premiers et derniers points (où N est le nombre de voisins), car ils n'ont pas assez de voisins pour que les calculs de moyenne puissent fonctionner. Pour les polygones, un enveloppement est utilisé pour que chaque point du polygone soit modifié. Dans le cas de polygones adjacents et de l'option Conserver les limites partagées, les parties colinéaires de leurs limites seront lissées ensemble. Les autres parties de leurs limites seront lissées comme des lignes. Cela signifie qu'aucun enveloppement ne sera utilisé pour les polygones adjacents.
Paramètres correspondants :
NURBfitL'algorithme NURBfit ajustera les lignes en utilisant des courbes B-Spline de degré polynomial donné. Les lignes résultantes suivront ces courbes avec une longueur de segment donnée. Plus le degré est élevé, plus la ligne est lisse. Un exemple d'utilisation est le lissage des lignes de contour pour éliminer les pointes et simuler le travail d'un artisan cartographe. Paramètres correspondants :
FilletL'algorithme Fillet remplacera les coins linéaires d'une ligne par des coins en arc avec le rayon Fillet donné. Si un arc avec le rayon de congé spécifié ne tient pas sur un coin, ce coin sera ignoré. Algorithme de Mesure
Point d'inflexionL'algorithme d'inflexion calcule l'emplacement des points d'inflexion le long d'une ligne et renvoie la liste de ces points. Les points d'inflexion sont des mesures de la sinuosité d'une ligne. Paramètres correspondants :
Algorithmes Fitting
Distance orthogonale de régressionCet algorithme remplace la géométrie de l'entité par une ligne qui minimise la distance orthogonale entre elle et les points de la géométrie originale. La distance orthogonale est la plus courte distance (perpendiculaire) entre un point et une ligne. Paramètres correspondants :
|
Tolérance de généralisation |
Ce paramètre est utilisé par les quatre algorithmes de généralisation. Il est mesuré en unités terrestres (unités de mesure des coordonnées de l'entité). La valeur ne peut pas être négative. Note Notez que cette valeur est fournie par le système de coordonnées de l'entité passée dans le Transformer.
|
Préserver les limites communes |
Non : chaque entité sera traitée et généralisée individuellement sans tenir compte des entités voisines. Si les entités de la zone formaient à l'origine une couverture, il y aura des lacunes et des chevauchements dans la couverture. Si vous voulez que la couverture soit maintenue pendant la généralisation des limites de la zone, choisissez Oui. Oui : la topologie de la couverture sera maintenue pendant la généralisation des limites de la zone. La couverture complète des entités de la zone ne doit pas se chevaucher. Si les entités de la zone se chevauchent, vous devez choisir Non, ou utiliser d'abord la fonction AreaOnAreaOverlayer pour créer une couverture. Dans certaines situations, vous pouvez également utiliser le Snapper en mode VERTEX avant, après ou à la place de ce Transformer. Ce Transformer calcule la topologie de la couverture, généralise les arcs individuels, puis recrée les entités de la zone. Cette option prendra plus de temps pour les zones car elle calcule la topologie des arcs/nœuds, généralise les arcs individuels, puis recrée les zones. |
Tolérance des limites partagées |
La distance minimale entre les frontières en 2D avant qu'elles ne soient considérées comme partagées, en unités terrestres. 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. |
Préservation des segments chemins |
Non: les segments chemins peuvent être joints pour créer une nouvelle ligne. Oui: Les chemins segments ne seront pas joints pour former une nouvelle ligne. |
Facteur de lissage |
Ce paramètre contrôle le nombre de coins simultanés considérés lors du flottement des bandes autour des points de l'ensemble. Plus cette valeur est grande, plus la généralisation est agressive. La valeur doit être un nombre entier compris entre 1 et 30. |
Angulosité |
Ce paramètre définit la tolérance pour les pointes qui seront émoussées. Les points de vertex dont l'angle est inférieur à la valeur donnée par les deux points précédents ne sont pas déplacés. L'angle est mesuré en degrés, et doit être compris entre 0,0 et 180,0. |
Nombre de voisins |
Ce paramètre spécifie le nombre de voisins à considérer pour chaque point. Par exemple, une valeur de 2 indique que les 2 points à gauche de chaque point, le point lui-même et les 2 points à droite seront pris en compte. Pour l'algorithme des points d'inflexion, ce paramètre spécifie le nombre de points voisins de chaque côté qui affecteront le calcul de l'inflexion. Un nombre plus élevé a pour effet de lisser la ligne et peut donner lieu à moins de points d'inflexion. La valeur doit être un nombre entier non négatif. Une valeur de 0 signifie qu'il n'y a pas de filtrage. |
Pourcentage de décalage |
Ce paramètre spécifie l'emplacement entre le point d'origine et le point moyen pour déplacer le point. Par exemple, une valeur de 50 placera le point à mi-chemin entre le point moyen et l'emplacement d'origine du point. La valeur doit être comprise entre 0,0 et 100,0. |
Coefficient de pondération |
Ce paramètre est utilisé uniquement par l'algorithme de distance pondérée de McMaster. Il est utilisé pour déterminer le poids de chaque point voisin. La valeur ne peut pas être négative. |
Degré du polynôme |
Ce paramètre spécifie le degré du polynôme utilisé pour approximer la courbe. Plus le degré est élevé, plus la ligne est lisse. La valeur doit être un nombre entier avec une valeur d'au moins 2. |
Longueur de segment |
Ce paramètre spécifie la longueur des segments de sortie. S'il est défini à 0, alors la courbe de sortie aura 10x le nombre de points de l'entrée. La valeur ne peut pas être négative. |
Radius Fillet |
Ce paramètre spécifie le rayon de l'arc à utiliser lors de la génération d'angles arrondis. La valeur doit être un nombre fini supérieur à zéro. |
É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.
Historique
Ce Transformer remplace AreaGeneralizer, AreaSmoother, LineGeneralizer and LineSmoother.
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.
Mots clefs : abstraction "line thinning" "line thin"simplification simplify spike weeding NURBfit Wang Measure fit regression LineGeneralizer AreaGeneralizer AreaSmoother LineSmoother