Зональная статистика для кода перекрывающихся полигонов с использованием arcpy, приводящего к ошибке 999999 - PullRequest
0 голосов
/ 08 ноября 2019

Запуск кода с использованием 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...