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 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 assidu
Date d'inscription: 17 Jul 2018
Messages: 151

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

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

Re: Concatener des lignes au sein d'une seul entité

C'était une proposition big_smile (d'où le "pas sûr ..." wink )
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: 995

Re: Concatener des lignes au sein d'une seul entité

Tant mieux si vous parvenez à votre fin avec FME smile

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é

Sylvain M. a écrit:

Tant mieux si vous parvenez à votre fin avec FME smile

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

Re: Concatener des lignes au sein d'une seul entité

sporito a écrit:

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 ?)

sporito a écrit:

le résultat m'affiche bien l'ensemble des propriétaires de façon direct.


Chouette smile Mais du coup, vous faites l’agrégation des propriétaires par parcelle comment ?


antoine guillot a écrit:

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 smile


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

 

Pied de page des forums

Powered by FluxBB