#1 Mon 24 January 2022 01:13
- sporito
- Participant actif
- Date d'inscription: 4 Mar 2008
- Messages: 126
Concatener des lignes au sein d'une seul entité
Bonjour,
Je cherche à réaliser une opération de concaténation de plusieurs lignes avec un id commun au sein d'une même entité.
J'ai un shape avec une parcelle d'un coté et une table attributaire avec plusieurs propriétaires qui ont comme identifiant commun l'id de la parcelle.
Je cherche à réaliser une jointure 1:n en concaténant les attributs des propriétaires d'une même parcelle au sein de la meme entité qui est celle de la parcelle.
En fait je souhaiterais si possible qu'une ligne attributaire parcelle contienne des attributs joints concernant les propriétaires sur plusieurs lignes:
1 entité, 1 ligne attributaire, 4 colonnes (dont une avec des attributs écrits en multi-ligne au sein d'une même cellule.)
propriétaire 1
id parcelle | numéro parcelle | section parcelle | propriétaire 2
propriétaire 3
Hors ligne
#2 Mon 24 January 2022 15:04
- Benoit D
- Participant actif
- Date d'inscription: 17 Jul 2018
- Messages: 149
Re: Concatener des lignes au sein d'une seul entité
Bonjour, il y a peut-être plus malin mais vous pouvez y arriver en enchainant un Feature Merger pour joindre vos 2 bases, les parcelles en Requestor, les propriétaires en Suppliers, autoriser les Suppliers multiples, générer une liste des attributs ayant plusieurs valeurs.
Puis un ListConcatenator pour concaténer les attributs que vous souhaitez dans un attribut de votre choix.
Hors ligne
#3 Tue 25 January 2022 10:31
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 992
Re: Concatener des lignes au sein d'une seul entité
Même si FME est un super outil, pas sûr que ce soitr le plus adapté pour votre besoin.
Une simple requête SQL sur vos couches fait le travail :
Code:
SELECT p.id, p.numero, p.section, string_agg(distinct o.proprietaire, ';') as proprietaires FROM parcelles p JOIN proprietaires o ON p.id = o.parcelle_id GROUP BY p.id, p.numero, p.section
Dernière modification par Sylvain M. (Tue 25 January 2022 10:35)
Sylvain M.
Hors ligne
#4 Tue 25 January 2022 10:40
- antoine guillot
- Participant actif
- Date d'inscription: 5 Sep 2008
- Messages: 62
Re: Concatener des lignes au sein d'une seul entité
Bonjour,
Vous pouvez regrouper vos lignes avec aggregator (group by id parcelle), en choisissant de concatener le champ propriétaire et ensuite featuremerger ou featurejoiner vous permet de lier le tout au shape.
Petite question Sylvain : en quoi FME serait moins adapté que du SQL (opas si simple) quand on ne sait mm pas comment sont stoquées les données, le niveau en SQL des personnes qui vont maintenir le traitement, la place de ce traitement dans la problématique globale etc...
Bon courage!
Antoine.
Hors ligne
#5 Tue 25 January 2022 12:43
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 992
Re: Concatener des lignes au sein d'une seul entité
C'était une proposition (d'où le "pas sûr ..."
)
Bien entendu, si FME fait le job directement via des menus, c'est super (je ne le connais pas encore).
Mais c'est vrai que le SQL est un langage ultra basique, et surtout quasi universel, et qu'il m'est régulièrement arrivé de voir des scripts alambiqués pour faire de la gestion de données qui ne prend que quelques lignes en SQL.
Le cas d'une jointure entre 2 tables est la base en base de données relationnelles.
Si les données sont en SHP, QGis par exemple permet de faire du SQL complet sur les tables attributaires, via les "couches virtuelles" du gestionnaire de BDD.
Mais encore une fois, c'est une proposition : je ne connais pas du tout l'architecture SIG de Sporito !
Dernière modification par Sylvain M. (Tue 25 January 2022 12:46)
Sylvain M.
Hors ligne
#6 Tue 25 January 2022 15:14
- sporito
- Participant actif
- Date d'inscription: 4 Mar 2008
- Messages: 126
Re: Concatener des lignes au sein d'une seul entité
Merci bcp pr vos réponses.
Je connais bien les couches virtuelles, mais je ne souhaitais pas dédoubler mes parcelles.
C'est vrai que l’intérêt du FME est qu'il traite des grosses quantités de données, ce qui est mon cas.
Hors ligne
#7 Tue 25 January 2022 15:45
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 992
Re: Concatener des lignes au sein d'une seul entité
Tant mieux si vous parvenez à votre fin avec FME
Pour ce qui est de gérer des "grosses quantités de données", le SQL n'a aucune limite et évite justement de passer par un outils tiers de son SGBD.
Si les données sont déjà dans une base de données relationnelles, les données ne sont pas dupliquées, et il "suffit" (je mets des guillemets car évidemment, ce n'est pas non plus inné comme langage) de créer une "vue".
Juste pour ma curiosité, dans quel système sont stockées vos tables attributaires ?
Sylvain M.
Hors ligne
#8 Wed 26 January 2022 01:13
- sporito
- Participant actif
- Date d'inscription: 4 Mar 2008
- Messages: 126
Re: Concatener des lignes au sein d'une seul entité
Tant mieux si vous parvenez à votre fin avec FME
Pour ce qui est de gérer des "grosses quantités de données", le SQL n'a aucune limite et évite justement de passer par un outils tiers de son SGBD.
Si les données sont déjà dans une base de données relationnelles, les données ne sont pas dupliquées, et il "suffit" (je mets des guillemets car évidemment, ce n'est pas non plus inné comme langage) de créer une "vue".
Juste pour ma curiosité, dans quel système sont stockées vos tables attributaires ?
un shape en local joint à un excel dont le résultat est 1,6M lignes.
Mais finalement, en créant un WMS qui m’allège énormément la donnée, je m’aperçois qu'en l’interrogeant sous QGIS, le résultat m'affiche bien l'ensemble des propriétaires de façon direct.
Hors ligne
#9 Wed 26 January 2022 09:47
- antoine guillot
- Participant actif
- Date d'inscription: 5 Sep 2008
- Messages: 62
Re: Concatener des lignes au sein d'une seul entité
Bonjour Sylvain,
J'étais juste surpris que vous indiquiez que le SQL (qui nécessite une implémentation et donc une adaptation, une infrastructure etc..) était la solution miracle par rapport à FME (sur un forum FME donc avec une grande probabilité que les données soient dans des formats hétérogènes). Pour info vous pouvez très bien faire votre requête SQL dans FME. Votre tournure de phrase indiquait pour moi une connaissance de FME mais sans doute suis-je allé un peu vite en besogne.
Vu votre curiosité, je suis sûr que vous comprendrez un peu mieux l'intérêt d'utiliser un outil de script graphique dans une organisation en complément du code une fois que vous l'aurez testé donc n'hésitez pas. Cette approche est aujourd'hui utilisée dans de nombreux domaines bien au-delà de la géomatique (en intégration de données, qualité des données, jeu video etc..).
Le principal reste que le problème a été résolu.
Bonne journée à tous!
Dernière modification par antoine guillot (Wed 26 January 2022 09:47)
Hors ligne
#10 Wed 26 January 2022 11:43
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 992
Re: Concatener des lignes au sein d'une seul entité
Mais finalement, en créant un WMS qui m’allège énormément la donnée
Alors là, par contre, j'avoue que je ne vois pas du tout de quoi il s'agit ?
Un WMS permet d'accéder à des images : vous parlez peut-être d'un WFS ? (ou peut-être est-ce un terme de FME que je ne connais pas ?)
le résultat m'affiche bien l'ensemble des propriétaires de façon direct.
Chouette Mais du coup, vous faites l’agrégation des propriétaires par parcelle comment ?
Pour info vous pouvez très bien faire votre requête SQL dans FME
C'est bien pour ça que je disais que le SQL est un langage universel, et qu'il vaut vraiment la peine de se pencher dessus quand on manipule des données relationnelles, ce qui est le cas ici. Et c'est un langage commun aux SIG et au BDD non spatiales.
Mais bien sûr, si des utilisateurs ne veulent absolument pas mettre la main dans du code, heureusement que des interfaces graphiques existent, comme celles de FME en particulier
Sylvain M.
Hors ligne
#11 Thu 27 January 2022 11:11
- sporito
- Participant actif
- Date d'inscription: 4 Mar 2008
- Messages: 126
Re: Concatener des lignes au sein d'une seul entité
Sylvain M.
Le WMS est en effet un format image mais il est aussi interrogeable comme un WFS (à ma surprise), et la vue de la petite fiche descriptive me permet de consulter l'ensemble des propriétaires sans avoir eu à concaténer les informations au préalable: mon shape d'origine contient 3 polygones de parcelles dédoublés si 3 proprios.
Je ne retrouve plus la possibilité de partager une capture pour montrer à quoi ça ressemble.
Hors ligne