Utiliser des listes pour résoudre des problèmes

Exemple

Vous avez des lignes centrales de rues linéaires et, à chaque point d'intersection, vous aimeriez savoir quelles rues se rejoignent. La sortie doit être un ensemble de points, chacun avec un attribut de chaîne unique contenant un ensemble de noms de rues séparés par des virgules.

Solution

Configurez un traitement qui achemine toutes les lignes centrales des rues dans un Transformer Intersector. Ajustez les paramètres de l'Intersector pour fournir un nom de liste (par exemple, all_streets).

Supposons que les lignes de rue en entrée aient un attribut appelé NOM. Maintenant, entre autres choses, la sortie Node de l'Intersector comportera une liste non qualifiée appelée all_streets{}.NAME. Cette liste contiendra les noms de toutes les rues qui se croisent à chaque point particulier (ou Node) qui est produit.

Pour transformer la liste des NOMS en une seule chaîne de caractères, ajoutez un Transformer ListConcatenator et exécutez les entités NODE dans celui-ci. Ensuite, configurez les paramètres du ListConcatenator pour qu'il mette le contenu de la liste all_streets{}.NAME ensemble, séparé par des virgules, dans l'attribut de destination.

Acheminez la sortie du ListConcatenator vers un fichier de sortie, et assurez-vous que l'attribut de destination a été acheminé vers un attribut de la sortie. Après avoir exécuté la traduction, vous obtiendrez le résultat souhaité.

Exposer des éléments

Notez que vous pouvez avoir accès au nom des rues en "éclatant" certains éléments de la liste  : faire un clic droit sur le nom de la liste (dans notre exemple all_streets{}.NAME) et sélectionner Eclater la liste.

Dans la boîte de dialogue Sélectionner les éléments de liste, entrez le nombre d'éléments à exposer. (L'inconvénient de cette approche est que vous devez savoir à l'avance avec combien d'éléments de liste vous voulez travailler).