Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Thu 03 February 2011 11:13

LeonWeb73
Participant actif
Lieu: Chambéry
Date d'inscription: 5 Sep 2005
Messages: 126
Site web

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

LeonWeb73
Participant actif
Lieu: Chambéry
Date d'inscription: 5 Sep 2005
Messages: 126
Site web

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: 343

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.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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

 

#6 Thu 03 February 2011 13:26

Mathieu
Participant occasionnel
Lieu: Paris
Date d'inscription: 6 Sep 2005
Messages: 37
Site web

Re: Données destination différentes en fonction d'une liste

La solution de LASGOUZES est la bonne et est suffisante

Hors ligne

 

#7 Fri 04 February 2011 10:09

LeonWeb73
Participant actif
Lieu: Chambéry
Date d'inscription: 5 Sep 2005
Messages: 126
Site web

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)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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: 343

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: 343

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

LeonWeb73
Participant actif
Lieu: Chambéry
Date d'inscription: 5 Sep 2005
Messages: 126
Site web

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

 

#11 Fri 04 February 2011 13:11

Mathieu
Participant occasionnel
Lieu: Paris
Date d'inscription: 6 Sep 2005
Messages: 37
Site web

Re: Données destination différentes en fonction d'une liste

Bonjour

Je pense que la solution de pyjoubert est suffisante, l'avez vous testée ?

Hors ligne

 

#12 Fri 04 February 2011 13:15

Mathieu
Participant occasionnel
Lieu: Paris
Date d'inscription: 6 Sep 2005
Messages: 37
Site web

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)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#13 Fri 04 February 2011 14:07

LeonWeb73
Participant actif
Lieu: Chambéry
Date d'inscription: 5 Sep 2005
Messages: 126
Site web

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: 343

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

Mathieu
Participant occasionnel
Lieu: Paris
Date d'inscription: 6 Sep 2005
Messages: 37
Site web

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

LeonWeb73
Participant actif
Lieu: Chambéry
Date d'inscription: 5 Sep 2005
Messages: 126
Site web

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 :

LASGOUZES a écrit:

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

LeonWeb73
Participant actif
Lieu: Chambéry
Date d'inscription: 5 Sep 2005
Messages: 126
Site web

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

 

Pied de page des forums

Powered by FluxBB