Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Thu 10 December 2020 15:28
- kili888
- Participant actif
- Date d'inscription: 4 May 2020
- Messages: 93
QGIS: Joindre par localisation
Bonjour,
J'ai une couche communes de mon département, j'ai la couche cours d'eau. Plusieurs cours d'eau intersectes une même communes.
Comment faire la jointure. Forcément joindre par localisation ne fonctionne pas.
Merci d'avance
Hors ligne
#2 Thu 10 December 2020 15:53
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1671
Re: QGIS: Joindre par localisation
Bonjour,
Peut-être d'abord découper les cours d'eau par la couche communes, et après faire la jointure spatiale par localisation. Attention moi aussi j'ai mis un post à ce sujet, ma jointure spatiale par localisation ne fonctionne pas non plus
Hors ligne
#3 Fri 11 December 2020 10:59
- kili888
- Participant actif
- Date d'inscription: 4 May 2020
- Messages: 93
Re: QGIS: Joindre par localisation
oui mais non ça ne résout pas le problème. Je suis sûr c'est possible où en SQL, c'est une jointure de type 1:N
Hors ligne
#4 Mon 14 December 2020 10:09
- kili888
- Participant actif
- Date d'inscription: 4 May 2020
- Messages: 93
Re: QGIS: Joindre par localisation
Mais je ne sais pas du tout comment faire
Hors ligne
#5 Mon 14 December 2020 10:54
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3948
Re: QGIS: Joindre par localisation
Bonjour,
J'ai une couche communes de mon département, j'ai la couche cours d'eau. Plusieurs cours d'eau intersectes une même communes.
Comment faire la jointure.
A quelles fins? Que souhaitez vous obtenir? La réponse de conejo est presque celle que j'aurais proposée (supposant que vous souhaitez avoir des statistiques sur les cours d'eau par commune) - même outil mais avec résumé. Mais si ça ne résout pas le problème, il faudra peut-être un peu plus expliquer le problème.
Hors ligne
#6 Mon 14 December 2020 11:09
- kili888
- Participant actif
- Date d'inscription: 4 May 2020
- Messages: 93
Re: QGIS: Joindre par localisation
Je monte une grosse basse de donnée qui regroupe beaucoup de choses etc.. cela en prenant comme base une couche communes. Je fait donc plusieurs jointures avec d'autres données géographiques pour ajouter des données à la couche communes initiales.. les cours d'eau en font partis.
Je ne peux pas recopier 1 par 1 les 670 cours d'eau et rentrer pour mes 570 communes manuellement quel cours d'eau correspond. Il faut donc faire une jointure spatiales. Or joindre les attributs par localisation ne fonctionne pas c'est logique. Le problème est que plusieurs cours d'eau intersecte une même communes. C'est pour cela que je dis qu'il s'agit surement d'une jointure 1:N. J'ai essayé joindre par localisation (résumé) mais il joint uniquement 1 seul cours d'eau alors que plusieurs intersecte une même commune. Je ne vois pas comment faire
Hors ligne
#7 Mon 14 December 2020 12:46
- kili888
- Participant actif
- Date d'inscription: 4 May 2020
- Messages: 93
Re: QGIS: Joindre par localisation
Ou tout simplement j'ai réussis à joindre les communes avec le code INSEE, pouvoir garder 1 seul entité communes avec un champs qui concatène les noms des cours d'eau. Exemple "nom1,nom2)
Hors ligne
#8 Tue 15 December 2020 10:30
- conejo
- Participant assidu
- Lieu: Lunel
- Date d'inscription: 2 Dec 2005
- Messages: 1671
Re: QGIS: Joindre par localisation
vous avez résolu le problème?
Hors ligne
#9 Tue 15 December 2020 11:40
- kili888
- Participant actif
- Date d'inscription: 4 May 2020
- Messages: 93
Re: QGIS: Joindre par localisation
non
Hors ligne
#10 Tue 15 December 2020 12:00
- kili888
- Participant actif
- Date d'inscription: 4 May 2020
- Messages: 93
Re: QGIS: Joindre par localisation
Je suis absolument coicné alors que cela doit être d'une banalité absolu
Hors ligne
#11 Tue 15 December 2020 13:57
- kili888
- Participant actif
- Date d'inscription: 4 May 2020
- Messages: 93
Re: QGIS: Joindre par localisation
Voir les pièces jointes de l'état actuelle et le résultat voulus
Dernière modification par kili888 (Tue 15 December 2020 13:58)
Hors ligne
#12 Tue 15 December 2020 16:04
- lchevrier
- Participant occasionnel
- Date d'inscription: 16 Feb 2018
- Messages: 41
Re: QGIS: Joindre par localisation
Salut,
Tu sais utiliser spatialite sur QGIS ?
Je ne suis pas très bon en spatialite, certains sauront certainement faire bien mieux en moins de manip, mais je crois avoir une solution détournée.
1- Joindre les attributs 'cours d'eau' par localisation 'commune' avec comme type de jointure "Créer une entité distincte pour chaque entité correspondante (un à plusieurs)"
Tu te retrouves alors avec une couche qu'on appellera jointure contenant la table attributaire suivante :
cp nom
71001 Bief du Moulin Richy
71002 Bief du Moulin de Serville Ruisseau
71002 la Noue
71002 la Tenarre
2- créer une nouvelle base de donnée spatialite temporaire que l'on nommera "bdd"
3- exporte ta couche "jointure" dans ta base de donnée spatialite (enregistrer sous spatialite/...)
4- Clique sur l'onglet "Base de données" / DB manager / Spatialite / bdd.sqlite / jointure
5- Clique sur "fenêtre sql" (une icone avec une clé à gauche de "import de couche...")
6- tape cette requête :
select cp, group_concat(nom) intersection
from jointure
group by cp
Dans le détail cela signifie
Selon le champ "cp" (code postal) regroupe les lignes "nom" (rivière) dans un nouveau champ "intersection"
de la table "jointure"
regroupe selon "cp"
7- Clique sur "Exécuter"
8- Tu obtiens l'aperçu souhaité, mais tu ne l'a pas dans une couche carto simplement en tableau.
9- coche la case "Charger en tant que nouvelle couche"
10- Clique sur "Charger"
11- le tableau est chargé sur qgis sous le nom "CoucheRequête"
12- retourne sur ta couche initiale "commune", clique droit "Propriétés..." , onglet "jointures", joindre la couche "CoucheRequête"
champ de jointure "cp"
champ dans la couche cible "cp"
Joined fields "intersection"
Et voilà le travail, plus qu'à "enregistrer sous" ta couche commune en geopackage ou shapefile,... pour ne pas perdre la jointure à la fermeture de ton projet.
C'est vraiment très brouillon et bidouillé tout ça, j'en ai conscience et j'espère que quelqu'un avec de l'expertise t'apportera une solution plus convenable, en attendant ça peut te dépanner
Dernière modification par lchevrier (Tue 15 December 2020 16:06)
Hors ligne
#13 Tue 15 December 2020 16:55
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3948
Re: QGIS: Joindre par localisation
Bonjour,
Kiili888, sur la base de vos images, essayez donc l'outil du modeleur agrégation
Je pensais que vous aviez deux couches distinctes
Hors ligne
#14 Wed 16 December 2020 08:45
- kili888
- Participant actif
- Date d'inscription: 4 May 2020
- Messages: 93
Re: QGIS: Joindre par localisation
A la base oui c'était bien 2 couches mais j'ai réussis entre temps à joindre le code INSEE, je vais essayer vos méthodes.
Hors ligne
#15 Wed 16 December 2020 11:56
- kili888
- Participant actif
- Date d'inscription: 4 May 2020
- Messages: 93
Re: QGIS: Joindre par localisation
C'est bien l'algorithme agrégation qu'il me faut j'ai plus où moins le résultat. Je dois juste mal le paramétrer.
Hors ligne
#16 Wed 16 December 2020 14:59
- kili888
- Participant actif
- Date d'inscription: 4 May 2020
- Messages: 93
Re: QGIS: Joindre par localisation
Merci beaucoup j'ai mon résultat avec l'algo agrégation. Je me débrouille un peut autrement il me joint tout les noms + les codes INSEE, je créer donc un nouveau champs avec la fonction left qui récupère les 5 premier caractères à gauche pour avoir un seul code par lignes.
J'ai donc bien une ligne 1 codes INSEE avec en face tous les cours d'eau qui intersecte la commune dans un seul et même attribut.
Il me reste ensuite simplement à joindre cette couche à ma couche de travail de base de données grâce aux champs INSEE.
encore une fois merci beaucoup.
Hors ligne