Pages: 1
- Sujet précédent - QGIS: Créer une colonne d'indices automatiques d'après la Classif - Sujet suivant
#1 Fri 04 May 2018 18:41
- Arnau31
- Juste Inscrit !
- Date d'inscription: 2 May 2018
- Messages: 1
QGIS: Créer une colonne d'indices automatiques d'après la Classif
Bonjour,
Débutant en QGis et ayant cherché un peu sur le forum, je n'ai pas encore trouvé mon bonheur .
Je cherche à affecter un indice dans une nouvelle colonne de ma table d'attribut vecteur qui dépendrait de mon analyse thématique > ruptures de Jenks, et celà de façon automatique (mon fichier vecteur changera à chaque lancement, du coup les valeurs limites données par Jenks aussi).
J'essaie également de faire cela sous le modeleur graphique.
Merci par avance .
Arnaud
Hors ligne
#2 Fri 11 May 2018 11:35
Re: QGIS: Créer une colonne d'indices automatiques d'après la Classif
Bonjour,
Il n'y a, à ma connaissance, pas de fonction native afin de récupérer l'indice courant de l'élément dans la légende
Voici une fonction que j'ai créée pour ce faire, à insérer dans l'éditeur de fonction du calculateur d'expression puis à utiliser dans un champ virtuel :
Code:
""" Define new functions using @qgsfunction. feature and parent must always be the last args. Use args=-1 to pass a list of values as arguments """ from qgis.utils import * from qgis.core import * from qgis.gui import * @qgsfunction(args='auto', group='Custom') def getClassParam(param, feature, parent): # recup des param. lyr = iface.activeLayer() rdr = lyr.rendererV2() attr = rdr.legendClassificationAttribute() value = feature[attr] # on itère dans la légende rgs = rdr.ranges() for index, rg in enumerate(rgs) : lbl = rg.label() minValue = float(lbl.split(' - ')[0]) maxValue = float(lbl.split(' - ')[1]) if value >= minValue and value < maxValue : indexClass = index minValueClass = minValue maxValueClass = maxValue if param == 'index' : return indexClass elif param == 'min' : return minValueClass elif param == 'max' : return maxValueClass
A utiliser comme suit, avec deux paramètres :
Code:
getClassParam([paramètre à récupérer : index, min ou max])
Par exemple, à mettre en étiquette :
Code:
getClassParam( 'index')||' : '||getClassParam( 'min')||' - '||getClassParam( 'max')
geodata au cerema et petits billets en géomatique
Hors ligne
Pages: 1
- Sujet précédent - QGIS: Créer une colonne d'indices automatiques d'après la Classif - Sujet suivant