I've created a point-data featureclass (fc) containing data from a simple .txt file using Arcpy as follows:
arcpy.CreateFeatureclass_management(out_path= outPath, out_name= 'fcTest', geometry_type= "POINT", spatial_reference= spatRef, has_m= m, has_z= z)
I've read the text file to create fields and fill each field with data:
#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)
Let's say the .txt file contains the xy coordinates and two fields: fA and fB
with arcpy.da.InsertCursor('fcTest', ("SHAPE@XY", "fA", "fB")) as cursor: for point in lstFields: vals= point.split(";") x= float(vals) y= float(vals) a= int(vals) b= float(vals) rowValue= [(x, y), a, b] cursor.insertRow(rowValue)
So far so good. However, some values of fA and fB have value 9999, which actually means 'no data'. My question is: how do I convert the 9999 values to a 'real' NoData value? I thought
might be it, but I can't get it to work. See ArcGIS help here. I tried something like:
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
'list' object has no attribute 'setNull'
I would appreciate any help. I'm new to arcpy and have based most of the above on the Programming ArcGIS10.1 with Python Cookbook by E. Pimpler. Many thanks!
UPDATE! This works flawlessly:
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