Tengo un shapefile poligonal con dos campos X e Y. Me gustaría crear un nuevo campo Z que informe de la característica/valor de X cuando falte Y, y de la característica de Y en caso contrario. La función en QGIS Field Calculator sería if(Y IS NULL, X, Y)
. Me gustaría encontrar una manera de escribirlo en un código PyQGIS.
En PyQGIS lo he intentado:
my_layer = QgsVectorLayer(my_dir, "my_layer", "ogr")
my_layer.dataProvider().addAttributes([QgsField("Z", QVariant.String)])
my_layer.updateFields()
with edit(my_layer):
for f in my_layer.getFeatures():
if f["Y"] == NULL:
my_layer.changeAttributeValue(f.id(), my_layer.fields().lookupField("Z"), f["X"])
my_layer.updateFeature(f)
else:
my_layer.changeAttributeValue(f.id(), my_layer.fields().lookupField("Z"), f["Y"])
my_layer.updateFeature(f)
pero no funciona. ¿Alguna idea sobre cómo proceder?
0 votos
¿Y si faltan los dos o ninguno?
0 votos
¿Es obligatorio PYQGIS?
1 votos
¿Has probado
f["Y"] is None
en lugar def["Y"] == NULL
?