I have a geoprocessing script that worked great, until moving the data source to a feature dataset where it must be versioned.
when this script is pointing to the layer outside the feature dataset, it runs fine. When I point to the layer inside the feature dataset, the script still runs...no errors, but no updates are saved.
Any ideas on why this is happening?
Sample code below:
import arcpy, os
arcpy.env.overwriteOutput = 1
#Set workspace and input fc variables
folderPath = r"S:\Data\Fires\Fire_Mapping_Analysis"
arcpy.env.workspace = folderPath + "\EmerOps as GIS.sde\EmerOps.GIS.FireBoundaries"
scratch_workspace = r"S:\Data\Fires\Fire_Mapping_Analysis\Fire_Map_Reports_Review.gdb"
BrushFire_fc = "\EmerOps.GIS.BrushFireAnalysis"
#Geoprocessing - Calculate fire acreage, perimeter, and class
try:
print ("Calculating Fire acreage, perimeter, and class...")
coords = "PROJCS['NAD_1983_StatePlane_California_V_FIPS_0405_Feet',GEOGCS['GCS_North_American_1983',DATUM['D_North_American_1983',SPHEROID['GRS_1980',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Lambert_Conformal_Conic'],PARAMETER['False_Easting',6561666.666666666],PARAMETER['False_Northing',1640416.666666667],PARAMETER['Central_Meridian',-118.0],PARAMETER['Standard_Parallel_1',34.03333333333333],PARAMETER['Standard_Parallel_2',35.46666666666667],PARAMETER['Latitude_Of_Origin',33.5],UNIT['Foot_US',0.3048006096012192]]"
arcpy.management.CalculateGeometryAttributes(BrushFire_fc, "GIS_ACRES AREA;PERIMETER PERIMETER_LENGTH", "MILES_US", "ACRES", coords, "SAME_AS_INPUT")
#Fire Classes by acreage
fields = ['GIS_ACRES', 'CLASS']
with arcpy.da.UpdateCursor (BrushFire_fc, fields) as cursor:
for row1 in cursor:
if (row1[0] > 4999.5):
row1[1] = "G"
cursor.updateRow(row1)
elif (row1[0] > 999.5 and row1[0] < 4999.4):
row1[1] = "F"
cursor.updateRow(row1)
elif (row1[0] > 299.5 and row1[0] < 999.4):
row1[1] = "E"
cursor.updateRow(row1)
elif (row1[0] > 99.95 and row1[0] < 299.4):
row1[1] = "D"
cursor.updateRow(row1)
elif (row1[0] > 9.95 and row1[0] < 99.94):
row1[1] = "C"
cursor.updateRow(row1)
elif (row1[0] > 0.255 and row1[0] < 9.94):
row1[1] = "B"
cursor.updateRow(row1)
elif (row1[0] <= 0.254):
row1[1] = "A"
cursor.updateRow(row1)
else:
print("No records found")
except Exception as e:
print ("Error: " + e.args[0])
The layer is versioned. I think this is playing a big role here too.