SherbendGeneralizer
Sherbend est un algorithme qui simplifie les lignes en supprimant des détails en fonction d'une analyse des courbes des lignes.
Sherbend est un algorithme basé sur des contraintes qui préserve la relation spatiale des lignes et des points dans les données d'entrée. L'algorithme Sherbend généralise itérativement les courbes d'une ligne en utilisant le paramètre Diamètre pour sélectionner les courbes à généraliser. Le processus de généralisation peut éliminer, réduire ou combiner les courbes, tout en résolvant les conflits.
Stratégie pour la généralisation des courbes d'une ligne :
- Calculer la superficie du cercle de référence dont le diamètre est spécifié dans le paramètre Diamètre.
- Pour chaque ligne, déterminer l'emplacement des courbes.
- Pour chaque coude, calculez son périmètre. Ensuite, construisez un cercle dont la circonférence est égale à ce périmètre. Enfin, déterminez l'aire ajustée du coude, qui correspond à 75 % de l'aire de ce cercle.
- Pour chaque courbe, généraliser la courbe si sa superficie est en dessous de la superficie de cercle de référence et les contraintes spatiales seront remplies.
- Répéter les étapes précédentes jusqu'à qu' il n'y ait plus de courbe à généraliser.
Informations complémentaires
Le but de la généralisation des lignes est de réduire les détails d'une ligne pour la représenter à une échelle plus petite. Si le célèbre algorithme de Douglas-Peucker est efficace pour réduire le nombre de points d'une ligne, il ne l'est pas pour supprimer les détails inutiles. Le Transformer Generalizer contient une sélection d'algorithmes sous ses paramètres, dont l'algorithme de Douglas-Peucker.
En comparaison, l'algorithme de Sherbend est bien adapté à la généralisation d'entités naturelles (contours, lacs, rivières, zones boisées, etc.) car il préserve la forme générale de la ligne. De plus, si les contraintes spatiales sont activées, la relation spatiale entre les entités d'entrée est préservée. L'algorithme de Douglas-Peucker avec une petite tolérance est souvent utilisé avant ou après Sherbend pour réduire davantage le nombre de points afin d'atteindre les objectifs de la généralisation.
Notes
- L'algorithme Sherbend détecte et généralise les courbes de manière itérative, puis détecte et résout les conflits spatiaux. Les lignes généralisées d'une itération sont transmises à l'itération suivante jusqu'à ce que les lignes ne puissent plus être généralisées. En raison de ce processus itératif, l'algorithme prend beaucoup de temps, ce qui est un compromis pour améliorer la précision et la qualité de la généralisation.
- La vérification des contraintes est une opération qui prend beaucoup de temps. N'utilisez les contraintes qu'en cas de nécessité.
- Pour généraliser les entités de façon indépendante, le Transformer Generalizer est plus adapté.
Exemples
Dans cet exemple la courbe est réduite (vert = entrée, rouge = sortie ):
Dans cet exemple, une courbe est supprimée :
Dans cet exemple, les 3 courbes sont combinées en une seule :
L'exemple ci-dessous illustre le processus de généralisation sur une simple ligne dans un réel jeu de données :
Cet exemple illustre le processus de généralisation des courbes de niveau :
Configuration
Ports en entrée
Lignes d'entrée pour la généralisation. Elles sont supposées ne pas s'auto-intersecter ou ne pas intersecter une autre ligne ou un autre point.
Points d'entrée pour la contrainte de latéralité. Lorsque la contrainte "Sidedness" est activée, ces points empêcheront une généralisation du virage si cela modifie la relation spatiale entre le virage et les points.
Ports de sortie
Lignes généralisées.
Les courbes qui, si généralisées, ne respecteraient pas la contrainte sélectionnée.
Entités en entrée invalides ressortiront par le port <Rejected>.
Paramètres
Regrouper par |
Seuls les lignes et les points du même groupe sont soumis à la vérification des contraintes. Si aucun groupe n'est spécifié, toutes les lignes et tous les points sont placés dans le même groupe. |
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. |
Diameter |
Ce paramètre spécifie le diamètre du cercle de référence (décrit au début de cette documentation), qui décrit approximativement la largeur d'un coude en dessous de laquelle le coude sera généralisé. Différentes lignes peuvent avoir différents diamètres spécifiés comme attribut. Plus le diamètre est grand, plus les courbes seront généralisées. |
Contraintes spatiales |
Appliquer des contraintes spatiales, qui seront seulement utilisées pour les lignes et les points d'un même groupe.
Dans le schéma ci-dessous, la courbe bleue ne peut pas être généralisé sinon elle ne respecterait pas la contrainte d'unilatéralité :
Dans le schéma ci-dessous, la courbe bleue ne peut pas être généralisée sinon, elle ne respecterait pas la contrainte d'auto-intersection :
|
Préserver les points finaux des lignes fermées |
Ce paramètre, s'il est réglé sur Non, réordonnera (fera pivoter) la liste des coordonnées de chaque ligne fermée dans le but d'améliorer la qualité de la généralisation. Pour préserver la connectivité des jonctions, le Transformer doit s'assurer que les coordonnées de début et de fin de chaque ligne restent stationnaires. Par conséquent, s'il est important de conserver les positions des premières et dernières coordonnées d'une ligne fermée (peut-être parce qu'elles se trouvent sur une jonction), ce paramètre doit être défini sur Oui. Si ce paramètre est défini sur Oui, les extrémités d'une ligne ne seront pas déplacées. Ce comportement permet de préserver la connectivité des points de jonction. |
É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.
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 des exemples et informations à propos de ce Transformer dans FME Community.