Pages: 1
- Sujet précédent - QGIS: Tenir compte des doublons lors de la jointure Excel-Shape - Sujet suivant
#1 Tue 17 March 2020 16:35
- Kinnox
- Juste Inscrit !
- Date d'inscription: 17 Mar 2020
- Messages: 1
QGIS: Tenir compte des doublons lors de la jointure Excel-Shape
Bonjour,
Grâce au shapefile du cadastre français et à partir d'un tableur Excel contenant des identifiants cadastraux (des parcelles que je veux étudier), je réalise du géo-référencement de parcelles agricoles. Une fois l'identification faite (grâce à une jointure sur QGis), j'extraie les parcelles sélectionnées en un nouveau shapefile pour l'intégrer ensuite dans des outils de télédétection (en retouchant un peu les polygones auparavant, pour qu'ils soient au ras de la végétation).
Mais très souvent, il peut, au sein d'une parcelle cadastrale, y avoir plusieurs cultures. Or dans ma procédure de télédétection, il faut bien différencier les cultures. Bien sûr, dans mon fichier Excel de base, cette information (plusieurs cultures au sein d'une même parcelle cadastrale) est présente. En effet, j'aurais plusieurs lignes avec le même identifiant cadastral mais avec une culture différente.
Le problème est que lors d'une jointure avec QGis, il va joindre la première ligne Excel qu'il trouve à un identifiant cadastral du shapefile (et heureusement!), mais ne se souciera pas des autres lignes.
Ma question est de savoir si il y a un moyen de demander à QGis de dupliquer une entité dans le shape si il y a plusieurs lignes Excel correspondantes.
Pour moi ce n'est pas un problème si on a plusieurs fois le même polygone, on reprendra toujours les contours plus tard.
Merci de votre retour,
Hors ligne
#2 Tue 17 March 2020 18:19
- Julien81
- Participant assidu
- Lieu: Giroussens
- Date d'inscription: 14 Jan 2019
- Messages: 181
Re: QGIS: Tenir compte des doublons lors de la jointure Excel-Shape
Bonjour
si j'ai bien compris vous avez bien le nombre de ligne souhaité coté tableur Excel mais pas les géométries, celles ci sont dans votre référentiel cadastre (le shp), donc effectivement en jointure (de type 1-n) vers les parcelles des attributs de votre tableur il ne prendra qu'une équivalence, la première à partir de votre champ de jointure (code parcelle, idpar).
En raisonnant dans l'autre sens, vous pourriez rapatrier les géométries des parcelles dans votre tableur (car bon nombre de lignes=entités souhaitées, en extrayant la géométrie des parcelles quand l'identifiant parcelle du shp = l'identifiant parcelle du tableur).
Sous QGis un outil de la boite à outils traitement (Geometrie vectorielle\Geometrie par expression) vous permettra cela.
Soit dans votre projet :
1-Votre tableur test_p_agri ("IDPAR" peut être en doublons si plusieurs cultures sur parcelle)
2-votre table parcelle cadastre ("id" Unique)
3-Vous utilisez l'outil 'Geometrie par expression' sur votre tableur pour obtenir en sortie une couche avec les géométrie des parcelles (dont doublons) dont l'id est identique à votre parcelle du tableur.
La formule pour le calcul de la geometrie - à adapter :
Code:
geometry(get_feature( 'parcelles','id',"IDPAR"))
Cordialement
Hors ligne
#3 Sun 22 March 2020 17:53
- valdorant
- Participant occasionnel
- Date d'inscription: 12 Mar 2012
- Messages: 17
Re: QGIS: Tenir compte des doublons lors de la jointure Excel-Shape
Bonjour,
je relance ce post qui m’intéresse fortement car j'ai le même besoin que Kinnox.
J'ai du mal à retrouver les moutons dans la formule de Julien81 :
IDPAR => est-ce bien le champ contenant la géométrie dans le fichier excel? En lançant la formule, la colonne va-t-elle s'implémenter toute seule ou faut-il la créer avant dans le fichier Excel ?
Parcelles et id sont bien les champs côté excel et shp permettant de faire la jointure ?
Enfin dernière question, une fois le fichier excel jointer avec les géométries renseignées, Qgis est-il tout simplement capable d'afficher la couche avec les polygones à partir du fichier excel ?
Désolé si cela fait un peu question de débutant mais je n'ai jamais fait cette manip avec qgis, cela me semble trop simple pour être vrai...
Merci pour vos retour.
Hors ligne
#4 Sun 22 March 2020 22:52
- Julien81
- Participant assidu
- Lieu: Giroussens
- Date d'inscription: 14 Jan 2019
- Messages: 181
Re: QGIS: Tenir compte des doublons lors de la jointure Excel-Shape
bonsoir,
ton tableur ouvert sous qgis doit contenir l'identifiant des parcelles ("IDPAR") idem à ta couche géographique des parcelles ("id")
Tu crées un champ geom dans ton tableur et mise à jour avec geometry(get_feature('parcelles','id',"IDPAR"),
puis enregistrer sous en csv par exemple (ou shp, car en excel il n'écrit pas dans le fichier source, du moins chez moi) et tu obtiens un tableur/couche avec des geometries (dont doublons superposées)
La formule met à jour ton champ créé pour les géométries, en allant chercher la geometry de la couche shp 'parcelle' dont l'id' ="IDPAR" de ton tableur ; si tu as bien ces infos, sinon je comprends pas la démarche car sans géometrie ou sans identifiant pour faire le lien entre le tableur et un référentiel de parcelles rien n'est possible.
cordialement
Hors ligne
#5 Mon 23 March 2020 17:32
- valdorant
- Participant occasionnel
- Date d'inscription: 12 Mar 2012
- Messages: 17
Re: QGIS: Tenir compte des doublons lors de la jointure Excel-Shape
Bonjour Julien81,
J'arrive a générer la formule avec succès, en revanche je bloque au moment de l'enregistrement de la couche.
Je fais un blocage sur le fichier excel que j'ai enregistré en csv. Lorsque que je lance l'enregistrement de la couche (le csv) après l'application de la formule, le champ devant contenir la géométrie est tout simplement vide. Je me demande si quelque chose d'essentiel m'échappe, le format du champ devant recevoir la géométrie ? Et comment utiliser un csv comme couche géométrique en affichant des polygones ?
Merci d'avance pour tes lumières !
Hors ligne
#6 Tue 24 March 2020 14:30
- Julien81
- Participant assidu
- Lieu: Giroussens
- Date d'inscription: 14 Jan 2019
- Messages: 181
Re: QGIS: Tenir compte des doublons lors de la jointure Excel-Shape
Bonjour
j'ai pas l'impression de bien éclairer si ce n'est parfois de faire du morse avec mon dell^^
peut être le format du champs en effet, j'ai du texte avec 254 caractères autorisés (le max, suffisant pour des parcelles à priori).
Par contre il faut peut-être rajouter geom_to_wkt(geometry(get_feature('parcelles','id',"IDPAR"))-->formatage de géométrie textuel (donc bien dans un champ type texte)
Pour ouvrir le fichier ensuite, il faut passer par le gestionnaire de couche / ouvrir un fichier de texte délimité, bien spécifier l'encodage, puis préciser que le fichier contient des géométries wkt, il détecte tout seul le type, juste faire attention aux déclaration de projection (EPSG:2154 si tu travailles sur du parcellaire de référence en lambert 93.
Cordialement et bon courage
Hors ligne
#7 Tue 24 March 2020 15:15
- valdorant
- Participant occasionnel
- Date d'inscription: 12 Mar 2012
- Messages: 17
Re: QGIS: Tenir compte des doublons lors de la jointure Excel-Shape
Julien81,
Franchement c'est moi qui devrait mieux mettre mes lunettes, ou les changer...
Je n'ai tout simplement pas chercher suffisamment l'outil de traitement \Geometrie vectorielle\Geometrie par expression...
et quand on utilise cet outil, on a la possibilité de créer une nouvelle couche (pas virtuelle, chez moi cela ne fonctionne pas) pour laquelle un nouveau SHP se génère contenant l'intégralité des parcelles issues du fichier Excel (même celles pour lesquelles la géométrie n'est pas récupérée) avec les géométrie du cadastre. Les multilignes du fichier excel se transforme en multipolygonnes superposés.
Tout simplement exactement ce que je cherchais à faire à l'origine ! UN GRAND MERCI
En revanche, pouvoir récupérer une géométrie textuel tenant dans 254 caractères m'intéresse encore plus, cela permettrait de faire le lien directement dans un gestionnaire de base de données (donc bien plus rapide) et d'utiliser le résultat sous qgis... Quelqu'un a déjà essayé ?
Encore merci à la communauté !
Hors ligne
#8 Wed 25 March 2020 11:58
- Julien81
- Participant assidu
- Lieu: Giroussens
- Date d'inscription: 14 Jan 2019
- Messages: 181
Re: QGIS: Tenir compte des doublons lors de la jointure Excel-Shape
Bien vu,
j'avoue avoir utilisé celui - ci (geometry par expression) il y a peu mais je n'y ai pas pour autant pensé ayant privilégié l'autre méthode qui reviens au final au même pour des fichiers.
Effectivement, en base de donnée (postgres/postgis?), si tu as tes références parcellaires d'un côté et ton tableur sans les géom de l'autre, en sql cela est tout à fait à privilégier, tu peux sous DBManager dans QGIS importer une couche de données postgres/gis par une requête qui ferait la jointure entre les deux tables pour obtenir une couche géo (une vue du coup car les deux tables sources sont bien distinctes et on ne génère pas de nouvelle) ; ainsi pas besoin de stocker x fois chaque géométrie (pas comme j'ai pu faire)!
Bonne journée
Hors ligne
#9 Wed 01 April 2020 11:26
- valdorant
- Participant occasionnel
- Date d'inscription: 12 Mar 2012
- Messages: 17
Re: QGIS: Tenir compte des doublons lors de la jointure Excel-Shape
Bonjour,
Je reviens sur le sujet car j'ai creusé l'idée évoquée par Julien81 afin de récupérer la géométrie en format TXT.
Je suis donc parvenue à extraire les géométries en faisant un export de la couche cadastre en CSV avec la géométrie en polygone WKT.
Cette base cadastre mise sur access est alors liée avec ma table des parcelles agricoles. Je récupère donc la géométrie WKT sur ma table des parcelles agricoles grâce à la clé IDPAR et ID pour le cadastre.
Ne reste plus qu'à exporter cette table en fichier TXT et à l'intégrer dans QGIS et je retrouve ainsi le même résultat que celui fait avec la fonction "geometry par expression".
Comme c'est access qui fait le gros du travail de jointure, cela est beaucoup plus rapide que quand c'est Qgis qui le fait ! Et comme je suis obligé de faire d'autres jointure sur access, je fais cela en une seule fois !
Voilà, c'est mon retour d'expérience. C'est une solution pouvant servir à d'autre pour faire une jointure 1-n.
Merci Julien81 d'avoir donné l'idée de prendre le problème à l'envers.
Hors ligne
#10 Thu 02 April 2020 02:19
- carteq
- Participant assidu
- Date d'inscription: 8 Mar 2008
- Messages: 829
Re: QGIS: Tenir compte des doublons lors de la jointure Excel-Shape
Ma question est de savoir si il y a un moyen de demander à QGis de dupliquer une entité dans le shape si il y a plusieurs lignes Excel correspondantes
En SQL, c'est vite fait :
Select * from [shape] JOIN [table] on [shape].IDcad = [Table].IDcad
Il suffit de créer une nouvelle couche à partir du résultat en utilisant la géométrie de shape.
(*syntaxe non vérifiée pour QGIS mais probablement correcte)
Dernière modification par carteq (Thu 02 April 2020 02:21)
Hors ligne
#11 Fri 12 February 2021 08:18
- doan
- Juste Inscrit !
- Date d'inscription: 12 Feb 2021
- Messages: 1
Re: QGIS: Tenir compte des doublons lors de la jointure Excel-Shape
Bonjour,
Je me permet de revenir sur ce sujet qui pourrait bien me sauver la mise, à condition que je règle un petit souci ^^'
A noter : Je suis novice en la matière
J'ai testé la formule que vous proposez pour un cas de figure similaire à celui exposé initialement par Kinnox. Le fichier que j'obtiens en sortie est bien vectoriel (d'après la manière dont il s'affiche dans le menu couche), l'ensemble du contenu du tableur initial apparait bien dans la table attributaire du fichier en sortie, mais les entités n'apparaissent pas. Lorsque je fais une selection dans la table attributaire et que je tente de zoomer dessus, on m'indique : "impossible de zoomer sur les entités sélectionnées : aucune étendue n'a pu être déterminée".
Histoire d'être bien sûre d'avoir compris la manip, voici ce que j'ai fais :
-j'ouvre ma table ("survey") et ma couche de polygones ("communes") dans qgis.
A noter : "survey" correpond aux résultats d'une enquête par questionnaire. Chaque ligne correspond aux réponses d'un répondant. L'idée est de représenter la répartition géographique des répondants sur une carte. Je souhaite créer un polygone par répondant et donc par ligne.
"communes" correpond à une couche représentant sous forme de polygone chaque commune française.
-dans ma table, je n'ai préparé aucune colonne, ou champ "geom" (@Julien81 : je n'ai pas du tout compris de quoi il était question quand vous avez abordé cette question avec Valdorant)
-Je dispose dans ma table d'un champ "CODEINSEE" (correspondant au lieu d'habitation de chaque répondant). Certains répondants ont le même lieu d'habitation, certaines valeurs de CODEINSEE peuvent donc être redondantes dans la table.
-Je dispose dans ma couche "commune" d'un champ "insee". Chaque polygone dispose dans ce champs d'une valeur distincte car 1commune=1code insee
-J'ai veillé à ce que les valeurs de "CODEINSEE" et "insee" soient au même format, en l'occurence au format texte.
-Dans géométrie par expression, j'indique en couche source : "survey" ; en type de géométrie en sortie : "Polygone"; et en expression : geometry(get_feature( 'commune','insee','CODEINSEE')); puis j'execute.
Auriez-vous une idée de ce qui ne va pas dans ma manip ? Désolée si j'ai été un peu longue, et merci d'avance pour votre aide !
Cordialement.
Hors ligne
Pages: 1
- Sujet précédent - QGIS: Tenir compte des doublons lors de la jointure Excel-Shape - Sujet suivant