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 maxValueClassA 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


