He creado un punto de datos featureclass (fc) que contiene los datos de un simple .archivo txt utilizando Arcpy de la siguiente manera:
arcpy.CreateFeatureclass_management(out_path= outPath, out_name= 'fcTest', geometry_type= "POINT", spatial_reference= spatRef, has_m= m, has_z= z)
He leído el archivo de texto para crear campos y llenar cada campo con los datos:
#lstFields= data from the text file
#fNames= list of fieldnames
#fClass= list of datatypes
for i in range(len(fNames)):
arcpy.AddField_management(fcTest, fieldN, fieldT)
Digamos que el .archivo txt que contiene las coordenadas xy y dos campos: fA y fB
with arcpy.da.InsertCursor('fcTest', ("SHAPE@XY", "fA", "fB")) as cursor:
for point in lstFields:
vals= point.split(";")
x= float(vals[0])
y= float(vals[1])
a= int(vals[2])
b= float(vals[3])
rowValue= [(x, y), a, b]
cursor.insertRow(rowValue)
Hasta ahora tan bueno. Sin embargo, algunos valores de fA y fB tiene valor 9999, que en realidad significa 'sin datos'. Mi pregunta es: ¿cómo hago para convertir el 9999 valores a un "verdadero" valor NoData? Pensé
setNull(field_name)
podría ser, pero no puedo conseguir que funcione. Ver ArcGIS ayuda aquí. He intentado algo como:
with arcpy.da.UpdateCursor('fcTest', ("fA", "fB")) as cursor:
for row in cursor:
for i in range(len(row)):
if row[i] == 9999:
row.setNull(row[i])
cursor.updateRow(row)
except Exception as e:
print e.message
Lo que da:
'list' object has no attribute 'setNull'
Agradecería cualquier ayuda. Soy nuevo en el arcpy y han basado la mayoría de los de arriba en la Programación ArcGIS10.1 con Python libro de cocina por E. Pimpler. Muchas gracias!
ACTUALIZACIÓN! Este funciona a la perfección:
with arcpy.da.UpdateCursor('fcTest', ("fA", "fB")) as cursor:
for row in cursor:
for i in range(len(row)):
if row[i] == 9999:
row[i] = None
cursor.updateRow(row)
except Exception as e:
print e.message
Gracias @Artwork21