#1 Tue 16 December 2014 13:32
- lowra
- Juste Inscrit !
- Date d'inscription: 16 Dec 2014
- Messages: 2
QGIS : Requête sur 2 attributs joints ensemble
Bonjour,
Avec mon groupe de travail on est face à un soucis sur QGIS.
Nous devons réaliser une cartographie de présence prenant en compte des habitats préférentiels selon des mailles.
Du coup, on aimerait savoir comment il est possible de sélectionner 2 attributs dans la table attributaire (donc dans notre cas les habitats) et que seuls les attributs associés dans la même maille soit comptabilisés.
En gros, pour illustrer, nous voulons visualiser les habitats où un lézard est potentiellement présent. Les habitats CLC 312 et 313 présentent lorsqu'ils sont associés une forte probabilité de presence du lézard. Nous devons réaliser une cartographie par mail. Du coup, comment faire apparaitre les mailles qui ont l'association 312 et 313 (et pas 312 seul et 313 seul)?
Si quelqu'un peut nous aider, nous en serions reconnaissant.
Cordialement,
Laura
Hors ligne
#2 Tue 16 December 2014 13:54
- Benoit91
- Participant assidu
- Date d'inscription: 2 Oct 2008
- Messages: 263
Re: QGIS : Requête sur 2 attributs joints ensemble
Bonjour
pour la mise ne forme thématique vous pouvez passer par propriété de la couche > style > ensemble de règle et définir des "filtres"
si vos données CLC 312 et 313 sont comprise dans un champ alors vous pouvez faire l'expression suivante:
champ_habitats IN ('312',313') puis y associer une symbologie particulière et ainsi de suite pour toutes vos "habitats préférentiels"
Si vos valeurs CLC sont dans des champ attributaires différents vous pouvez faire comme suis
champ_habitat1='312' AND champ_habitat2='313'.
voir image jointe pour un exemple avec des données openstreetmap.
Cordialement.
Dernière modification par Benoit91 (Tue 16 December 2014 13:55)
Hors ligne
#3 Tue 16 December 2014 15:24
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3940
Re: QGIS : Requête sur 2 attributs joints ensemble
Bonjour,
En gros, pour illustrer, nous voulons visualiser les habitats où un lézard est potentiellement présent. Les habitats CLC 312 et 313 présentent lorsqu'ils sont associés une forte probabilité de presence du lézard. Nous devons réaliser une cartographie par mail. Du coup, comment faire apparaitre les mailles qui ont l'association 312 et 313 (et pas 312 seul et 313 seul)?
Je suppose que par "associées", vous entendez "être suffisamment proches pour être dans une même maille". Et si j'ai bien compris le propos, je ne pense pas que la solution 1 de Benoit91 y réponde.
La solution 2 dépendra de la structuration de vos données. Aussi, pourriez-vous préciser un peu plus ce dont vous disposez comme structures de données, notamment sur la couche des mailles?
Merci.
Hors ligne
#4 Tue 16 December 2014 21:34
- lowra
- Juste Inscrit !
- Date d'inscription: 16 Dec 2014
- Messages: 2
Re: QGIS : Requête sur 2 attributs joints ensemble
Bonsoir Santanna,
Du coup voici quelques précisions :
On a fait une intersection entre Corine Land Cover et une grille de carroyage pour avoir les habitats par maille.
Puis on a une ligne pour chaque habitat présents dans la maille. Le nom de maille se répéte donc autant de fois qu'il y a de polygones à l'intérieur. On souhaite par exemple pour une maille donnée, sélectionner sur la carte deux habitats si les deux sont présents dans celle-ci (sélectionner deux lignes de notre table).
Merci
Hors ligne
#5 Thu 18 December 2014 11:18
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3940
Re: QGIS : Requête sur 2 attributs joints ensemble
Bonjour,
Et désolé de répondre avec qqs jours de retard.
Étant donné que c'est un travail pédagogique (et bien qu'ignorant dans quelle formation vous êtes), je vais peut-être juste vous suggérer des pistes plutôt qu'indiquer la procédure exacte. C'est peut-être un peu chiant pour vous mais c'est aussi compliqué pour moi
A ma connaissance, la structure de votre nouvelle table ne vous permettra pas assez aisément de représenter les mailles qui vous intéressent. Il vous faut inverser votre table afin que la porte d'entrée soit votre identifiant de maille et que le type d'habitat soit un de ces champs (ce que sous-entendaient déjà les propositions de Benoit91). Un peu comme ce qu'on fait avec un tableau croisé dynamique sous Excel ou Cie. Il faut obtenir dans votre nouveau tableau une maille ==une ligne. Dans les attributs de cette maille, plusieurs possibilités :
- soit compter le nombre de type d'habitats différents contenus dans chaque maille; il vaut mieux avoir enlevé de votre table tous les autres habitats inintéressants pour n'avoir que les deux types d'habitat qui vous intéressent mais aussi une ligne pour chaque habitat par maille > Si une maille a la valeur 2, c'est donc une bonne!
- soit créer autant de champs que d'habitats différents et utiliser la requête n°2 de Benoit
- soit concaténer les codes CLC des habitats pour chaque maille dans un champ et alors faire une requête sur la présence conjointe des codes 312 et 313 dans ce champ.
Si vos données sont intégrées dans une base de données (SQLite par ex), une requête SQL devrait rapidement permettre de faire cela.
Si vos données sont des Shapefiles ou autres, regardez du côté de l'extension GroupStats (menu Extension > Installer/Gérer des extensions - utilisé finement, il peut générer directement les tableaux des options 1 et 2), ou enregistrer sous > csv votre table d'attributs et passez par Excel (pour le tableau croisé dynamique). Vous réinjecterez le nouveau tableau obtenu dans QGIS pour en faire une jointure avec la couche des mailles.
La concaténation des codes CLC peut se faire sous Excel, une fois le tableau croisé dynamique créé (suivant l'option 2), soit en édition de couche dans QGIS avec la fonction concat.
J'ai essayé d'être vague et précis (et je réalise que je ne sais pas faire ) mais je pense qu'il y a de quoi arriver à bout de votre problème. Si besoin de précision sur des fonctions particulières ou coincés sur un endroit particulier, le forum est toujours là pour vous aiguiller.
Bon courage...
Hors ligne