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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 26 October 2018 12:03

Clothilde B
Juste Inscrit !
Lieu: Bastia
Date d'inscription: 18 Jan 2018
Messages: 9

QGIS & Python: Attribuer une couleur selon un critère de sélection

Bonjour,

Voici la situation : j'ai une couche de polygones sur les communes et une couche de points pour l'ensemble des bornes de chaque commune.

Je souhaiterais  s'il manque la géométrie d'une ou plusieurs bornes, que le polygone de la commune concernée soit mise en orange.

J'arrive déjà à sélectionner le polygone d'une commune selon son numéro:

Code:

import processing
layer = processing.getObject('commune')
query = '"num" = 99 '
selection = layer.getFeatures(QgsFeatureRequest().setFilterExpression(query))
layer.setSelectedFeatures([k.id() for k in selection])

Je sais aussi modifier la couleur de tous les polygones commune:

Code:

symbols = layer.rendererV2().symbols()
symbol = symbols[0]
symbol.setColor(QColor("orange"))
qgis.utils.iface.mapCanvas().refresh() 
qgis.utils.iface.legendInterface().refreshLayerSymbology(layer)

La table attributaire de la couche borne contient le numéro de la borne, sa géométrie et le nom de la commune sur laquelle elle se situe. Cependant, dans cette table, il manque certaines géométries de bornes.
Il me reste alors à savoir attribuer la couleur "orange" à ou aux communes pour lesquelles la géométrie des bornes est absente.

Cela donnerait avec Pyqgis:

commune = sélection de la couche commune
borne = sélection de la couche borne

Si géométrie_borne est nulle alors récupérer le nom de la commune puis attribuer la couleur "orange" au polygone de cette commune

Merci pour votre aide,

Hors ligne

 

#2 Fri 26 October 2018 16:12

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1159

Re: QGIS & Python: Attribuer une couleur selon un critère de sélection

Salut,

On peut réaliser cela en utilisant une vue, avec la source de données
sous-jacente ou une couche virtuelle dans QGIS [1] :

SELECT commune.*, COUNT(*) = COUNT(geometrie_borne) AS complet,
FROM commune JOIN borne ON commune.num = borne.num
GROUP BY commune.* --ici bien entendu grouper par tout les champs de commune

Une fois cette vue créée, on peut utiliser une symbologie
catégorisée avec l'attribut "complet".

[1]: https://docs.qgis.org/2.14/en/docs/user … ayers.html

Dernière modification par tumasgiu (Fri 26 October 2018 16:15)

Hors ligne

 

#3 Fri 26 October 2018 16:36

Clothilde B
Juste Inscrit !
Lieu: Bastia
Date d'inscription: 18 Jan 2018
Messages: 9

Re: QGIS & Python: Attribuer une couleur selon un critère de sélection

Salut,

Je te remercie mais mon but est de faire sous Python un script d'alerte, qui une fois les couches chargées dans QGIS, m'affiche en orange les communes qui portent des géométries de bornes manquantes. Je saurai rajouter à cela un message d'alerte destiné à l'utilisateur.

Hors ligne

 

Pied de page des forums

Powered by FluxBB