如何求多个水库的体积,已知多个水库为一个面图层,有该地区的dem数据

如何求多个水库的体积,已知多个水库为一个面图层,有该地区的dem数据

知识储备

1.迭代器
指以一定的自动化程度多次重复某个过程,通常又称为循环。迭代很重要,因为自动重复任务会节省执行这项任务所需的时间和精力。在“模型构建器”中进行迭代时,可以在每次迭代中使用不同的设置和数据来反复执行同一个过程。“模型构建器”中的迭代操作还具有灵活性,用户可以迭代整个模型,或只是重复执行单个工具或过程
在这里插入图片描述
2.表面体积工具
a.作用:表面体积可计算某个表面相对于给定基本高度或参考平面的投影面积、表面面积和体积。该表面可以是栅格、TIN 或 terrain 数据集。结果将写入以逗号分隔的文本文件。
b.位置:3D Analyst工具->功能性表面->表面体积
c.结果输出为文本文件:是以逗号分隔的 ASCII 文本文件,结果将写入该文件中。如果该文件已存在,会将结果追加到其中。文件的第一行中包含字段标题。这些标题分别是“数据集”、“平面高度”、“参考”、“Z 因子”、“2D 面积”、“3D 面积”、“体积”。后续行中包含实际值。
d.参数讲解:如果将参考平面设置为 ABOVE,则平面高度将被设置为表面的最小高度。如果将“参考平面”设置为 BELOW,则默认的平面高度将被设置为最大高度。
在这里插入图片描述

分析:

  1.把一个面图层中的水库分别导出成单个图层  
  2.将导出的多个图层分别与dem做裁剪,得到各个水库对应的Dem地区
  3.使用表面体积工具分别计算各个水库对应的Dem地区的体积

数据流程图就省了 懒懒懒~

数据处理

在这里插入图片描述

1把一个面图层中的水库分别导出成单个图层

使用split工具(分析工具->提取分析->分割)
split 字段为Text 通过Analysis Tools——Extract——Split工具实现。
步骤如下:
在“Input Features”和“Split Features”中都选择需要分割的水库图层,相当于用自己切割自己。在“Split Field”中选择具有唯一标识的字段,只要字段的值是单一的即可,此处选name,要求这个字段的属性为字符串(即字段类型为Text),它将作为生成的shp文件的文件名。然后设置输出路径即可。切记!!切记:裁剪工具中输入范围的图层的名字不可以是汉字开头
在这里插入图片描述

2.将导出的多个图层分别与dem做裁剪,得到各个水库对应的Dem地区

这里使用该工具为裁剪(数据管理工具->栅格栅格处理->裁剪,切记不规则裁剪需要把裁剪工具的在这里插入图片描述
勾上

我们知道分别对多个图层分别与dem做裁剪,需要使用多次裁剪工具,这是重复性的单一工作,在这里,我们使用建模来完成,一个模型中只能有一个迭代器

2.1打开模型构建器

打开ArcMap,启动目录窗口->展开工具箱->右键单击【我的工具箱】->选择【新建】|【工具箱】,按照自己喜好命名->右键单击新生成的工具箱,选择【新建】【模型】,打开模型构建器,进入该窗口
在这里插入图片描述
2.2构建迭代器
选择模型构建器菜单的【插入】->【迭代器】->【要素类】(迭代要素类:迭代工作空间要素数据集中的所有要素类。)
因为我们分割的数据存在了数据库里,所以选择迭代要素类)如下图所示
在这里插入图片描述
在这里插入图片描述
2.3建模-含有迭代器的裁剪工具
(1)将数据管理工具->栅格处理->裁剪工具,左键摁住不动,拖入模型中,点击模型菜单【连接】按钮 在这里插入图片描述
,将要素类与裁剪连接,作为【输出范围】
在这里插入图片描述
(4)设置输出路径 我们进行迭代多少次就会产生多少个结果,如果我们的结果命名是死的,那么生成的结果会一次一次的覆盖,最终只会有一个结果,所以我们需要设置一个活的输出路径,一次迭代一个新的输出路径,这里的【迭代要素类】有一个属性为【名称】,这个名在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3使用表面体积工具分别计算各个水库对应的Dem地区的体积

在这里插入图片描述
在这里插入图片描述
每一个都出来了 我们可以查看Txt文件 最后一个数为体积,可以试试C#进行文本的切割 ,把该文件下的所有文本遍历将其存储到数组,在将最后一个提取出来,我的电脑已经不能写C#了,如果能写,我倒是还挺想试试的,看看自己之前学习的忘了吗,下次再见!以后会多多把自己不会的问题以及解决方案多多分享的,有好的想法还可以一起讨论噢~
编程实现:链接
https://blog.csdn.net/weixin_42200815/article/details/120104331
好记性不如烂笔头~

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值