免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 1880|回复: 18
收起左侧

库容计算求助?

  [复制链接]

11

主题

5835

铜板

6

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
461

爱心勋章

发表于 2024-9-23 10:37 | 显示全部楼层 |阅读模式
基于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}')


52

主题

1万

铜板

9

好友

高级工程师

Rank: 9Rank: 9Rank: 9

积分
1149
发表于 2024-9-25 10:12 | 显示全部楼层
厉害:zt:zt
回复 支持 反对

使用道具 举报

17

主题

4万

铜板

16

好友

VIP会员

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
2507

精华勋章灌水勋章

发表于 2024-9-25 15:04 | 显示全部楼层
看不懂   坐等后续  
回复 支持 反对

使用道具 举报

33

主题

4万

铜板

19

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
10859

活跃勋章

发表于 2024-9-25 19:31 | 显示全部楼层
期待高手解答
回复 支持 反对

使用道具 举报

0

主题

736

铜板

3

好友

助理工程师

Rank: 5Rank: 5

积分
168
发表于 2024-9-26 10:41 | 显示全部楼层
ARCGIS  JIN
回复 支持 反对

使用道具 举报

21

主题

9万

铜板

83

好友

地信学员

开开心心每一天

Rank: 12Rank: 12Rank: 12

积分
12689
发表于 2024-9-27 20:40 | 显示全部楼层
不错来这学习学习了
回复 支持 反对

使用道具 举报

15

主题

2万

铜板

6

好友

VIP会员

Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23Rank: 23

积分
1556
发表于 2024-9-28 11:15 | 显示全部楼层
pro不是自带库容计算功能吗?为啥还要自己写?
回复 支持 反对

使用道具 举报

11

主题

5835

铜板

6

好友

至尊VIP

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
461

爱心勋章

 楼主| 发表于 2024-9-29 13:55 | 显示全部楼层
莫开枪 发表于 2024-9-28 11:15
pro不是自带库容计算功能吗?为啥还要自己写?

因为计算方式不一样,我这边要求用断面法计算

回复 支持 反对

使用道具 举报

0

主题

1637

铜板

2

好友

助理工程师

Rank: 5Rank: 5

积分
162
发表于 2024-10-1 19:25 | 显示全部楼层
哟,又是每0.5米算一个量。前几个月才做完。
回复 支持 反对

使用道具 举报

4

主题

1万

铜板

7

好友

资深会员

Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

积分
3397

精华勋章

发表于 2024-10-2 16:45 | 显示全部楼层
看不懂   坐等后续  
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表