A propos des Transformers basés sur des groupes d'entités
Un Transformer basé sur un groupe d'entités traite plusieurs groupes d'entités simultanément.
Exemples de transformations basées sur des groupes :
- AreaBuilder : FME peut créer des polygones à partir de lignes d'entités qui forment une "forme" fermée, mais elles doivent être groupées. Une entité polygonale ne peut pas être créée à partir d'un seul élément de tracé non fermé.
- StatisticsCalculator : StatisticsCalculator calcule la moyenne, les valeurs maximum et minimum d'un attribut pour un groupe d'entités. Il n'est pas possible de calculer ces valeurs une entité à la fois.
- Intersector : le calcul de points d'intersection d'un ensemble de lignes repose sur des Transformers basés sur des groupes d'entités car chaque entité du groupe entrant dans le traitement modifie le résultat du calcul.
Regroupement (Paramètres Regrouper par)
Pour un Transformer basé sur un groupe, il est important de définir les membres de ce groupe. Le comportement par défaut est d'utiliser l'ensemble des entités entrantes comme un seul groupe.
Cependant, les Transformers basés sur les groupes ont un paramètre spécial "Regrouper par". Ce paramètre permet de sélectionner un attribut sur lequel les groupes doivent être formés. Par exemple, un Transformer Intersector dont le paramètre Regrouper par est défini sur "road_type" ne recoupera que les entités dont la valeur de l'attribut "road_type" correspond.
Mémoire système
Chaque entité occupe une certaine quantité de ressources système pendant son traitement. Quand les entités sont traitées simultanément dans un "grand" groupe, alors la somme des ressources système exploitées accroît grandement.
Pour cette raison, les Transformers basés sur les groupes consomment généralement plus de ressources que les Transformers basés sur les entités. Ceci peut être régulé par l'utilisation du paramètre "Entrée des groupes ordonnés" (existant dans la plupart des Transformers) et les options "X en premier" telles que "Candidats en premier" ou "emporte pièce en premier"....
Sortie et Attributs en sortie
Lorsque les entités sont traitées par groupe, la sortie peut être soit l'entité d'origine, soit un ensemble d'entités.
Lorsque la sortie est une combinaison de plusieurs entités différentes, la plupart des Transformers suppriment les attributs sources, car il n'y a aucun moyen de savoir laquelle des valeurs d'attributs sources doit être appliquée lorsqu'il y a un certain nombre d'entités. Les deux exceptions sont :
- Utiliser un paramètre de regroupement : par définition, toutes les valeurs d'origine sont les identiques à celles générées puisque le groupe est formé à partir d'attribut équivalent.
- Utilisation de listes : de nombreux Transformers ont un paramètre liste qui permet de garder une trace des attributs source et de leurs valeurs.
Transformers conservant les entités (Transformers bloqueurs)
Par défaut, FME traite les entités une par une ; la lisant, puis la passant d'un Transformer à un autre et pour finir l'écrire.
Cependant, certains Transformers traitent les entités en tant que groupe et retiennent les entités jusqu'à ce qu'elles soient prêtes à être traitées. Ces Transformers "Retenant les entités" (ou "Bloquants") provoquent l'arrêt temporaire du flux d'entités jusqu'à ce qu'ils aient terminé leur traitement. La plupart des Transformers basés sur des groupes tombent dans cette catégorie s'ils doivent rassembler les données de chaque groupe avant d'effectuer leur traitement.
Ceci modifie le flux des entités à utiliser pour contrôler l'ordre dans lequel les données sont traitées et le Transformer FeatureHolder est typiquement désigné pour stocker les entités sans pour autant effectuer le moindre changement dessus.
Exemples de rétention d'entités par des Transformers :
- Sorter : ce Transformer exige que toutes les données d'entrée soient rassemblées en son sein avant qu'il ne puisse effectuer le travail d'ordonnancement des entités et ensuite les sortir. Dans ce cas, les entités individuelles ne sont pas modifiées, mais leur ordre dans le flux de données est modifié par le passage dans le Transformer.
- NeighborFinder : comme tous les autres Transformers d'analyse spatiale qui comparent les entités une à une, ce Transformer nécessite que toutes les entités soient entrées avant qu'il ne puisse déterminer lesquelles sont les plus proches les unes des autres.