4 votos

Añadir columna y rellenar con la consola de Python

Estoy intentando añadir una nueva columna a la tabla de atributos y rellenar la columna con una cadena, utilizando la consola de python en QGIS. He hecho lo mismo pero poblando la columna con un entero (FIELD_TYPE=1), lo cual funciona bien, pero en cuanto cambio la columna a una cadena (FIELD_TYPE=2), ya no funciona. El código que estoy tratando de ejecutar:

out3 = "%s\\roth_vh_%s_3.shp"%(shpPath,year)
processing.runalg('qgis:fieldcalculator',\
out2,\
"polar",\
2,\
4,\
0,\
True,\
'vh',\
out3)

El mensaje de error que recibo es "Error de evaluación: Columna 'vh' no encontrada". Así que por alguna razón está buscando una columna vh en lugar de tomarla como la cadena con la que rellenar todos los campos de la columna. Esto me confunde, porque si abro la tabla de atributos y ejecuto un cálculo de campo para rellenar una columna con una cadena, simplemente seleccionaría la columna, escribiría la cadena en la barra de cálculo de campo (por ejemplo, 'vh') y haría clic en actualizar todo, y funcionaría. ¿Alguna idea de por qué el cálculo de campo de 'vh' no funciona en pyqgis, por favor?

4voto

Mue Puntos 2469

Al escribir vh como una expresión en el Calculadora de campo asume que está llamando a un campo. Si escribe 'vh' (nótese las comillas simples), lo trata como un valor de cadena.

En su código, está haciendo lo primero (es decir, llamar a un nombre de campo). Lo que debe hacer es llamarlo como una cadena, pero tenga cuidado al usar comillas simples para especificar un parámetro de cadena porque también necesitará comillas simples para especificar el valor real. En este caso, necesitarás escaparlas usando lo siguiente para que se lea 'vh' correctamente:

'\'vh\''

Así que tu código podría ser así:

out3 = "%s\\roth_vh_%s_3.shp"%(shpPath,year)
processing.runalg('qgis:fieldcalculator',\
out2,\
"polar",\
2,\
4,\
0,\
True,\
'\'vh\'',\
out3)

También puede utilizar las comillas triples para especificar el parámetro de la cadena y utilizar una expresión de la misma manera que la escribiría en la calculadora de campos:

""" 'vh' """,\

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