Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Mon 10 August 2015 11:03

ecran64
Participant occasionnel
Date d'inscription: 18 Apr 2012
Messages: 49

QGIS : Importer informations d'une autre couches via la localisation?

Bonjour,

J'ai un besoin qui peut paraitre simple, mais je ne vois pas comment le faire simplement dans QGis:
J'ai deux couches, une avec des rivières et l'autre avec des polygones, départements & types d'habitats.
J'aimerais ajouter dans une colonnes de ma couche rivière à quels départements elles appartiennent (par la localisation) et dans une autre quel type d'habitat (sachant qu'il peut y avoir plusieurs habitats traversés par la rivière).
Est ce qu'il y a un moyen simple de faire cela dans QGis ou il faut forcément passer par une requête SQL?

Merci

Hors ligne

 

#2 Mon 10 August 2015 11:22

chanteclair
Participant assidu
Lieu: Pau
Date d'inscription: 3 Jan 2007
Messages: 717

Re: QGIS : Importer informations d'une autre couches via la localisation?

Bonjour,
En utilisant la fonction "Joindre les attributs par localisation", dans Vecteur / Outils de gestion de données, vous devriez obtenir ce que vous cherchez.
Cordialement,

Hors ligne

 

#3 Mon 10 August 2015 11:25

ecran64
Participant occasionnel
Date d'inscription: 18 Apr 2012
Messages: 49

Re: QGIS : Importer informations d'une autre couches via la localisation?

Merci Chateclair,
J'avais vu cette fonction, mais elle créée une autre couche... il n'y a pas moyen d'avoir quelque chose qui créé juste une colonne supplémentaire. Mes couches sont dans postgis... du coup, il faut créer, puis les réimporter dans postgis... si jamais il y avait moyen de faire plus simplement ça serait plus sympa

Hors ligne

 

#4 Mon 10 August 2015 11:26

Gaëlle G
Participant occasionnel
Lieu: Rennes
Date d'inscription: 25 Jun 2014
Messages: 40

Re: QGIS : Importer informations d'une autre couches via la localisation?

Bonjour.

Dans QGis il y a la jointure par localisation dans vecteur -> outils de gestion de données -> joindre les attributs par localisation.
J'espère que c'est ce que vous cherchiez.

Edit
Chanteclair a été plus rapide que moi ^^

Dernière modification par Gaëlle G (Mon 10 August 2015 11:28)

Hors ligne

 

#5 Mon 10 August 2015 11:32

chanteclair
Participant assidu
Lieu: Pau
Date d'inscription: 3 Jan 2007
Messages: 717

Re: QGIS : Importer informations d'une autre couches via la localisation?

Si vos couches sont sous Postgis, vous devez pouvoir le faire avec une requête SQL.
Regardez par ici pour trouver la fonction à utiliser : http://www.postgis.fr/chrome/site/docs/ … anced.html

Hors ligne

 

#6 Mon 10 August 2015 11:36

ecran64
Participant occasionnel
Date d'inscription: 18 Apr 2012
Messages: 49

Re: QGIS : Importer informations d'une autre couches via la localisation?

Merci chanteclair,
Oui, je connais ce lien et les requêtes sql, mais là, je galère à faire ce que je veux, ça n'arrête pas de me mettre des messages d'erreurs. ça fait plusieurs heures que j'essaie, c'est pour ça, je me demandais s'il n'y avait pas quelque chose de plus dans QGis.
En tout cas, merci pour vos réponses

Hors ligne

 

#7 Mon 10 August 2015 11:45

chanteclair
Participant assidu
Lieu: Pau
Date d'inscription: 3 Jan 2007
Messages: 717

Re: QGIS : Importer informations d'une autre couches via la localisation?

Désolé,
Je n'ai pas Postgis pour pouvoir vous aidez plus.
Mais il serait étonnant que vous n'ayant pas une réponse dans la journée.

Hors ligne

 

#8 Mon 10 August 2015 11:52

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS : Importer informations d'une autre couches via la localisation?

Bonjour,

Il n'y a pas de moyen immédiat de faire cela sous QGIS, selon moi..

Le SQL sera davantage immédiat.

Dans un premier temps, il convient d'intersecter les rivières avec la couche polygones et celle des habitats.

Vous aurez alors une couche où une rivière pourra être découpée en autant d'objets qu'elle traverse de départements et une autre pour les habitats selon le même mécanisme.

Dans tous les cas, il faudra concaténer les résultats de l'intersection spatiale au sein d'une même colonne sous la forme DEP1, DEP2, DEP3 dans la colonne des départements, et HAB1, HAB2, HAB3, HAB4 dans une autre selon le nombre d'objets intersectés.

Sur Google, il faut utiliser les mots clés 'group concatenate'

Si l'on veut s'affranchir de SQL, on pourra tenter de s'inspirer du lien suivant sous LibreOffice Calc (où le dbf des couches intersectées aurait été ouvert dedans) : https://forum.openoffice.org/en/forum/v … hp?t=56505

Sous SQL, la fonction s'appelle GROUP_CONCAT
http://sql.sh/fonctions/group_concat (fonctionne sous Spatialite, normalement)
Sous postgreSQL : http://stackoverflow.com/questions/2560 … equivalent


geodata au cerema et petits billets en géomatique

Hors ligne

 

#9 Mon 10 August 2015 13:26

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3805

Re: QGIS : Importer informations d'une autre couches via la localisation?

Bonjour,

ecran64 a écrit:

Merci chanteclair,
Oui, je connais ce lien et les requêtes sql, mais là, je galère à faire ce que je veux, ça n'arrête pas de me mettre des messages d'erreurs. ça fait plusieurs heures que j'essaie, c'est pour ça, je me demandais s'il n'y avait pas quelque chose de plus dans QGis.
En tout cas, merci pour vos réponses


Quels messages d'erreur? Qu'essayez-vous comme méthode/formule? Reportez la formule que vous utilisez si c'est l'option SQL, les messages d'erreur que vous obtenez et les personnes pourront plus facilement vous aider à avancer.
Sinon, la procédure est globalement telle que l'a énoncée MathieuR. Si vous voulez du QGIS :
- découper la rivière en tronçons départementaux  et y récupérer l'info du dép : la fonction vecteur > Intersection le fait
- Regrouper les tronçons par id de rivière soit avec :
   * l'extension GroupStats > générer un export, y faire les concaténations puis jointure avec la couche d'origine sur l'id de rivière
   * je me demande si une des fonctions dissolve du menu traitement ne pourrait pas aider à cela. Sinon, il y a le plugin expérimental DissolveWithStats dont la version master (cliquer sur "Download ZIP" puis décompresser dans le dossier user/.qgis2/python/plugins/) propose des fonctions de concaténation. Avec elle, vous obtenez à nouveau votre couche de rivière, avec les noms de départements regroupés dans un champ.

Mais le plus "simple" reste une requête SQL directement dans PG pour ajouter le(s) champ(s).

Hors ligne

 

#10 Tue 25 August 2015 11:16

ecran64
Participant occasionnel
Date d'inscription: 18 Apr 2012
Messages: 49

Re: QGIS : Importer informations d'une autre couches via la localisation?

Bonjour,

Merci pour vos réponses. Finalement vu que je n'avais pas trop de temps, j'ai utilisé une méthode plus "classique" que je connaissais déjà et que vous avez décris.
Je pensais qu'il y aurait eu un autre moyen plus direct, mais à priori, il faut quand même passer par une ou plusieurs tables intermédiaires.
Merci en tout cas!

Hors ligne

 

Pied de page des forums

Powered by FluxBB