Transformers FME: 2025.0
Transformers FME: 2025.0
DonutBuilder
Découpe des trous dans les entités de la surface lorsqu'elles entourent entièrement une autre surface, créant ainsi des polygones troués.
Cas d'utilisations typiques
- Créer des polygones troués
Comment fonctionne-t-il ?
DonutBuilder reçoit des entités avec une géométrie de surface et construit des polygones troués en découpant des trous partout où des surfaces sont contenues dans des surfaces plus grandes.
Les attributs peuvent être fusionnés ou supprimés, ou accumulés dans un attribut de liste. Un attribut facultatif peut être ajouté pour indiquer si l'entité de sortie est un trou ou une coquille extérieure.
Les trous peuvent être conservées ou supprimés.
Les entités d'entrée agrégées sont désagrégées avant d'être traitées.
Les coordonnée s Z sont supportées.
Géométrie d'entrée et relations spatiales
Les surfaces d'entrée doivent être valides et topologiquement propres, et doivent avoir une relation spatiale de type Contains ou Within pour produire avec succès des polygones troués. Les surfaces qui se chevauchent ou qui partagent des limites peuvent produire des résultats indésirables.
Les entités d'entrée ne sont pas testées pour les relations spatiales appropriées. Le SpatialRelator ou SpatialFilter peut être utile pour filtrer les entités avant d'utiliser le DonutBuilder.
Les surfaces non valides sont rejetées.
Polygones troués imbriqués
Les polygones troués peuvent être imbriqués, comme une île dans un lac sur une île dans un lac. Le DonutBuilder créera autant de polygones troués qu'il y a de surfaces de polygones valides.
Lorsque les polygones troués sont imbriqués, l'attribut Indicateur de trou alterne avec chaque niveau d'imbrication. La surface la plus à l'extérieur est une enveloppe extérieure (Indicateur de trou = non), la suivante est un trou (Indicateur de trou = oui), la suivante est une enveloppe extérieure, la suivante un trou, et ainsi de suite.
Quand Suppression des trous vaut Oui, les surfaces considérées comme trous sont rejetées, ce qui peut ne pas être souhaité lorsqu'elles sont imbriquées.
Exemples

Dans cet exemple, nous avons deux types d'entités - une limite de ville et quelques surfaces historiques à l'intérieur de celle-ci. Nous voulons découper les surfaces historiques dans le polygone de la ville.
La limite de la ville est un polygone sans trous.
Les surfaces historiques sont également des polygones et sont entièrement contenues dans les limites de la ville. Elles ne se chevauchent pas et ne touchent pas la limite extérieure.
Les deux entités sont acheminées vers un DonutBuilder.
Dans la boîte de dialogue des paramètres, l'option Suppression des trous est réglée sur Oui.
Une entité est générée, un polygone troué.
Notez qu'il y a moins de limites intérieures que dans les surfaces historiques d'entrée - certaines étaient adjacentes et ont produit des trous contigus.
Les trous ont été découpés dans la surface extérieure, puis rejetés.

Dans cet exemple, nous avons deux types d'entités : les lacs et les îles. Notez que les petits lacs semblent être présents à l'intérieur du plus grand lac.
Il y a de nombreuses îles dans le lac, et certaines d'entre elles contiennent également des lacs.
Les entités sont acheminées dans un DonutBuilder. Dans la boîte de dialogue des paramètres, nous ajoutons un nouvel attribut qui indiquera les surfaces de sortie qui sont des trous et celles qui sont des coques extérieures.
Les résultats seront imbriqués - des polygones dans des polygones - et nous devons donc conserver les trous.
Le polygone troué le plus à l'extérieur est le lac. Notez que la valeur de _hole_flag est no (non).
L'île la plus grande est un polygone à l'intérieur d'un polygone, et est signalée comme un trou.
Un code couleur conditionnel basé sur la valeur du drapeau _hole_ montre clairement l'imbrication.
Notes
- AreaOnAreaOverlayer découpe également des trous dans les surfaces, créant des polygones troués lorsqu'ils contiennent une autre surface et modifiant la limite si les surfaces se chevauchent. Il ne signale ni ne rejette les trous, mais il peut s'agir du choix approprié dans certains scénarios.
- GeometryValidator peut être utile pour identifier les géométries non valides avant le traitement.
Créer des modifier des entités surfaciques
Ces Transformers fonctionnent avec les polygones de différentes manières.

Transformer |
Utilisez ceci pour... |
Description du Transformer |
---|---|---|
Créer une ou plusieurs nouvelles entités avec une géométrie surfaciques (lorsque Objet géométrique est Polygone). |
Crée une entité à partir des paramètres spécifiés et l'envoie dans l'espace de travail pour traitement. |
|
Créer des surfaces à partir de lignes topologiquement connectées lorsqu'elles forment des formes fermées. |
Crée des polygones à partir d'entités linéaires topologiquement correctes. |
|
Crée des polygones à partir d'entités linéaires topologiquement correctes. |
Convertit une entité linéaire en surface en reliant le point d'arrivée au point de départ. |
|
Combinez des surfaces qui se touchent ou se superposent pour créer des surfaces plus grandes. |
Combine des surfaces superposées et/ou adjacentes en de plus grandes surfaces contiguës en supprimant les bords partagés et intérieurs. |
|
Calculer des surfaces |
Calcule la surface plane ou inclinée des géométries polygonales et ajoute les résultats en tant qu'attributs. |
|
Nettoyer les superpositions et les trous pour créer une surface contiguë. |
Répare les topologies de surfaces en résolvant les trous et superpositions entre surfaces adjacentes. |
|
Généraliser des surfaces. |
Généraliser la géométrie de la surface en reliant et en combinant les entités voisines et/ou en remplissant les trous et les détails. |
|
Convertir les surfaces de polygone troué en surfaces non trouées. |
Ajoute des arêtes internes pour relier les trous du polygone troué à l'enveloppe extérieure, produisant ainsi un polygone sans trou. |
|
Convertir les surfaces à l'intérieur des surfaces en polygones troués. |
Découpe des trous dans les entités de la surface lorsqu'elles entourent entièrement une autre surface, créant ainsi des polygones troués. |
|
Séparer les surfaces de polygone troué en leurs parties. |
Séparer les polygones troués en polygones d'enveloppe externe et de trou. |
|
Comptez le nombre de trous dans un polygone troué. |
Récupère le nombre de trous dans les polygones troués, en stockant le résultat sous forme d'attribut. |
|
Trouver les superpositions de polygones et les extraire dans une nouvelle géométrie. |
Effectue une superposition polygone/polygone (intersection de polygones) afin que toutes les entités surfaciques en entrée soient croisées les unes avec les autres pour produire en sortie des polygones. Les polygones résultants peuvent accumuler les attributs des polygones ayant servi à leur construction. |
|
Trouver les intersections entre les lignes et les polygones, en divisant l'un ou l'autre à l'endroit où ils se croisent. |
Effectue une superposition ligne-sur-surface. Chaque ligne d'entrée est divisée à toutes les limites de surface qu'elle croise ou les surfaces sont fractionnées là où elles sont superposées à des lignes. Les attributs peuvent être partagés entre les lignes et les surfaces liées (jointure spatiale). |
|
Identifier les points situés à l'intérieur des polygones et partager les attributs entre eux. |
Effectue une superposition de points dans un polygone. Les points peuvent recevoir des attributs de surface contenant, et les surfaces peuvent recevoir des attributs de point contenant (jointure spatiale). |
Configuration
Ports en entrée

Entités avec géométrie de surface, y compris les polygones. Les surfaces ne doivent pas se superposer ni se toucher.
Ports de sortie

Polygone troué et trous tels que spécifiés dans les paramètres. Les surfaces intactes sont également éditées ici.

Les entités dont la géométrie n'est pas celle de la surface valide sont éditées ici.
Les entités rejetés auront un attribut fme_rejection_code avec l'une des valeurs suivantes :
INVALID_GEOMETRY_TYPE
INVALID_GEOMETRY_VERTICES
INVALID_GEOMETRY_DEGENERATE
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 |
DonutBuilder part du principe que les entités de la surface d'entrée sont topologiquement propres. De plus, il est supposé que deux polygones d'entrée dans un groupe ont une relation de confinement stricte ou ne se superposent pas. |
||||
Traitement des regroupements |
Sélectionnez le moment du traitement où les groupes sont traités :
![]() 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. |

Méthode de connexion du Z |
Si applicable, sélectionner une méthode pour la gestion des valeurs z. ![]() En le visualisant en 2D (en ignorant le Z), un chemin (qui peut définir le bord d'un polygone) peut apparaître fermé tel que montré ci-dessous. Ce même chemin, vu en 3D, peut apparaître ouvert comme le montre la figure de droite ci-dessous.
Pour spécifier la façon (et si) dont le chemin doit être fermé en 3D, sélectionner une des méthodes suivantes.
|
||||||||||||||||||
Suppression des trous |
Sélectionnez une méthode pour traiter les surfaces marquées comme des trous (et non comme des enveloppes extérieures) :
|

Regrouper les attributs
Traitement des attributs |
Sélectionner une méthode pour regrouper les attributs des trous :
|
||||||
Résolution de conflit |
Quand Traitement des regroupement est Fusionner les trous, sélectionner une manière de gérer les conflits d'attributs.
|
||||||
Préfixe |
Quand Traitement des regroupements est Préfixer les trous, cette valeur préfixera les noms fournis par le trou. |
Génération de liste
Lorsqu'il est activé, ajoute un attribut de liste au polygone troué en sortie, en conservant les valeurs d'attribut pour chaque entité d'entrée qui est devenue un trou, dans l'ordre où les trous apparaissent sur le polygone.
Liste des trous |
Entrer un nom de liste. Note 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 des trous |
Tous les attributs: tous les attributs seront ajoutés aux entités 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 de trous est définie sur Attributs sélectionnés . Spécifiez les attributs que vous souhaitez inclure. |

Indicateur de trou |
Quand Supprimer les trous vaut Non, nom de l'attribut qui contient l'indicateur de trou, soit oui ou non. |
Éditer les paramètres des Transformers
Les paramètres du Transformer peuvent être définis en saisissant directement des valeurs, en utilisant des expressions ou en faisant référence à d'autres éléments de l'espace de travail tels que des valeurs d'attributs ou des paramètres utilisateur. Divers éditeurs et menus contextuels sont disponibles pour vous aider. Pour voir ce qui est disponible, cliquez sur à côté du paramètre concerné.

Définir les valeurs
Il existe plusieurs façons de définir une valeur à utiliser dans un Transformer. La plus simple consiste à saisir simplement une valeur ou une chaîne de caractères, qui peut inclure des fonctions de différents types telles que des références d'attributs, des fonctions mathématiques et de chaînes de caractères, et des paramètres traitement.
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. |

Outils de tableau
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.
Pour plus d'information, consulter la section Options des Transformers.
Références
Comportement |
|
Stockage des entités |
Oui |
Dépendances | Aucun |
Alias | |
Historique |
FME Community
FME Community dispose d'une mine de connaissances sur FME, avec plus de 20 000 membres actifs dans le monde entier. Obtenez de l'aide sur FME, partagez vos connaissances et entrez en contact avec des utilisateurs du monde entier.
Voir tous les résultats à propos de ce Transformer sur FME Community.
Examples may contain information licensed under the Open Government Licence – Vancouver, Open Government Licence - British Columbia, and/or Open Government Licence – Canada.