第十届全国大学生GIS应用技能大赛 下午题 讲解 【Arcmap 10.8】

目录

1、根据建筑物修正 DTM

2、计算每栋房屋的其它基础信息

3、创建房屋屋顶区域 2021 年每月预计获得太阳辐射量栅格数据,在环境设置中,将 Building 作为掩膜

4、计算 8 月份可用房屋屋顶范围内的太阳辐射量,在环境设置中,将 Building 作为掩膜

5、计算 8 月份每栋房屋可接收的太阳辐射量,在环境设置中,将 Building 作为掩膜

        DTM 和 DSM 的核心区别在于是否包含了地面上的非地形元素。DTM 关注于裸地地形,而 DSM 则包含了所有地表上的特征,无论是自然形成的还是人为建造的。选择哪种模型取决于具体的应用需求。

1、根据建筑物修正 DTM

Ctrl + F 搜索【以表格显示分区统计】,设置如下:

再将计算出来的分区统计表连接到原来的 Building 上,设置如图:

        题目说 “ 基本高度指建筑物底部高程值,本题请计算每栋建筑物范围内 DTM 的平均值,保
2 位小数位数 ” ,由此来计算基本高度字段,点击字段计算器选择平均值,并点击确定:
题目说 “ 本项目中的 DTM 和 DSM 数据都是通过雷达数据生成,固有一定的误差。正确的 DTM
应该在建筑物处是平整的,而不是倾斜或者高低起伏。” 所有可以考虑将所计算出的 Bulding 中的 BuildingBM 数据镶嵌至 DTM 中,首先将 BuildingEM 导出为栅格数据:
Ctrl + F 搜索分区统计,设置如图:
复制一遍 DTM 数据,在工具箱中点击【数据管理工具】--【栅格】--【栅格数据集】--【栅格】,将基本高度 数据镶嵌到 DTM 中,具体设置如下:

结果如下:

2、计算每栋房屋的其它基础信息

Ctrl + F 搜索以表格显示分区统计,设置如下:

再将最大高度表格连接到 Building 中,连接设置如下:

字段计算器计算最大高度:

建筑物高度指建筑物本身高度,即最大高度  -  基本高度,所以可以在属性表中计算建筑物高度:
结果:

由于考虑的是建筑物的朝向,所以在环境设置中,将 Building 设置为掩膜:

设置掩膜(Masking)主要用于控制图层的显示或分析范围,帮助用户专注于特定区域的数据处理和可视化。掩膜可以视为一个“遮罩”,它允许你指定哪些部分的数据应该被显示、分析或编辑,而将其他部分隐藏或忽略。

Ctrl + F 搜索坡向,设置如下:

结果如下:

题目要求以下几个建筑物的屋顶形态和朝向:

只需要定位到该建筑物,然后分析坡度即可,最后结果:

序号 BuildingBM 屋顶形态 屋顶朝向
1 2116 双坡屋顶 西北、东南
2 2156 双坡屋顶 北、南
3 2161 四坡屋顶 西北、东南、西南、东北
4 2165 双坡屋顶 西北、东南
5 2171 四坡屋顶 西北、东南、西南、东北

3、创建房屋屋顶区域 2021 年每月预计获得太阳辐射量栅格数据,在环境设置中,将 Building 作为掩膜

Ctrl + F 搜索太阳辐射区域,具体设置如下(重复12遍,计算每个月的辐射总数):

再根据十二个月的晴天天数表,算出每个月的

打开【栅格计算器】,计算每个月份的辐射量:

将每个月的最高最低辐射量填入表中:

月份 1月 2月 3月 4月 5月 6月
低值 4.23221 5.31081  9.62105 12.2721 12.5558 10.005
高值 39828.1 48683.1 85742.1 106786 108503 85074.4
月份 7月 8月 9月 10月 11月 12月
低值 14.2893 14.9097 12.184 6.18916 4.79557 3.67597
低值 123380 129046 107484 56247.5 44828.5 28946

4、计算 8 月份可用房屋屋顶范围内的太阳辐射量,在环境设置中,将 Building 作为掩膜

先计算出建筑物的坡度,打开【坡度】工具,设置如下:

通过栅格计算器,将三个条件计算出来:

打开【镶嵌至新栅格】,将三个条件镶嵌至栅格中,以提取可用房屋范围,设置如下:

打开【按掩膜提取工具】,通过前面提取到的可用屋顶范围,提取可用屋顶范围内的太阳辐射,设置如下:

5、计算 8 月份每栋房屋可接收的太阳辐射量,在环境设置中,将 Building 作为掩膜

Building 添加属性字段【可用面积】,使用【以表格显示分区统计】工具,提取出可用房顶面积总和,设置如下:

将数据连接到 Building 中,然后计算可用面积字段,设置如下:

Building 添加属性字段【可用辐射量 8 月】,打开【以表格显示分区统计】工具,提取可用屋顶范围辐射量,设置如下:

连接该表,计算可用辐射量 8 月字段,添加python代码,将可用面积小于25的辐射量设置为0,大于25的设置成8月辐射量,设置如下:

def calculate_radiation(available_area, radiation_august):
    if available_area < 25:
        return 0
    else:
        return radiation_august

calculate_radiation(![Building.可用面]!, ![可用辐射量8月:SUM]!)

最后结果:

感谢您的三连!!!