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

Printemps des cartes 2024

#1 Mon 19 April 2010 15:11

Kyk
Participant actif
Date d'inscription: 20 Jan 2009
Messages: 88

shp2shp - regroupement d'attributs de plusieurs entités dans une seule

Bonjour,

J'ai un shape points contenant des infos sur des espèces animales. A certains endroits, j'ai jusqu'à 22 points superposés au même endroit. Je dois faire une carte avec les noms de ces espèces notés à côté. Afin de simplifier et de rendre surtout plus esthétique ces étiquettes dans ArcMap (création d'une seule étiquette avec des sauts de ligne), je pensais simplifier le shape en supprimant tous les points doublons mais en regroupant l'information contenu dans les champs ESPECE de chaque point en doublons dans le champs du point restant.

Autrement dit : je ne veux pas faire une étiquette à partir de plusieurs champs mais une étiquette à partir du même champs de plusieurs entités situées au même endroit.

Un tel traitement du shape est-il possible avec FME ?

J'ai déjà essayé plusieurs scénarios mais rien ne fonctionne comme je voudrai.

Est-ce que quelqu'un pourrait m'orienter svp ?

Merci d'avance pour vos réponses.

Hors ligne

 

#2 Mon 19 April 2010 15:50

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: shp2shp - regroupement d'attributs de plusieurs entités dans une seule

Bonjour,

Avez-vous essayé "Matcher" ? Vous pouvez lui indiquer un préfixe de liste. Sera ainsi créée une liste des attributs :

Code:

Number of Coordinates: 1

ATTRIBUTE_NAME               ATTRIBUTE_VALUE
--------------------------------------------
_lst{0}._match_id            0
_lst{0}.ESPECE                    test
_lst{0}.csv_type             csv_none
_lst{0}.fme_basename         doublons1
_lst{0}.fme_dataset          E:\FME\fichiers_donnees\test_doublons\doublons1.txt
_lst{0}.fme_feature_type     doublons1
_lst{0}.fme_geometry         fme_point
_lst{0}.fme_type             fme_point
_lst{0}.ID                   1
_lst{0}.X                    1
_lst{0}.Y                    1
_lst{1}._match_id            0
_lst{1}.ESPECE                    test1
_lst{1}.csv_type             csv_none
_lst{1}.fme_basename         doublons1
_lst{1}.fme_dataset          E:\FME\fichiers_donnees\test_doublons\doublons1.txt
_lst{1}.fme_feature_type     doublons1
_lst{1}.fme_geometry         fme_point
_lst{1}.fme_type             fme_point
_lst{1}.ID                   2
_lst{1}.X                    1
_lst{1}.Y                    1
_lst{2}._match_id            0
_lst{2}.ESPECE                    test3
_lst{2}.csv_type             csv_none
_lst{2}.fme_basename         doublons1
_lst{2}.fme_dataset          E:\FME\fichiers_donnees\test_doublons\doublons1.txt
_lst{2}.fme_feature_type     doublons1
_lst{2}.fme_geometry         fme_point
_lst{2}.fme_type             fme_point
_lst{2}.ID                   4
_lst{2}.X                    1
_lst{2}.Y                    1
_match_id                    0
ESPECE                           test
csv_type                     csv_none
fme_basename                 doublons1
fme_dataset                  E:\FME\fichiers_donnees\test_doublons\doublons1.txt
fme_feature_type             doublons1
fme_geometry                 fme_point
fme_type                     fme_point
ID                           1
X                            1
Y                            1

Bounding Box: 
---------------
 min x: 1.000000000000000,  max x: 1.000000000000000
 min y: 1.000000000000000,  max y: 1.000000000000000

Coordinate Listing:
-------------------
1: (1.000000000000000, 1.000000000000000)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-

Par contre cela ne crée pas X attributs, mais X valeurs de listes.

Ensuite, je ne suis pas sûr d'avoir saisi votre modèle de sortie.

Cordialement,


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

 

#3 Mon 19 April 2010 16:28

Kyk
Participant actif
Date d'inscription: 20 Jan 2009
Messages: 88

Re: shp2shp - regroupement d'attributs de plusieurs entités dans une seule

Oui, j'ai essayé avec Matcher.
Mon fichier de sortie doit être un shape sans doublons dont le champs ESPECE correspond à la concaténation des champs ESPECE des autres points doubles qui ont été supprimés, séparé par des sauts de ligne. De cette façon, je pourrai créer une étiquette esthétique dans ArcMap.
Pour le Matcher, je ne comprends pas comment utiliser le préfixe de liste.
J'avais aussi pensé au PointOnPointOverlayer mais j'arrive pas à trouver comment récupérer mes différentes valeurs ESPECES des points situés au même endroit et à les mettre dans mon shape de sortie ne contenant plus que des points simples.

Hors ligne

 

#4 Mon 19 April 2010 16:36

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: shp2shp - regroupement d'attributs de plusieurs entités dans une seule

Utilisez Matcher,
Indiquez un préfixe de liste (dans l'exemple "_lst"),
Ne prenez que les données sortant par Single Matched ou Not Matched (comme indiqué dans la documentation de FME),
Utilisez un listconcatenator en lui indiquant l'attribut de liste (ici "_lst.ESPECE"), le caractère de concaténation (\n pour le saut de ligne si je me souviens bien) et enfin le nom de l'attribut.

Un petit tour sur le site du fabricant pour ce qui est des listes ou du matcher est toujours utile.


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

 

#5 Mon 19 April 2010 17:22

ogayte
Participant assidu
Lieu: Saint-Estève
Date d'inscription: 6 Mar 2006
Messages: 658
Site web

Re: shp2shp - regroupement d'attributs de plusieurs entités dans une seule

essayez ceci :

coordinateRounder (0) au cas ou les points ne soient pas parfaitement superposés
CoordinateFetcher (on récupère x et  y)
StringConcatenator ( x + y), création de l'attribut xy
ListBuilder (attribut de regroupement = xy)
Listconcatenator(nom d'espèce)
2dPointReplacer (pour récupérer la géométrie perdu avec Listbuilder)

résultat : 1 seul point par x,y avec un attribut de type "espèce 1, espèce 2, espèce 3..."


Olivier Gayte
http://www.veremes.com
+33 (0)4-68-38-65-27

Hors ligne

 

#6 Mon 19 April 2010 18:03

Kyk
Participant actif
Date d'inscription: 20 Jan 2009
Messages: 88

Re: shp2shp - regroupement d'attributs de plusieurs entités dans une seule

Merci. J'ai essayé avec un Matcher où je récupère Les MATCHED et les SINGLE_MATCHED dans un PointOnPointOverlayer (Group by : x et y), puis un ListConcatenator sur ESPECE, puis un Matcher. Et ça fonctionne.

J'ai quand même essayé avec ta méthode Olivier et je bloque au 2DPointReplacer où je n'ai plus que 2 choix d'attribut pour le x et le y (les 2 attributs créés avec ListConcatenator et StringConcatenator). Est-ce que j'ai oublié quelque chose ?

Hors ligne

 

#7 Mon 19 April 2010 18:14

ogayte
Participant assidu
Lieu: Saint-Estève
Date d'inscription: 6 Mar 2006
Messages: 658
Site web

Re: shp2shp - regroupement d'attributs de plusieurs entités dans une seule

Tu as raison.
En fait le stringConcatenator est inutile,
Il est préférable de faire un listBuilder en utilisant deux attributs de regroupement x et y, ce qui permet de les récupérer à la fin.


Olivier Gayte
http://www.veremes.com
+33 (0)4-68-38-65-27

Hors ligne

 

#8 Tue 20 April 2010 09:36

Kyk
Participant actif
Date d'inscription: 20 Jan 2009
Messages: 88

Re: shp2shp - regroupement d'attributs de plusieurs entités dans une seule

Merci pour votre aide. J'ai réussi à obtenir ce que je voulais.
Le hic c'est que les colonnes shp sont limités à 254 caractères et que parfois la concaténation de mes noms d'espèces dépassent cette limite. Du coup, mes étiquettes sont tronquées dans ArcMap. Je ne crois qu'il existe vraiment de solution à ce problème à part un travail manuel pour ces étiquettes trop longues. Heureusement, elles ne sont pas trop nombreuses.

Merci encore et bonne journée à tous

Hors ligne

 

#9 Tue 20 April 2010 10:03

Pierre
DesCartesPourUnMondeMeilleur
Date d'inscription: 22 Sep 2005
Messages: 1643

Re: shp2shp - regroupement d'attributs de plusieurs entités dans une seule

Avec un peu d'huile de calculs vous devriez pouvoir faire le tri sur les objets posant problèmes dès leur création dans FME.


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

 

#10 Tue 20 April 2010 10:23

Kyk
Participant actif
Date d'inscription: 20 Jan 2009
Messages: 88

Re: shp2shp - regroupement d'attributs de plusieurs entités dans une seule

en fait, après un peu de réflexion, j'ai résolu le problème en passant tout simplement par une geodatabase en sortie et non shape, puisque la gdb n'est pas limité. Sinon j'avais aussi pensé par un fichier access avec un champs MEMO et ensuite faire un join dessus mais je n'ai pas testé.

Hors ligne

 

Pied de page des forums

Powered by FluxBB