m0_72091765 2024-11-01 14:59
浏览 1

基于arcpy水库库容计算代码

项目要用断面法计算水库库容,基于gispro想弄个脚本批量计算,通过ai写了个脚本,修改后无法运行。脚本要求实现的功能大致是:输入一个TIN数据文件,找出数据的最高点最低点,然后从最低点开始,每隔0.5m,用表面体积函数计算每个高程值下的TIN数据的面积和体积,最后将每次的结果汇总,导出到EXCEL。看看该如何改,代码如下:

import arcpy
import pandas as pd

# 设置工作环境
arcpy.env.workspace = "C:/data"
arcpy.CheckOutExtension("3D")

# 输入TIN数据集的路径
tin_dataset = "your_tin_dataset.tds"  # 请替换为你的TIN数据集路径

# 获取TIN数据集的描述信息
desc = arcpy.Describe(tin_dataset)
min_elevation = desc.zmin
max_elevation = desc.zmax

# 初始化结果列表
results = []

# 从最低点到最高点,每隔0.5米计算一次
elevation = min_elevation
while elevation <= max_elevation:
    output_txt_file = "surf_vol.txt"
    arcpy.ddd.SurfaceVolume(tin_dataset, output_txt_file,
                            reference_plane = "ABOVE", base_z = elevation, z_factor = 1,
                            pyramid_level_resolution = 0)

    # 读取输出文本文件并提取面积和体积
    with open(output_txt_file, 'r') as file:
        lines = file.readlines()
        if len(lines) > 1:  # 确保文件中有数据
            area = lines[-1].split(',')[-2].strip()  # 假设面积在倒数第二列
            volume = lines[-1].split(',')[-1].strip()  # 假设体积在最后一列
            results.append({'Index': len(results) + 1, 'Elevation': elevation, 'Area': area, 'Volume': volume})

    # 删除临时文本文件
    arcpy.Delete_management(output_txt_file)

    # 增加0.5米
    elevation += 0.5

# 将结果列表转换为DataFrame
df_results = pd.DataFrame(results)

# 导出到Excel
output_excel_file = "C:/data/results.xlsx"  # 请替换为你希望保存Excel文件的路径
df_results.to_excel(output_excel_file, index = False)

print(f'Results exported to {output_excel_file}')

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 创建了问题 11月1日

    悬赏问题

    • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
    • ¥15 java 的protected权限 ,问题在注释里
    • ¥15 这个是哪里有问题啊?
    • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
    • ¥15 texstudio的问题,
    • ¥15 spaceclaim模型变灰色
    • ¥15 求一份华为esight平台V300R009C00SPC200这个型号的api接口文档
    • ¥15 字符串比较代码的漏洞
    • ¥15 欧拉系统opt目录空间使用100%
    • ¥15 ul做导航栏格式不对怎么改?