4 votos

qgis:refactorfields no acepta @número_de_fila como expresión

I exportado un modelo de model builder a python. Pero qgis:refactorfields no acepta @row_number como expresión.

outputs_QGISREFACTORFIELDS_1=processing.runalg('qgis:refactorfields', outputs_QGISMULTIPARTTOSINGLEPARTS_1['OUTPUT'],'[{'type': 2, 'length': 3, 'expression': u'@row_number', 'name': u'cluster', 'precision': 0}]',cluster)
      SyntaxError: invalid syntax
1   Cannot find variable: row_number
2   Uncaught error while executing algorithm
Traceback (most recent call last):
          File "C:/OSGEO4~1/apps/qgis/./python/plugins\processing\core\GeoAlgorithm.py", line 203, in execute
            self.processAlgorithm(progress)
          File "C:/OSGEO4~1/apps/qgis/./python/plugins\processing\script\ScriptAlgorithm.py", line 378, in processAlgorithm
            exec((script), ns)
          File "<string>", line 9

He probado con $row_num, pero no funciona.

3voto

Yada Puntos 9489

He adaptado tu script a mi sistema y ha funcionado cuando he cambiado esta parte del código:

..., '[{'type': 2, 'length': 3, 'expression': u'@row_number', 'name': u'cluster', 'precision': 0}]', ...

en este:

..., [{'type': 2, 'length': 3, 'expression': u'@row_number', 'name': u'cluster', 'precision': 0}], ...

Mi código completo era:

import processing

route = iface.activeLayer()

path = outputs_QGISREFACTORFIELDS_1=processing.runalg('qgis:refactorfields', 
                                                      route,
                                                      [{'type': 2, 
                                                      'length': 3, 
                                                      'expression': u'@row_number', 
                                                      'name': u'cluster', 
                                                      'precision': 0}],
                                                      None)

output = QgsVectorLayer(path['OUTPUT_LAYER'],
                        'output',
                        'ogr')

QgsMapLayerRegistry.instance().addMapLayer(output)

y produjo un resultado cuando se ejecutó en la consola de Python de QGIS:

enter image description here

0 votos

Gracias, ¿entonces se considera un error en la función ecport to python?

0 votos

Es el mismo problema con qgis:fieldcalculator , true y otros campos deberían estar entre " "

0 votos

De nada. En relación a tu pregunta no lo sé. Sólo he probado tu código para saber dónde estaba el problema.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X