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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Tue 11 June 2024 09:39

Mercier Laurent
Participant actif
Date d'inscription: 28 Feb 2006
Messages: 86

Traitement Transpose Like

Bonjour la communauté

Je cherche désespérément un traitement qui me permette un genre de transpose  …

Je dois réaliser une carte des dégradations par portions des canalisations d’Eaux Pluviales mais les données du tableau (xls) qui m'a été transmis est ordonnancé d'une telle manière qu'il m'est difficile de réaliser cette thématique 

Ce fichier xls récence les canalisations d’EP découpés en portion P0, P1, Pn+1, …. où le degré de dégradation (1 à 9) est renseigné pour chaque portion :   

TR        | P0  | P1  | P2 | Pn |…
42500   |  5  |   3  |  1  |  x  | …
25804   |  3  |   8  |  6  |  y  | …
12590   |  9  |   1  |  5  |  z  | …
……
……

Ce que j’aimerai faire c’est ce genre de tableau ordonné de cette façon :
-    création d’un attribut Portion qui reprend les différents attributs P0,P1,P2,Pn+1, …
-    et un second Dégradation qui reprend les valeurs de dégradation de chaque portion

TR      | Portion    |       Dégradation     |….
42500 |       0      |              5              | ….
42500 |       1      |              3              | …. 
42500 |       2      |              1              | …. 
42500 |       n      |              x              |  ….. 
25804 |       0      |              3              | ….
25804 |       1      |              8              | ….
25804 |       2      |              6              | ….
25804 |       n      |              y              | ……
12590 |       0      |              9              | …..
12590 |       1      |              1              | …..
12590 |       2      |              5              | …..
12590 |       n      |              z              | …..
……
…….

j'espère que ma demande est assez claire

Comment voyez vous les traitements pour réaliser cette transposition qui n’en est pas vraiment une !

Merci par avance pour vos conseils et pistes d’investigation FMEsque

Cordialement

Laurent

Hors ligne

 

#2 Tue 11 June 2024 13:13

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 427

Re: Traitement Transpose Like

Bonjour,

Pour créer la colonne Dégradation, j'utiliserais un ListPopulator https://docs.safe.com/fme/2016.1/html/F … ulator.htm en précisant le début commun des attributs P0,P1... (dans votre exemple "P").
Ainsi je me retrouverais avec pour chaque TR une liste contenant toutes les valeurs de P.
Puis j'utiliserais un ListExploder pour exploser cette liste sur autant de lignes qu'il y a de valeurs de P.

Il faut cependant que les noms des attributs P1, P2 etc aient bien une racine commune "P" et un indice qui se suit, 1 2 3 4... sans trou.
A voir aussi ce qu'il se passe si une valeur est manquante pour un des P pour certains TR.

Pour la colonne Portion, si un simple compteur suffit alors voir du côté de counter https://docs.safe.com/fme/2019.0/html/F … ounter.htm en utilisant comme nom de compteur l'attribut TR, ainsi le compteur sera mis à 0 à chaque changement de valeur de TR.
Si en revanche il faut récupérer la valeur du P ça sera un peu plus technique je pense mais à mon avis faisable avec un AttributeManager.

Je n'ai pas FME sous la main donc je ne peux pas tester pour le moment.

Hors ligne

 

#3 Tue 11 June 2024 15:25

Mercier Laurent
Participant actif
Date d'inscription: 28 Feb 2006
Messages: 86

Re: Traitement Transpose Like

Merci P.jeremie pour ces pistes je vais tester !!

Hors ligne

 

#4 Wed 12 June 2024 09:52

Mercier Laurent
Participant actif
Date d'inscription: 28 Feb 2006
Messages: 86

Re: Traitement Transpose Like

p.jeremie a écrit:

Bonjour,

......

Il faut cependant que les noms des attributs P1, P2 etc aient bien une racine commune "P" et un indice qui se suit, 1 2 3 4... sans trou.
A voir aussi ce qu'il se passe si une valeur est manquante pour un des P pour certains TR.


En effet ca va de P0 à P50, donc tous les TR n'ont pas tous le même nbre de portions (certains TR ont que 3 portions et d'autre 50) donc ListExploder me renvoie énormément d'enregistrements 60 840 en fait il me créé autant d'enregistrement qu'il y a de Pn par TR alors qu'il y a 1014 portions concernés!

p.jeremie a écrit:

Pour la colonne Portion, si un simple compteur suffit alors voir du côté de counter https://docs.safe.com/fme/2019.0/html/F … ounter.htm en utilisant comme nom de compteur l'attribut TR, ainsi le compteur sera mis à 0 à chaque changement de valeur de TR. ...
Si en revanche il faut récupérer la valeur du P ça sera un peu plus technique je pense mais à mon avis faisable avec un AttributeManager.


En effet c'est ce cas reprendre la valeur du P si il y a une note de dégradation, quel serait la procédure avec AttributeManager ?

merci par avance

Hors ligne

 

#5 Wed 12 June 2024 12:23

Mercier Laurent
Participant actif
Date d'inscription: 28 Feb 2006
Messages: 86

Re: Traitement Transpose Like

Alors j'ai pu récupérer les portions de chaque TR maintenant il me faut récupérer la valeur de dégradation assigné à la portion ...(voir la capture)
càd >> si NUMERO_POR =x alors DEGRADATION PORTION = la valeur contenue dans Px ...


par ex NUMERO_POR = 1 il faudrait que la valeur contenue dans l'attribut P1 (ici 4) soit reprise dans l'attribut DEGRADATION PORTION et ainsi de suite


mais je bloque sur retranscription avec les transformers ?

Merci par avance


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

Hors ligne

 

#6 Wed 12 June 2024 13:20

p.jeremie
Participant assidu
Lieu: Valence
Date d'inscription: 10 Sep 2017
Messages: 427

Re: Traitement Transpose Like

Est-ce que vous pouvez indiquez comment vous avez fait pour créer l'attribut NUMERO_POR ? Et l'attribut DEGRADATION_PORTION (si c'est à partir de ListExploder il ne devrait pas être vide normalement) ?

Hors ligne

 

#7 Wed 12 June 2024 17:19

Mercier Laurent
Participant actif
Date d'inscription: 28 Feb 2006
Messages: 86

Re: Traitement Transpose Like

Alors j'ai fait une jointure avec ma table PORTION Oracle Spatiale, comme TR est composé de x Portion je récupère donc chaque portion (et du coup le NUMERO_POR) qui compose un TRONCON.
Pour DEGRADATION_PORTION si j'utilise listExploder ça me renvoie un nbre d'enregistrement trop élevé 60840 au lieu des 1014 portions qui composent la totalité de mes TR.

en PJ mon fichier xls pour mieux comprendre ma problématique

merci

Dernière modification par Mercier Laurent (Wed 12 June 2024 17:21)


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

Hors ligne

 

#8 Wed 12 June 2024 22:40

Benoit D
Participant assidu
Date d'inscription: 17 Jul 2018
Messages: 151

Re: Traitement Transpose Like

Bonjour, comme l'a dit @p.jeremie ListPopulator avec "P" comme préfixe.
Puis BulkAttributeRemover pour faire le ménage avec comme paramètre "^P\d+".
ListExploder sur l'attribut "_list"
AttributeRenamer pour passer _list en "Dégradation" et _element_index en "Portion"
Un AttributFilter sur Dégradation pour retirer toutes les entités "fantômes" qui n'ont pas de dégradation.
Vous aurez le tableau voulu avec 992 entités d'après votre Excel.

Trois points d'attention :
- la portion 0 n'est que peu utilisée (5 fois) et c'est perturbant sans en connaître les raisons. Une ligne en plus contient ici un commentaire Tronçon 55320.
- la dégradation de la portion 7 de ce même tronçon contient "-" et non une valeur numérique. 5 autres tronçons contiennent des "-" à la place des Dégradation, il faudrait les traiter dans le script.
- la dernière ligne indiquant "LEGENDE des qualifications : voir onglet "Grille de Qualification"" n'est retirée qu'avec le dernier AttributeFilter

Dernière modification par Benoit D (Wed 12 June 2024 22:44)


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

Hors ligne

 

Pied de page des forums

Powered by FluxBB