#1 Thu 03 February 2011 11:13
Données destination différentes en fonction d'une liste
Bonjour, j'ai des lignes de bus dans un système SIG spatial. J'ai besoin d'exporter ces données dans un format "fichier" type MIF/MID, shape etc. mais avec un fichier par ligne. Il y a 24 lignes donc 24 fichiers différents.
J'ai préparé un workbench me permettant de faire cette manipulation. Jusque là pas de problème particulier.
La faille de mon processus réside dans l'obligation de renseigner manuellement et un à un les numéros de lignes désiré dans un TESTER.
Pour la ligne "L1" je mets la condition Num_Ligne = "L1" et je lance le transfert. Ensuite je modifie en "L2" et je relance le transfert...
Quelqu'un aurait-il une astuce me permettant de renseigner automatiquement via une liste (manuelle ou existante) les différents numéros de lignes afin que je me retrouve bien avec des fichiers du type L1.shp, L2.shp etc.
Merci d'avance.
Arnaud Colé - responsable service Géomatique et Opendata (SGéO)
Direction des Systèmes d'Information mutualisés et du Numérique
de Grand Chambéry, ville de Chambéry, ville de La Motte-Servolex, ville de La Ravoire
Hors ligne
#2 Thu 03 February 2011 11:49
- LASGOUZES
- Participant assidu
- Date d'inscription: 6 Mar 2006
- Messages: 169
Re: Données destination différentes en fonction d'une liste
Sur le Feature type en sortie cliquer sur Fanout by Attribute et selectionner le champ qui contient la valeur.
C'est tout
Hors ligne
#3 Thu 03 February 2011 12:10
Re: Données destination différentes en fonction d'une liste
Salut LASGOUZES, merci pour la réponse. J'ai déjà coché "attribut de répartition" (en français) si l'on parle de la même chose. C'est d'ailleurs cette option qui me permet d'attribuer un nom différent à chaque fichier, en fonction de la valeur Num_LIGNE.
Il n'empêche que je suis obligé en amont de préciser via le tester quelle ligne doit-être traitée.
L'idéal serait un outil permettant de lancer le processus en boucle pour chaque valeur de "NUM_LIGNE" !
Arnaud Colé - responsable service Géomatique et Opendata (SGéO)
Direction des Systèmes d'Information mutualisés et du Numérique
de Grand Chambéry, ville de Chambéry, ville de La Motte-Servolex, ville de La Ravoire
Hors ligne
#4 Thu 03 February 2011 12:37
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 347
Re: Données destination différentes en fonction d'une liste
Bonjour,
ATTRIBUTFILTER ferait peut-être l'affaire ?
Hors ligne
#5 Thu 03 February 2011 13:25
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Données destination différentes en fonction d'une liste
Aloha
La solution de Lasgouzes doit marcher. Ci joint un fmw en exemple.
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#7 Fri 04 February 2011 10:09
Re: Données destination différentes en fonction d'une liste
Bonjour, tout d'abord merci à tous pour vos réponses. Au vu du workbench exemple de Pierre je me dis que je me suis mal exprimé, ou alors je ne comprend pas tout simplement.
Les lignes de bus sont dans une couche source unique, et c'est en sortie que je me retrouve avec une couche différente par numéro de ligne.
voir le FMW ci joint.
Dernière modification par LeonWeb73 (Fri 04 February 2011 10:33)
Arnaud Colé - responsable service Géomatique et Opendata (SGéO)
Direction des Systèmes d'Information mutualisés et du Numérique
de Grand Chambéry, ville de Chambéry, ville de La Motte-Servolex, ville de La Ravoire
Hors ligne
#8 Fri 04 February 2011 10:33
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 347
Re: Données destination différentes en fonction d'une liste
Où est le fmw joint ?
OK, il vient d'apparaitre
Dernière modification par pyjoubert (Fri 04 February 2011 10:34)
Hors ligne
#9 Fri 04 February 2011 10:49
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 347
Re: Données destination différentes en fonction d'une liste
Bonjour,
Il me semble qu'il faudrait d'abord renomme (ATTRIBUTRENAMER) "_concatenated" par "_CONCATENA", puis ensuite faire la repartition sur "_CONCATENA"
A noter, que dans ce cas là le lien des attributs n'est pas necessaire puisqu'automatique
Dernière modification par pyjoubert (Fri 04 February 2011 11:03)
Hors ligne
#10 Fri 04 February 2011 12:40
Re: Données destination différentes en fonction d'une liste
Actuellement je renseigne le Tester nommé "Tester" avec CODE_LIGNE = "L5" puis je lance le processus. L'option répartion en sortie fait que la couche va s'appeler "TRONCON_L5"
Je recommence en attribuant la valeur CODE_LIGNE = "L6", je relance le processus et la couche en sortie se nomme "TRONCON_L6"
ETC.
Je n'arrive pas à automatiser ce processus. Je pense qu'il faut modifier quelque chose au niveau de "Tester" afin que FME lise tout seul le champ CODE_LIGNE et crée automatiquement TRONCON_L5.shp, TRONCON_L6.shp ...
J'ai essayé de rentrer toutes les valeurs dans le tester comme condition mais cela ne fonctionne évidemment pas, l'outil n'étant pas fait pour ça.
@+
Arnaud Colé - responsable service Géomatique et Opendata (SGéO)
Direction des Systèmes d'Information mutualisés et du Numérique
de Grand Chambéry, ville de Chambéry, ville de La Motte-Servolex, ville de La Ravoire
Hors ligne
#12 Fri 04 February 2011 13:15
Re: Données destination différentes en fonction d'une liste
Avec l'exemple en pièce jointe que cela fonctionne très bien
Dernière modification par Mathieu (Fri 04 February 2011 13:16)
Hors ligne
#13 Fri 04 February 2011 14:07
Re: Données destination différentes en fonction d'une liste
OK merci, autant pour moi. J'étais focalisé sur mon "Tester".
Cela fonctionne bien. J'ai juste un problème avec le nombre d'entités en sortie qui n'est pas le même avec la version initiale du workbench et la version corrigée. Mais ce n'est plus qu'un problème de vérification à faire de mon côté.
En tout cas un grand merci à tous, et mes excuses à Pyjoubert pour mon entêtement !
@+
Arnaud Colé - responsable service Géomatique et Opendata (SGéO)
Direction des Systèmes d'Information mutualisés et du Numérique
de Grand Chambéry, ville de Chambéry, ville de La Motte-Servolex, ville de La Ravoire
Hors ligne
#14 Fri 04 February 2011 14:37
- pyjoubert
- Participant assidu
- Lieu: Lyon
- Date d'inscription: 21 Mar 2006
- Messages: 347
Re: Données destination différentes en fonction d'une liste
OK,
Je n'en ferai rien pour cette fois ;-)
Hors ligne
#15 Fri 04 February 2011 14:42
Re: Données destination différentes en fonction d'une liste
Dans votre Workbench original il vous suffit de renommer le champ destination du dernier StringConcatenator et de supprimer votre tester, vous n'avez pas besoin d'adapter celui que je vous ai envoyé
Bon courage et bon transfert de données
Hors ligne
#16 Fri 12 October 2012 09:25
Re: Données destination différentes en fonction d'une liste
Bonjour, je reviens sur un sujet qui commence à dater un peu et qui m'avais posé pas mal de problèmes.
Je relance aujourd'hui le sujet car après divers essais (hein Pyjoubert !) et vérifications des résultats je m’aperçois que cela ne fonctionne toujours pas.
Je pose de nouveau le sujet et j'ajoute quelques élément manquant dans les premières discutions.
1 couche de lignes de bus dans un système SIG spatial (élyx + oracle locator). Les lignes de bus sont basées sur des tronçons de voies d’un filaire de rue. J'ai besoin d'exporter ces données dans un format "fichier" type MIF/MID, shape etc. mais avec un fichier par ligne. Il y a 24 lignes donc 24 fichiers différents. =>le problème n’est pas dans la répartition des résultats dans les différents fichiers correspondant aux numéros de lignes mais dans la lecture et l’interprétation des valeurs du champ code ligne.
J'ai préparé un workbench me permettant de faire cette manipulation. La faille de mon processus réside dans l'obligation de renseigner manuellement et un à un les numéros de lignes désirés dans un TESTER. Pour la ligne "L1" je mets la condition Num_Ligne = "L1" et je lance le transfert. Ensuite je modifie en "L2" et je relance le transfert...
INDICATION MANQUANTE DANS LA PREMIÈRE DEMANDE : pour chaque tronçon de voies (un ou plusieurs tronçons correspondent à une rue) la valeur du code ligne est renseignée. Jusque là pas de problème. Mais cette valeur n'est pas unique à chaque tronçon. Exemple pour un tronçon A j'ai une ligne de bus L1 qui passe. Donc la valeur du code ligne est "L1". Mais pour le tronçon suivant B j'ai 3 lignes de bus qui passent la valeur du code ligne est donc "L1, L5, L10" et ainsi de suite.
Le problème que je rencontre avec mon workbench et vos solutions précédentes est que Fme ne me ressort pas les lignes de bus en intégralité dès qu’il y a plusieurs codes de ligne dans le même champ. J'ai un certains nombre de tronçons de L1, un certains nombre de L3... mais jamais la ligne complète !
Alors je m'entête avec mon idée de boucle (comme en programmation) ou liste ou autre me permettant de renseigner une seule fois les numéros de lignes afin que le workbench me sorte bien les différentes lignes de bus.
Sinon je vais dupliquer 30 fois le début de mon workbenchs (30 lignes de bus) pour tout faire converger vers ma source de sortie. Mais là ce serait vraiment dommage !
Arnaud Colé - responsable service Géomatique et Opendata (SGéO)
Direction des Systèmes d'Information mutualisés et du Numérique
de Grand Chambéry, ville de Chambéry, ville de La Motte-Servolex, ville de La Ravoire
Hors ligne
#17 Fri 12 October 2012 10:45
- Gr1ng
- Participant occasionnel
- Date d'inscription: 7 Nov 2007
- Messages: 30
Re: Données destination différentes en fonction d'une liste
Bonjour,
Je pense qu'il serait plus simple (si vous en avez les droits) de travailler en amont dans votre BDD spatiale (peut être que cela existe déjà dans votre base..) :
1 ligne = n tronçon (je sais pas si vous faîtes la distinction entre ligne et itinéraire avec la gestion des A/R)
1 tronçon peut avoir n ligne.
Vous avez donc une relation 1-n 1-n qui doit donner naissance à une table contenant les identifiants de vos lignes et de vos tronçons.
Ainsi vous avez une table avec :
id_ligne / id_tronçon
L1 A
L1 B
L5 B
L10 B
Avec une jointure sur l'id_troncon vous pouvez annexer toutes les géométries des tronçons. Vous obtenez donc une table ou vue SQL :
id_ligne / id_tronçon / geom
L1 A geomA
L1 B geomB
L5 B geomB
L10 B geomB
Avec ça, il est ensuite simple d'extraire la donnée souhaitée avec fme en reprenant les méthodes des posts précédents :
Sur le Feature type en sortie cliquer sur Fanout by Attribute et selectionner le champ qui contient la valeur.
C'est tout
Ou sinon, vous pouvez toujours explorer la piste du AttributeSplitter avec délimiteur ", " suivi d'un attributeCreator dans attribute Name mettez par exemple "name_ligne", en value "tronc_ligne_@Value(_list{0})".
Renouveler cette dernière opération le même nombre de fois que de liste que vous a creer l'AttributeSplitter. (qui correspond au nombre max de ligne dans une concaténation). Par exemple pour la deuxième liste : "tronc_ligne_@Value(_list{1})" etc..
Reliez tous vos AttributeCreator sur un jeu de donnée de destination puis cochez fanout by attribut et indiquez "name_ligne".
C'est moins propre que la première solution.
Dernière modification par Gr1ng (Fri 12 October 2012 11:35)
Hors ligne
#18 Sat 13 October 2012 16:12
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Données destination différentes en fonction d'une liste
Aloha,
De mémoire, dans FME,on peut dupliquer un objet en fonction des ntuples d'une liste (attribute exploder, puis un ListExploder par ex).
Un test sur la syntaxe de votre attribut devrait être fait pour vérifier que vous avez bien ', ' entre chaque élément.
Voilà, sinon, du tcl c'est possible, du python aussi, une vue Oracle Spatiale aussi.
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#19 Tue 16 October 2012 08:40
Re: Données destination différentes en fonction d'une liste
merci pour ces nouvelles idées. Je teste dès que j'ai un moment et vous tiens au courant.
Bonne journée.
Arnaud Colé - responsable service Géomatique et Opendata (SGéO)
Direction des Systèmes d'Information mutualisés et du Numérique
de Grand Chambéry, ville de Chambéry, ville de La Motte-Servolex, ville de La Ravoire
Hors ligne