sábado, 22 de diciembre de 2018

QgisFeatureRequest para ordenamiento múltiple de rasgos en PyQGIS 3

La clase QgisFeatureRequest puede usarse para seleccionar rasgos ordenados por varios campos. En este post se va a considerar el shapefile de la imagen siguiente para realizar un ordenamiento por dos de sus campos: 'Circuit' y 'area'. Para corroborar que el ordenamiento se realiza según lo previsto se imprimen en la Python Console los ids de los rasgos seguidos de los valores correspondientes a los campos 'Circuit' y 'area'. Aunque posible, no se produce la memory layer con los features ordenados por ambos campos.


El código completo se incluye a continuación:

1
2
3
4
layer = iface.activeLayer()

for feature in layer.getFeatures(QgsFeatureRequest().addOrderBy('Circuit',True).addOrderBy('area',True)):
    print(feature.id(), feature.attribute(feature.fieldNameIndex('Circuit')), feature.geometry().area())

La ejecución del código anterior imprime en la Python Console los valores siguientes que comprueban que el ordenamiento se realizó según lo esperado.

6 1 127035968.31463054
4 1 196392600.4963259
3 1 213453359.47330928
1 1 280502186.9702289
0 2 138971089.3700023
5 2 144829440.03875843
7 2 162925151.1347428
2 2 373715925.390651


No hay comentarios: