Pages: 1
- Sujet précédent - QGIS/Python: iteration script en fonction des valeurs d"un champ - Sujet suivant
#1 Fri 16 July 2021 17:00
- Demonshine
- Participant occasionnel
- Date d'inscription: 27 May 2021
- Messages: 21
QGIS/Python: iteration script en fonction des valeurs d"un champ
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,
Hors ligne
Pages: 1
- Sujet précédent - QGIS/Python: iteration script en fonction des valeurs d"un champ - Sujet suivant