Pages: 1
- Sujet précédent - FME 2023 - combiner des couches shp depuis un txt + garder la source - Sujet suivant
#1 Fri 15 March 2024 21:13
FME 2023 - combiner des couches shp depuis un txt + garder la source
Bonjour à tous,
Je rame sur un problème qui pourtant a l'air simple.
Je dispose d'une liste de couches shapefile dans un fichier texte simple.
Les couches de cette liste n'ont pas exactement la même structure (elle peut varier ou il peut y avoir des champs de nom proches).
Je ne souhaite pas ajouter ces fichiers à la main dans FME, mais bien lire tous les fichiers de la liste texte et lancer mon workbench basé sur cette liste.
Le but est de regrouper ces fichiers dans une seule couche shp et d'y ajouter la source précise (url du dossier) et son nom, ce qui semble plutôt basique.
Pour ceux qui connaissent, c'est ce que fais QGIS avec l'outil "fusionner les couches vecteur" une fois les couches chargées dans QGIS.
Exemple
ex : Type A étant des polygones, les dossiers 1 et 2 étant des secteurs géographiques différents
D:/tmp/dossier1/couche_TypeA_1.shp
D:/tmp/dossier2/couche_TypeA_2.shp
Ca aurait pu être aussi Type B des points pour une autre passe à un autre moment)
D:/tmp/dossier1/couche_TypeB_1.shp
D:/tmp/dossier2/couche_TypeB_2.shp
1 LECTURE TEXTE
J'ai mis un Jeu de donnée en entrée "Text" qui produit un "text_line_data" avec dedans les chemins du fichier à lire.
2 LECTURE FEATURE
J'ai placé ensuite un Feature Reader SHAPEFILE qui lit les lignes du "text_line_data" une par une, charge les fichiers et expose fme_dataset et fme_basename pour chaque. LEs autres attributs ne sont pas "exposés"par défaut.
3... ben voilà. Vous allez trouver ça brut mais j'ai essayé pas mal de choses mais rien qui marche en dynamique (ça me donne une liste d'attribut avec une liste de champs pas complète ou sans les attributs autres que ceux volontairement exposés).
Je bloque à cette étape, car tout ce qui suit implique que j'expose les attributs additionnel des couches lues après les avoir chargés en cache ou que je fasse appel à un Feature merger... mais je ne dois pas le configurer comme il faut, car le résultat soit ne montre rien, soit seulement fme_dataset et fme_basename que j'ai exposé.
J'aimerais vraiment pouvoir charger tout ça de manière dynamique et que le workbench s'adapte à ce que je lui donne à manger.
Les contraintes (sans lesquelles j'y arriverais probablement) :
* ajouter la source pour chaque donnée
* s'adapter à ce qui est dans la liste fournie
* garder les attributs jusqu'au bout et inclure tous les champs possibles en entrée
A noter : c'est toujours la même géométrie dans une même liste
Si vous avez des idées...
Merci par avance pour toute suggestion
Dernière modification par Robin (Mon 18 March 2024 09:02)
Hors ligne
#2 Thu 21 March 2024 10:35
Re: FME 2023 - combiner des couches shp depuis un txt + garder la source
Pour suivi des avancées sur ce sujet, petite amélioration avec l'usage du Transformer "SchemaScanner"
J'ai injecté une couche SIG type contenant tous les champs possible des autres couches SIG en entrée que j'ai pu recenser préalablement via la succession : "SchemaScanner -> ListExploder -> ListBuilder " (liste de tous les champs de toutes les entités en entrée) inspiré de cette page
Pas parfait, sûrement dû à mon (regrettable) manque de pratique sur FME, mais ça fait le job pour l'instant. Je sens qu'on est pas très loin...
Je reposterai ici si j'arrive à quelque chose de fonctionnel, là ca reste du bricolage à mon goût et non transposable pour usage global par la communauté.
Hors ligne
#3 Fri 22 March 2024 14:46
- Lionel TODOME
- Juste Inscrit !
- Date d'inscription: 22 Apr 2018
- Messages: 4
Re: FME 2023 - combiner des couches shp depuis un txt + garder la source
Bonjour Robin,
Ma réponse part du principe que vous avez un dossier fixe pour ce travail et que le fichier txt peut ne pas être obligatoire, si je me base sur l'exemple D:/tmp/dossier1/couche_TypeA_1.shp et D:/tmp/dossier2/couche_TypeA_2.shp que vous avez donné.
1- Fichier de départ
J'utiliserai un reader shapefile en me mettant sur le dossier D:/tmp/ en question, mais il faudra faire attention à quelques détails :
- Dans la source du dataset il faut utiliser : D:\temp\**\*_TypeA_*.shp --> Cela va lire les dossiers et sous-dossiers du répertoire temp en prenant uniquement les couches shapefiles qui ont la chaine de caractère _TypeA_ dans le nom de fichier.
- Dans les paramètres du reader, il faut cocher fme_dataset, fme_basename et même shapefile_type si vous voulez filtrer après selon la géométrie
2- Lecture des Features
Si la couche D:/tmp/dossier1/couche_TypeA_1.shp a un attribut supplémentaire par exemple "test" et que cet attribut est absent dans la couche D:/tmp/dossier2/couche_TypeA_2.shp alors vous aurez dans tous les cas cet attribut qui sera affiché avec la valeur correspondante pour les couches qui partagent cet attribut et <missing> pour les couches qui n'en ont pas.
Exemple https://ibb.co/dMMPqys
Si ma réponse n'est pas claire ou que ça ne répond pas à vos attentes, n'hésitez pas à relancer
Dernière modification par Lionel TODOME (Fri 22 March 2024 14:49)
Hors ligne
Pages: 1
- Sujet précédent - FME 2023 - combiner des couches shp depuis un txt + garder la source - Sujet suivant