Запуск кода с использованием arcpy для итерации по нескольким перекрывающимся полигонам в одном классе пространственных объектов для вычисления зональной статистики. Я запускаю это в arcpro.
Существует потенциальная проблема со строкой 21, где я вычисляю зональную статистику, но я придерживаюсь точного синтаксиса. Я думаю, что, возможно, tempTable неправильный, но я не уверен, как.
import arcpy, os, sys, string
from arcpy import env
arcpy.CheckOutExtension("spatial")
def CreateDirectory(DBF_dir):
if not os.path.exists(DBF_dir):
os.mkdir(DBF_dir)
print ("created directory {0}".format(DBF_dir))
def ZonalStatsAsTable_OL(fc,DBF_dir,raster,zoneField):
for row in arcpy.SearchCursor(fc):
lyr = "Zone_{0}_lyr".format(row.FID)
tempTable = DBF_dir + os.sep + "zone_{0}.dbf".format(row.FID)
arcpy.MakeFeatureLayer_management(fc, lyr, "\"FID\" = {0}".format(row.FID))
arcpy.BuildRasterAttributeTable_management(raster, "overwrite")
print ("Creating layer {0}".format(lyr))
out_layer = DBF_dir + os.sep + lyr + ".lyr"
arcpy.SaveToLayerFile_management(lyr, out_layer, "ABSOLUTE")
print ("Saved layer file")
arcpy.gp.ZonalStatisticsAsTable_sa(out_layer, zoneField, raster, tempTable, "DATA", "ALL")
print ("Populating zonal stats for {0}").format(lyr)
del row, lyr
def MergeTables(DBF_dir,zstat_table):
arcpy.env.workspace = DBF_dir
tableList = arcpy.ListTables()
arcpy.Merge_management(tableList,zstat_table)
print ("Merged tables. Final zonalstat table {0} created. Located at {1}".format(zstat_table,DBF_dir))
del tableList
if __name__ == "__main__":
ws = "D:/TEMP"
DBF_dir = ws + os.sep + "DBFile"
fc = "D:/iteratortest/ZoneFeatures.shp"
zoneField = "FID"
raster = r"D:/iteratortest/Hansen_GFCv16.tif"
zstat_table = DBF_dir + os.sep + "Zonalstat.dbf"
CreateDirectory(DBF_dir)
ZonalStatsAsTable_OL(fc,DBF_dir,raster,zoneField)
MergeTables(DBF_dir,zstat_table)
Я ожидаю, что в нем будет таблица с зональной статистикой. Но мои ошибки: Ошибка 999999: что-то неожиданное вызвало сбой инструмента. Не удалось выполнить (ZonalStatisticsAsTable).