deleteme.append(f1) # f2: surface change arcpy.AddMessage("Surface Curvature ...") f2 = os.path.join(env.scratchFolder,"f2.tif") if debug == True: arcpy.AddMessage(str(time.strftime("Curvature: %m/%d/%Y %H:%M:%S", time.localtime()))) # CURVATURE curvature = os.path.join(scratch,"curvature") curveSA = sa.Curvature(elevClip) curveSA.save(curvature) deleteme.append(curvature) if debug == True: arcpy.AddMessage(str(time.strftime("Focal Stats: %m/%d/%Y %H:%M:%S", time.localtime()))) # FOCALSTATISTICS (RANGE) focalStats = os.path.join(scratch,"focalStats") window = sa.NbrCircle(3,"CELL") fstatsSA = sa.FocalStatistics(curvature,window,"RANGE") fstatsSA.save(focalStats) deleteme.append(focalStats) # F2 maxRasStat = float(str(arcpy.GetRasterProperties_management(focalStats,"MAXIMUM"))) fsRasStat = sa.Raster(focalStats) if debug == True: arcpy.AddMessage("maxRasStat: " + str(maxRasStat) + " - " + str(type(maxRasStat))) arcpy.AddMessage("fsRasStat: " + str(fsRasStat) + " - " + str(type(fsRasStat))) f2Calc = (maxRasStat - fsRasStat) / maxRasStat # (max - cell/max) f2Calc.save(f2) deleteme.append(f2) ccmFactorList.append(f2) #TODO: Need more thorough and complete checks of inputs
##--FUNCTIONS-- def msg(txt): print txt arcpy.AddMessage(txt) return ##--PROCESSES-- # Extract development from NLCD msg("Extracting developed area from NLCD") devBinary = sa.Con(nlcdRaster, 1, 0, "VALUE IN (22,23,24)") # Compute focal mean of development msg("Calculating focal stats") nbrHood = sa.NbrCircle(distanceThreshold, "MAP") focalMean = sa.FocalStatistics(devBinary, nbrHood, "MEAN") # Compute distance decay msg("Computing distance decayed development") devNodata = sa.Con(nlcdRaster, 1, '', "VALUE IN (22,23,24)") eucDist = sa.EucDistance(devNodata) k = math.log(0.01) / distanceThreshold devDecay = sa.Exp(eucDist * k) # FOCAL MEAN: Compute zonal stats msg("Computing patch threat values") tmpTable = "in_memory/TmpTable" sa.ZonalStatisticsAsTable(patchRaster, "VALUE", devBinary, tmpTable, '', "MEAN") GeoHATutils.RenameField(tmpTable, "MEAN", "FocalMean")