Message posté par : Demonshine
----------------------------------------
Bonjour,
J'ai réalisé un script Python qui permet de numéroter les polygones d'une couche
en fonction d'un ordre précis. Cependant, j'aimerais que la numérotation se fasse
en fonction des noms de mes polygones. C'est-à-dire pour un polygone nommé
"XX", exécuter mon script pour me numéroter tous les polygones appelés
"XX" de 1 à n et pour un polygone nommé "YY" et présent dans la même
table, réitérer l'opération en réinitialisant la numérotation de 1 à n pour tous les
polygones nommés "YY" et donc indépendamment des polygones qui ne portent pas le
même nom. J'ai un champ "nom" dans la table qui regroupe tous mes polygones
me permettant de les différencier.
Voici mon script qui marche avec une numérotation sur toute ma table sans prendre en
compte les noms des polygones :
-----------------
Code :
from qgis.utils import iface
from PyQt5.QtCore import QVariant
layer = iface.activeLayer()
idfield = 'num_page'
coords =
[[round(f.geometry().centroid().asPoint().x(),0),round(f.geometry().centroid().asPoint().y(),0),f.id()]]
coords.sort(key=lambda k: (k[1],-k[0]), reverse=True)
order = [i[2] for i in coords]
i = layer.fields().indexFromName(idfield)
attrMap = {id: {i:e} for e,id in enumerate(order,1)}
layer.dataProvider().changeAttributeValues(attrMap)
-----------------
Pour faire ce script en fonction du champ "nom" de ma table, j'ai essayé
d'utiliser la fonction for f in layer.getFeature() mais cela ne marche pas.
Auriez-vous une solution s'il-vous-plaît ?
Merci d'avance pour votre aide,
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=345042#p345042
Pour y répondre : qgis_fr(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net