Comprendre les attributs de liste

Les listes permettent à un attribut d'avoir plus d'une valeur. L'exemple suivant illustre le concept des attributs de liste et la raison pour laquelle vous pouvez les utiliser.

Considérons un service SIG d'une commune ayant une Géodatabase Esri avec des points adresses et un fichier CSV contenant toutes les espèces d'arbres dans une ville et leur emplacement.

Le technicien SIG de la société utilise DatabaseJoiner pour connecter les enregistrements CSV aux données spatiales dans une relation simple de 1 à 1. Le processus fonctionne bien jusqu'à ce que l'on découvre qu'une adresse particulière possède plusieurs enregistrements pour plusieurs espèces d'arbres. Par exemple :

100 Dunsmuir St Redspire Pear

100 Dunsmuir St Chanticleer Pear

100 Dunsmuir St Flowering Cherry

Comment le Transformer DatabaseJoiner doit-il traiter une seule entité spatiale avec trois valeurs d'attribut ? Par défaut, il créé 3 types d'entités en sortie, mais ce n'est pas ce qui est attendu.

Une méthode consiste en concaténer toutes les espèces d'arbre dans un unique attribut, par exemple :

100 Dunsmuir St Redspire Poire, Chanticleer Poire, Flowering cerise

Mais il est difficile de travailler avec un tel attribut. Par exemple, un Transformer Tester appliquant le test

Espèces d'arbres=Poire Redspire ne retournera par l'adresse ci-dessous même si elle contient bien ce type d'arbre.

Une autre méthode consiste à créer un attribut pour chaque espèce. Par exemple :

Numéro de parcelle Arbre espèce 1 Arbre espèce 2 Arbre espèce 3
100 Dunsmuir St Poire Redspire Chanticleer Pear Flowering Cherry

Mais cette méthode n'est pas vraiment meilleure. De nombreux Transformers peuvent travailler avec plusieurs attributs, mais il n'y a pas toujours le même nombre d'attributs. Il serait extrêmement difficile de concevoir un traitement pour gérer un nombre inconnu d'attributs !

FME règle ce problème en activant dans DatabaseJoiner le paramètre de génération de liste qui permet d'associer à un unique attribut plusieurs valeurs, qui seront par la suite traitables par des Transformers spécialisés dans la gestion de ce type de structure de données.

Dans Workbench, un attribut de liste est représenté par une paire d'accolades.

Après l'accolade, le caractère "." est suivi du nom de l'attribut.

Ce Transformer montre une liste nommée "_trees" et plusieurs attributs de liste tels que "Species", "Diameter", "Height"....

Chaque attribut d'une liste contient un ensemble de valeurs (éléments). Pour obtenir réellement ces valeurs et les utiliser dans un traitement, elles doivent être "exposées" comme des attributs ordinaires.

Pour exposer des éléments, cliquez avec le bouton droit de la souris sur l'attribut de la liste et sélectionnez Exposer les élements. Dans la boîte de dialogue Sélectionner les éléments de la liste, indiquez les éléments de la liste à exposer. Ici, les trois premiers éléments de la liste seront exposés. (Notez que l'élément 0 est utilisé pour signifier le premier élément de la liste).

Lorsque des éléments d'une liste sont exposés, ils sont ajoutés au Transformer en tant qu'attributs. Le nom de l'attribut exposé est le même que le nom de l'attribut de la liste, sauf que la position de cet élément dans la liste est ajoutée comme un nombre entre accolades.

Dans cet exemple, trois éléments pour les attributs Species (Espèces), Height (Hauteur) et Diameter (Diamètre) ont été exposés ; par conséquent, neuf attributs supplémentaires sont maintenant disponibles dans le traitement. Les attributs (et leurs valeurs de l'exemple précédent) sont :

Valeur de l'attribut

_trees{0}.Species Redspire Pear

_trees{0}.Height 2

_trees{0}.Diameter 3

_trees{1}.Species Chanticleer Pear

_trees{1}.Height 3

_trees{1}.Diameter 2

_trees{2}.Species Flowering Cherry

_trees{2}.Height 9

_trees{2}.Diameter 3

Hasklig-Bold.ttf

Hasklig-BoldIt.ttf

Hasklig-Regular.ttf

OpenSans-Bold.ttf

OpenSans-BoldItalic.ttf

OpenSans-Italic.ttf

OpenSans-Regular.ttf

SourceSansPro-Bold.ttf

SourceSansPro-BoldItalic.ttf

SourceSansPro-Italic.ttf

SourceSansPro-Regular.ttf