#1 Thu 29 June 2017 10:47
- jlavaure
- Participant assidu
- Date d'inscription: 20 Apr 2013
- Messages: 202
QGIS 2.14: Jointure spatiale avec plusieurs attributs ?
Hello,
Je souhaite faire une opération spatiale des plus simples, mais finalement des plus complexes à réaliser.
Voici mon cas, j'ai deux jeux de données :
- Une couche polygone représentant des zones projets
- Une couche commune
L'objectif est simple, je souhaite ajouter dans la table attributaire "zone projet" x colonnes 'COM_1, COM_2, ....), qui correspondent aux communes qui intersectent mes zones projets.
En cas de jointure spatiale, on peut ajouter seulement une seule commune, hors je souhaite connaitre l'ensemble des communes concernées par mes projets, et ceci par projet.
La solution est peut-être simple mais elle ne me semble pas évidente.
Qu'en pensez-vous ?
Merci d'avance pour votre aide.
J.
Hors ligne
#2 Tue 04 July 2017 16:28
- jlavaure
- Participant assidu
- Date d'inscription: 20 Apr 2013
- Messages: 202
Re: QGIS 2.14: Jointure spatiale avec plusieurs attributs ?
Hello,
Je me permet de relancer mon poste ...
Alors, comment récupérer les attributs des différentes entités qui intersectent ma couche initiale ?
Ou cela n'est-il tout simplement pas faisable ?
J.
Hors ligne
#3 Tue 04 July 2017 18:14
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3928
Re: QGIS 2.14: Jointure spatiale avec plusieurs attributs ?
Bonjour,
Si c'est faisable:
- soit via une fonction python que tu crées et que tu appelles dans la calculatrice de champs,
- soit via les couches virtuelles et du SQL (il te faudra peut-être chercher des requêtes pour concaténer en SQL et le forum GEO-BD peut aider en cela)
A partir des fonctions d'agrégation des récentes versions, la version 3.0 de QGIS proposera de faire ce genre de choses directement dans la table attributaire (même si personnellement je n'ai encore pas réussi à le faire fonctionner comme il faut :'( )
Hors ligne
#4 Wed 05 July 2017 08:33
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: QGIS 2.14: Jointure spatiale avec plusieurs attributs ?
Bonjour,
Est-ce qu'une commune n'est concernée que par un seul projet ? auquel cas, faites la jointure en récupérant le nom du projet dans la couche commune...
Nicolas.
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#5 Wed 05 July 2017 09:49
- jlavaure
- Participant assidu
- Date d'inscription: 20 Apr 2013
- Messages: 202
Re: QGIS 2.14: Jointure spatiale avec plusieurs attributs ?
Bonjour,
@SANTANNA :
Oula, mes connaissances en python ne me permettent pas de faire un petit script comme ça. Faut vraiment que je travail le Python ...
Je n'ai pas penser aux couches virtuelles, je vais voir ce que je peux faire.
@nicoboud :
Et non, je peux avoir plusieurs projets sur une seule et même commune, trop simple sinon :-)
--
Du coup d'autres idées ?
J.
Hors ligne
#6 Wed 05 July 2017 10:49
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: QGIS 2.14: Jointure spatiale avec plusieurs attributs ?
La 2ème solution de SANTANA n'est pas très compliquée (couche virtuelle) :
voir ici : http://www.sigterritoires.fr/index.php/ … irtuelles/
en adaptant la jointure qui est spatiale dans votre cas :
Code:
SELECT * FROM tableA, tableB WHERE ST_Intersects(tableA.geometry, tableB.geometry)
Ensuite un export du résultat dans un tableur pour faire un tableau croisé dynamique, et vous aurez au choix la liste de vos communes par projet ou inversement la liste des projets par commune.
Nicolas.
Dernière modification par nicoboud (Wed 05 July 2017 10:52)
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#7 Wed 05 July 2017 12:14
- jlavaure
- Participant assidu
- Date d'inscription: 20 Apr 2013
- Messages: 202
Re: QGIS 2.14: Jointure spatiale avec plusieurs attributs ?
@nicoboud :
Pas con !
Par contre je n'arrive pas à créer ma couche virtuelle, voici mon code (19_23_ZP = Zone projet et COMMUNE ... ba les communes) :
Code:
SELECT * FROM 19_23_ZP, COMMUNE WHERE ST_Intersects(19_23_ZP.geometry, COMMUNE.geometry)
Et j'obtiens le message d'erreur suivant lorsque je test tout ça :
Code:
Query execution error on CREATE TEMP VIEW_tview AS ELECT * FROM 19_23_ZP, COMMUNE WHERE ST_Intersects(19_23_ZP.geometry, COMMUNE.geometry): 1 - unrecognized token: "19_23_ZP"
help please ?
J.
Dernière modification par jlavaure (Wed 05 July 2017 12:15)
Hors ligne
#8 Wed 05 July 2017 12:20
- jlavaure
- Participant assidu
- Date d'inscription: 20 Apr 2013
- Messages: 202
Re: QGIS 2.14: Jointure spatiale avec plusieurs attributs ?
Non c'est bon finalement, il n'aimait pas la table commençant par un chiffre, quelque ponctuation est c'est bon.
Et ça fonctionne !
Merci ;-)
PS : Seul bémol, on sent que QGIS n'aime pas trop les couches virtuelles, il est assez long pour afficher la table attributaire de celle-ci, mais c'est niquel !
J.
Hors ligne
#9 Tue 01 August 2017 18:01
- jlavaure
- Participant assidu
- Date d'inscription: 20 Apr 2013
- Messages: 202
Re: QGIS 2.14: Jointure spatiale avec plusieurs attributs ?
Bonjour à tous,
Je fais remonter ce topic.
Jusqu’à présent la création de la couche virtuelle se passait très bien, j'exportais ça sur excel, et avec une matrice j'obtenais le résultat voulu.
Je ne comprend pas pourquoi, mais désormais lorsque j'exporte vers excel via un simple copier/coller de ma table attributaire (virtual layer), j'obtiens le double de ligne par rapport au nombre d'entité. Des lignes "vides" ... résultat ma matrice ne fonctionne plus.
Comment cela se fait-il que lorsque j'exporte 5 entités, j'en obtiens le double dans mon excel ?
Merci pour votre aide.
J.
Hors ligne
#10 Wed 02 August 2017 09:50
- jlavaure
- Participant assidu
- Date d'inscription: 20 Apr 2013
- Messages: 202
Re: QGIS 2.14: Jointure spatiale avec plusieurs attributs ?
Hello,
Je crois avoir compris l'origine du problème, et ce n'est pas la couche virtuelle.
J'ai des "grand" polygones complexes et très précis. Lorsque je sélectionne sa ligne dans la table attributaire et la colle dans excel, la valeur "wkt_geom" est tellement grande qu'elle prend deux lignes.
Un petit coup de GRASS v.generalize et hop le problème est réglé.
Si quelqu'un rencontre un jour ce problème, voila une solution.
J.
Hors ligne