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

GeoDataDays 2025

#1 Wed 21 May 2025 13:16

Larpenteur
Participant assidu
Lieu: Avignon
Date d'inscription: 24 Jan 2011
Messages: 150

QGIS: PyQGis Symbology 'rule based' adaptation du style a la selection

Bonjour,

J'ai un script Python maison qui travaille notamment sur le croisement de donnée (intersection) dans QGIS.
Mon objet cible A va croiser un objet B (exemple couche PLU) et il le résultat de ma requête est censé récupérer la symbologie de mon objet B.

Mais je rencontre une erreur Python de type:  AttributeError: ‘NoneType’ object has no attribute ‘type’
Ma couche B à une symbologie 'Rule Based' quand j'obtiens cette erreur.
Si je modifie l'ensemble de règle pour une symbologie unique ma requête se termine, la portion de code qui pose problème est à la ligne 1809:

1807           #Modification éventuelle du Style (adaptation aux enregistrements restant dans la Sélection)
1808            lRenderer = lDonImpLay.renderer()
1809           lRdrType = lRenderer.type()
1810           if lRdrType == 'categorizedSymbol':
1811               StyleCategorise_Adaptation(lDonImpLay, lRenderer)
1812            elif lRdrType == 'RuleRenderer':
1813               StyleRegles_Adaptation(lDonImpLay, lRenderer)
1814           #Complément au style - Transparence
1815#            lDonImpLay.setLayerTransparency(50)
1816           #Mise en forme du Noeud de couche (à faire après le traitement du style)


Si vous avez une piste je suis preneur!
Merci, Sylvain

Hors ligne

 

#2 Thu 22 May 2025 12:04

aude_halim
Juste Inscrit !
Lieu: Vitry-sur-Seine (94)
Date d'inscription: 24 Jan 2011
Messages: 5

Re: QGIS: PyQGis Symbology 'rule based' adaptation du style a la selection

Bonjour,

Je n'ai pas l'habitude de ces bibliothéques, mais je dirais que si vous avez cette erreur à la ligne 1809, c'est que la méthode .renderer() de la ligne 1808 renvoi NoneType au lieu d'un objet "QgsFeatureRenderer".

Il faudrait pouvoir voir l'objet qu'il y a dans la variable "lDonImpLay" à mon avis.
Après effecitvement, c'est étonnant que votre code fonctionne sur une couche à symbologie unique mais pas lorsque la symbologie est basée sur des Régles.

Est-ce que si vous utilisez une symbologie catégorisée vous obtennez également une erreur à cdette ligne ou non?

Hors ligne

 

#3 Fri 23 May 2025 08:32

Larpenteur
Participant assidu
Lieu: Avignon
Date d'inscription: 24 Jan 2011
Messages: 150

Re: QGIS: PyQGis Symbology 'rule based' adaptation du style a la selection

Bonjour Aude,

Merci pour votre retour
En effet j'ai oublié de précisé:
Sur cette même couche B si je fais une analyse "Catégorisée" sur le même champ utilisé pour l'analyse "Ensemble de règles " ça fonctionne...

Sylvain

Hors ligne

 

#4 Fri 23 May 2025 13:51

Larpenteur
Participant assidu
Lieu: Avignon
Date d'inscription: 24 Jan 2011
Messages: 150

Re: QGIS: PyQGis Symbology 'rule based' adaptation du style a la selection

Je continue les investigations.
En fait je pense que ce n'est pas forcément cette partie du code qui pose problème.
Dans ce projet QGS j'ai de multiples données (Shapefile), toutes ces couches n'ont pas de filtres.
Si je mets un filtre sur une donnée j'obtiens l'erreur citée en début de post:

AttributeError: ‘NoneType’ object has no attribute ‘type’

La piste serait peut être d'intégrer une partie de code dans le script permettant de requêter sur des données filtrées?!

Sylvain

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo