基于Monster 组和GPT的调写:
import arcpy
import pandas as pd
import os
# 设置工作环境
arcpy.env.workspace = "D:/asc结果文件"
arcpy.CheckOutExtension("Spatial")
# 读取表格
df_intensity = pd.read_excel("A.xlsx")
df_time = pd.read_excel("B.xlsx")
# 遍历asc文件,进行重分类
for i in df_intensity['强度']:
for d in df_time['时间']:
# 构建输入输出文件路径
input_raster = "result{}-{}.asc".format(str(i), str(d))
output_raster = "result{}-{}.tif".format(str(i), str(d))
# 执行重分类
remap = arcpy.sa.RemapRange([[0, 1, 1], [1, 15, 2]])
out_raster = arcpy.sa.Reclassify(input_raster, "VALUE", remap, "NODATA")
out_raster.save(output_raster)
# 提取属性表并转换为Excel
output_excel = "D:/tif结果汇总表.xlsx"
for root, dirs, files in os.walk(arcpy.env.workspace):
for file in files:
if file.endswith(".tif"):
# 提取属性表
input_raster = os.path.join(root, file)
table_name = arcpy.ValidateTableName("table", arcpy.env.workspace)
arcpy.TableToTable_conversion(input_raster, arcpy.env.workspace, table_name)
table = os.path.join(arcpy.env.workspace, table_name)
# 提取Count字段并汇总
with arcpy.da.SearchCursor(table, ['VALUE', 'Count']) as cursor:
count_dict = {}
for row in cursor:
count_dict[row[0]] = row[1]
# 构建新行数据
new_row = {'Tif文件名': os.path.splitext(file)[0]}
for key, value in count_dict.items():
new_row['Count' + str(key)] = value
# 添加到输出表格
if not os.path.isfile(output_excel):
pd.DataFrame(columns=new_row.keys()).to_excel(output_excel, index=False)
pd.DataFrame([new_row]).to_excel(output_excel, index=False, header=False, mode='a')
# 释放Spatial Analyst扩展许可
arcpy.CheckInExtension("Spatial")