[Fonctions avancées de Qgis – 1ère partie] Croiser des couches par comparaison spatiale

Dans tout SIG qui se respecte, et Qgis ne déroge pas à la règle bien sûr,  on peut croiser les couches entre elles.

Par exemple on peut trier la couche Bâti Industriel de la BD TOPO® de l’IGN avec une commune donnée.

Seulement le résultat de ce croisement va produire une troisième couche.

Or il est possible avec les fonctions de Qgis de réaliser ce tri directement depuis la couche voulue.

En l’occurrence si l’on veut afficher uniquement le bâti industriel sur la commune de Perpignan comme illustré ci-après :

Description de la couche Commune de la BD TOPO® de l’IGN

Pour cela on va d’abord récupérer la géométrie de la couche Commune et qui a un CODE_INSEE=66136 avec la commande suivante :

Ensuite on compare cette géométrie avec la géométrie de la couche courante du Bâti industriel => $geometry

Ici on va utiliser la commande within (géométrie a, géométrie b) qui prend les entitées de la géométrie a contenue dans la géométrie b

Si elle le résultat de la commande est égale  à 1 c’est qu’elle est à l’intérieur de la commune de Perpignan :

Nous allons donc mettre cette formule dans la gestion des Styles d’affichage de Qgis (‘Onglet Style’ -> ‘Ensemble de règle’) sur la couche à trier, à savoir la couche bâti industriel.

On obtient uniquement le bâti industriel qui est à l’intérieur de la commune de Perpignan !  La classe non ?

Dans la règle de filtrage de Qgis, le résultat de la fonction avancée permet de faire un tri sur une comparaison spatiale

Attention l’utilisation de cette fonction demande du temps de calcul à chaque déplacements/zoom !!

 


 

Mais on peut aller plus loin et afficher en vert le bâti industriel qui n’est pas sur Perpignan, et en rouge celui qui est sur Perpignan.

il suffit de rajouter une règle où la commande précédente est égale à 0

et voilà la travail !!

 

 


Allons encore plus loin ! oui oui  😉

Je veux afficher en vert l’étiquette du type de bâti hors Perpignan et en rouge celle dans Perpignan comme c’est déjà le cas du polygone du bâti.

Dans l’option couleur de l’étiquette (voir ci-dessous) j’utilise une fonction bien sympa  : la fonction color_rgb

Avec une condition (fonction CASE) on met en rouge (utilisation de l’encodage RGB classique) -> [ color_rgb(255,12,0) ]  lorsque on est sur Perpignan :

 

Et pour la gloire je vais ajouter sur les étiquettes des bâtiments industriels de Perpignan la phrase « sur la commune de Perpignan »

En effet une commande Qgis permet de récupérer le champ d’une couche => c’est la commande attribute (objet, nom du champ à afficher)

Dans mon cas je vais récupérer le champ du nom de la commune (‘NOM’) :

dans l’affichage de la valeur de l’étiquette je vais concaténer le nom de la commune avec la nature du bâtiment :

 

 

Le résultat  :

 

Vous pouvez vous amuser avec ces fonctions qui sont décrite ici

 

Bonne expérimentation !

Tagged , , ,