Wrapping my code in a function has solved this issue for me. As in:
def mf_function(): arcpy.PolygonToRaster_conversion(bldglayer, "bldgtype", 'workingFGDB.gdb\\bldgtile' + str(i) + '_' + str(j), "#") bldgnull = sa.IsNull('workingFGDB.gdb\\bldgtile') bldgnull.save('workingFGDB.gdb\\bldgtilenull') nobldgtile = sa.Con(lulcnullname, 0, geolulcname, "VALUE > 0") nobldgtile.save('workingFGDB.gdb\\nobldgtile') lulctile = sa.Con('workingFGDB.gdb\\bldgtilenull', 'workingFGDB.gdb\\nobldgtile', 'workingFGDB.gdb\\bldgtile', "VALUE > 0") lulctile.save(lulctilename)
For reference, this is taking a set of building classes from a building outline polygon file and adding them to a land-use/land-cover dataset.
from arcpy.sa import * from arcpy.env import env env.overwriteOutput = 1 # for best performance of map algebra, scratch and current should be the same env.workspace = arcpy.env.scratchWorkspace = workingFGDB.gdb lulc = Raster(lulcName) # convert to raster object for use in map algebra ... bldgtileName = "bldg{0}_{1}".format(i,j) lulctileName = "lulc{0}_{1}".format(i,j) arcpy.PolygonToRaster_conversion(bldglayer, "BLDGTYPE", bldgtileName) bldgtile = Raster(bldgtileName) # convert to raster object (note, this is a permanent raster) nobldgtile = Con(IsNull(lulc), 0, lulc) # convert any null LULC cells to zero # replace null cells in bldgtile with lulc cells lulctile = Con(IsNull(bldgtile), nobldgtile, bldgtile) lulctile.save(lulctileName) # this is the only one you want to save # arcpy.Delete_management(bldgtile) # uncomment to delete
arcpy.PolygonToRaster_conversion(bldglayer, "bldgtype", 'workingFGDB.gdb\\bldgtile' + str(i) + '_' + str(j), "#") bldgnull = sa.IsNull('workingFGDB.gdb\\bldgtile') bldgnull.save('workingFGDB.gdb\\bldgtilenull') nobldgtile = sa.Con(lulcnullname, 0, geolulcname, "VALUE > 0") nobldgtile.save('workingFGDB.gdb\\nobldgtile') lulctile = sa.Con('workingFGDB.gdb\\bldgtilenull', 'workingFGDB.gdb\\nobldgtile', 'workingFGDB.gdb\\bldgtile', "VALUE > 0") lulctile.save(lulctilename)
MyRast = "\\\\wc98466\\D\\baks\\temp.gdb\\MyRaster" or sCur = arcpy.SearchCursor( "\\\\wc98466\\D\\baks\\temp.gdb\\MyRaster")
MyRast = "\\\\wc98466\\D\\baks\\temp.gdb\\MyRaster" or sCur = arcpy.SearchCursor( "\\\\wc98466\\D\\baks\\temp.gdb\\MyRaster") del MyRast del sCur
so only saved rasters in a file geodatabase seem to work - IMGs and GRIDs and temporary grids cause errors in decimal seconds.
The problem I have is this. For some relatively long (geoprocessing wise) period of time after I've finished reading from or writing to a raster, the raster remains locked, and cannot be overwritten nor deleted. Currently, I'm working around this problem by writing each intermediate raster to a unique filename. This leaves me with a massive collection of unneeded intermediate files cluttering up my geodatabase.
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registriere ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.