2023年全国大学生 GIS应用技能大赛试题详解(第三题)

0 内容导读

2023年12月2日傍晚,M姐的QQ收到如下消息:

当时其实是懵的,啥幸福地理小区?啥32层楼?直到我看到了当天比赛的第三道题……

所以,今天我们来做第三题吧,主要实现4块的内容。咱们依次拆解一下。

01 整体解决思路

1.1 计算小区容积率并创建模型

题目给出了容积率的概念,首先计算小区的地上建筑总面积,再使用计算字段工具即可求出容积率。需要注意计算要求的坐标系。

构建模型,将上述相关工具拖拽入模型,调整并运行模型。

1.2 创建小区三维模型

题目要求创建小区里所有地块的三维模型。主要分为1-12号住宅楼、13号物业楼、小区外2栋商业楼、围墙、地块范围以及湖泊面。

其中物业楼和商业楼以及围墙均可以直接使用拉伸的方式转换成3D要素、地块范围以及湖泊面2个面要素直接保留即可。

住宅楼首先拆分成4户房屋,对一层的4户房屋进行2.8米拉伸,转成3D要素,再对3D要素向上移动0.6米,对3D要素进行垂直复制31次,最后计算各户的中心点Z值,反算各户的当前楼层。

1.3 住宅楼湖景可见性分析评价

该部分题目要求计算各户住宅的湖景面积百分比。分别需要找到观察点、分割湖景、计算湖景面积百分比这三部分操作。

如何找到观察点?可以参考上一步的操作,在一楼拆分成4户后,将4户住宅转换成线,只保留面向湖景一侧的线,再将线平行移动0.05米,移动后的线要素提取中点,即为观察点。

分割湖景可以构建湖泊的外包矩形渔网,再裁剪湖泊范围的渔网,提取中心点得到目标点。

计算湖景面积百分比是指各观察点能够看到的目标点个数与总目标点的百分比。选择构造视线得到视线,再计算通视性,得出观察点是否能够看到各目标点,最后进行汇总统计,得到各观察点能够看到的目标点个数,求解百分比。

1.4 住宅楼日照时长计算

该部分题目要求计算冬至日时长。要求找到南侧窗户点、计算建筑物阴影、统计各房屋的阳光次数。(第二个要求判断窗户点是否能接收阳光跟第四步的要求极为类似,我个人理解是一个要求,有的同学使用了【太阳阴影体】工具求解光照次数,也是可以的,两步的区别在于第二步直接使用了工具中的光照时间和位置,使用这个工具时需要注意可能需要稍微移动一下窗户点的位置避免其在阴影里)

先来看如何求解南侧窗户点,其解决方法跟1.3中的第一步非常相似,在一楼拆分成4户后,将4户住宅转换成线,只保留南侧线,使用沿线提取点生成3个点,即为南侧窗户点(这里没有移动窗户点位置)。

计算建筑物阴影的前提是使用虚拟的太阳,那就只能使用【天际线】工具求解出天际线的轮廓,再使用【天际线障碍物】求解阴影体。

使用【3D内部】工具判断窗户点是否在阴影体内,汇总统计各窗户点的光照次数,再统计各户住宅的光照次数。

整体流程如下:

图1 流程图

02 详细解题步骤

2.1 计算小区容积率并创建模型

2.1.1 创建数据库

新建一个地图视图、一个场景视图以及名为“结果数据库”的文件地理数据库。

2.1.2 计算容积率

2.1.2.1 计算建筑面积

使用【计算几何属性】工具,求得各建筑物面积,注意坐标系选择。

图2 计算面积

2.1.2.2 计算建筑总面积

使用【计算字段】工具,求得各建筑物总面积,表达式为“!楼层! * !面积!”

图3 计算总面积

2.1.2.3 汇总建筑总面积

使用【汇总统计数据】,统计建筑物中幸福小区的总面积。统计数据字段选择“总面积”,案例分组字段为“小区名”。

图4 汇总建筑总面积

得到幸福小区建筑总面积为159117.91平方米。

2.1.2.4 计算地块面积

使用【计算几何属性】工具,计算地块面积。

图5 计算地块面积

2.1.2.5 计算地块容积率

使用【计算字段】工具,求地块容积率,表达式为“159117.91 / !面积!”

图6 计算容积率

得到其容积率为2.94.(两位小数)

图7 容积率结果

2.1.2.6 构建模型

在目录列表中找到“结果数据库”,新建工具箱,重命名工具箱为“容积率计算”,将其添加至工程。在工具箱上新建“模型构建器”,打开模型对话框。

在模型构建器菜单栏上找到属性,重命名模型构建器为“容积率计算”。

图8 构建模型

2.1.2.7 调整模型

在历史记录中找到2.1.2.1-2.1.2.6使用过的所有工具,将其拽入模型构建器中。发现工具由于输入变量的不同可以分为建筑物部分和地块部分,但是两者关联并不明显,不明显的原因在于计算容积率时,我们直接复制了上一步建筑面积结果。

图9 模型中加入工具

在模型构建器中,无法直接复制结果,对于建筑面积结果可以使用模型构建器菜单栏中的实用工具,选择【获取字段值】工具,即可得到“建筑物总面积”图层中SUM_总面积字段的首行值;这里的首行值是非幸福小区的,还需要在模型构建器中添加【按属性选择图层】工具,先选中“建筑物总面积”中的幸福小区记录,再获取其SUM_总面积字段值。最终计算容积率时,使用表达式“%小区建筑物总面积% /!面积!”。

图10 模型中获取面积

最终的模型构建器工具如下:

图11 最终模型

模型构建完成后,进行保存,验证,运行查看其最终结果。

2.2 创建小区三维模型

2.2.1 构建住宅楼模型

2.2.1.1 住宅楼分户

选中建筑物图层中的1-12号楼要素,将要素导入到“结果数据库”中,重命名为“一层分户住宅”。为该图层添加“户号”字段,用于表示单层中的门牌号;添加“当前楼层高”字段,用于表示每户住宅的高度。

选中该图层的1号住宅楼要素,切换到编辑菜单栏中,找到【划分】工具。方法选择“成比例面积”,方向选择“选择面边缘以设置方向”,鼠标变成十字状态,部分数量改为4,在地图中选择要保留的边,即可将要素均匀的划分为4户。点击划分。

图12 划分住宅

打开一层分户住宅图层属性表,切换到“显示所选记录”,依次选中每一条记录,确定其户号(1-4),特别需要注意其顺序。

图13 添加户号属性

重复上述两步操作,划分12栋住宅楼并添加户号属性。

使用【复制要素】工具,将“一层分户住宅”图层复制,输出要素类为“一层分户住宅基台”表示0.6米的一层基台。

分别使用【计算字段】工具,为一层分户住宅图层的“当前楼层高”字段统一赋值2.8;为一层分户住宅基台图层的“当前楼层高”字段统一赋值0.6。

图14 赋值当前楼层高

2.2.1.2 创建住宅楼分户模型

将“一层分户住宅”及“一层分户住宅基台”图层,复制到场景视图中。

分别将上述两个图层,使用要素图层菜单栏中的拉伸选项卡,类型选择“基本高度”,字段选择“当前楼层高”,对数据进行拉伸。效果如下图

图15 拉伸住宅

分别使用【3D图层转要素类】工具,把拉伸的两个图层转换成3D要素类,输出命名为“一层分户住宅3D”和“一层分户住宅基台3D”。

图16 3D图层转要素类

选中一层分户住宅3D图层的所有要素,在编辑菜单栏中找到【移动至】工具,设置移动Z值0.6米(基台高度)。

图17 一楼住宅移动0.6米

在使用编辑菜单栏中的【垂直复制】工具,垂直偏移2.8米,要复制的次数设置为31次。点击复制。保存图层。

图18 垂直复制住宅

使用【合并】工具,将编辑后的“一层分户住宅3D”和“一层分户住宅基台3D”图层进行合并,输出结果命名为“住宅3D”。效果如下:

图19 合并住宅

可以选择使用带边的符号样式来可视化住宅。

图20 分户住宅效果

2.2.1.3 添加门牌号和当前楼层字段

使用【计算几何属性】工具,计算住宅3D图层各户住宅的中心点的z坐标。

图21 计算住宅中心点高度

使用【计算字段】工具,为住宅3D图层添加“当前楼层”字段,当前楼层的表达式为“(!住宅中心点! +0.8 ) / 2.8”。

图22 计算住宅所在楼层

使用【计算字段】工具,为住宅3D图层添加“门牌号”字段,门牌号的表达式为“!名称! +str(!当前楼层!)+'0'+str(!户号!)”。

图23 计算门牌号

使用【计算字段】工具,为住宅3D图层添加“OID”字段,记录住宅的唯一值。(计算日照时使用)

图24 添加OID字段

2.2.2 构建物业及商业楼模型

分别从“建筑物”图层中导出“物业”及“商业楼”要素。

将上述两个图层,分别使用要素图层菜单栏中的拉伸选项卡,类型选择“基本高度”,字段选择拉伸表达式(物业图层的表达式为3.6,商业楼的表达式为6*3.6),对数据进行拉伸。使用【3D图层转要素类】工具,把拉伸的两个图层转换成3D要素类。效果如下:

图25 物业及商业楼效果

2.2.3 构建围墙模型

使用【面转线】工具,提取地块的边界做为围墙外侧。

图26 地块转围墙

使用【缓冲区】工具,制作带有厚度的围墙,侧类型参数选择“右”,保证围墙外侧为地块边界。

图27 计算围墙厚度

使用要素图层菜单栏中的拉伸选项卡,类型选择“基本高度”,字段选择拉伸表达式3,对数据进行拉伸。使用【3D图层转要素类】工具,把拉伸的图层转换成3D要素类。效果如下:

图28 构建围墙

2.3 住宅楼湖景可见性分析评价

2.3.1 地图视图设置

在地图视图中,双击地图框,查看地图属性。设置常规属性中的旋转读数为27。

图29 旋转地图

这样做有两个好处,一是地图视图方便编辑二维数据,二是设置旋转角度后方便编辑要素。

图30 调整后住宅效果

2.3.2 提取观察点

2.3.2.1 提取一楼住宅线

使用【在折点处分割线】,将“一层分户住宅”面要素,分割成的一段一段线。

图31 一楼住宅分割成线

使用【复制要素】工具,将“一层分户住宅线”要素复制为“北侧住宅线”。

图32 输出北侧住宅线

2.3.2.2 编辑住宅线

使用编辑工具,删除多余线,只保留北侧住宅线。效果如下图

图33 编辑北侧住宅线

选中所有北侧住宅线要素,使用编辑工具中的【平行复制】工具,向右移动0.05米。点击【复制】。

图34 平行复制住宅线

复制完成之后,删除当前选中的48个要素。保存。

图35 保留新要素

2.3.2.3 提取观察点

使用【要素折点转点】工具,输出北侧住宅线的中点。命名为“观察点”。

图36 提取住宅线中点

使用【计算字段】工具,添加当前观察点高度字段,赋值2(来源2.8/2+0.6).

图37 计算观察点高度

2.3.2.4 复制观察点

将观察点图层复制到场景视图中。

使用【依据属性实现要素转3D】工具,输出观察点3D图层,高度字段选择“当前观察点高度”。

图38 观察点转3D

将观察点3D图层拖拽到3D图层中,选中观察点3D所有要素。

使用编辑工具中的垂直复制,垂直偏移为2.8米,复制次数为31次。点击复制。观察点个数共计1536个。保存。

图39 垂直复制观察点

旋转场景视图,切换到北侧,观察点与住宅楼的视觉关系如下图。

图40 观察点效果

使用【计算几何】工具,计算观察点3D要素的高度。

图41 计算观察点高度

2.3.3 提取目标点

使用【创建渔网】工具,创建湖泊要素的矩形渔网(目的是使用这里的标注点作为目标点), 模板范围参数为“湖泊”,勾选“创建标注点”参数。

图42 构建渔网

使用【裁剪】工具,提取湖泊范围内的目标点。

图43 提取湖泊范围内目标点

查看属性,共计151个观察点。

使用【计算字段】工具,为目标点添加高度字段,并赋值0(目的是下一步的构造视线)。

图44 添加目标点高度

2.3.4 计算湖景可见性

使用【构造视线】工具,创建表示从观察点到目标点的视线要素。注意两个高度字段的设置。

图45 构造视线

使用【通视性】工具,判断视线是否通视。注意障碍物的选择,选中所有的3D要素

图46 通视性分析

选中VISIBLE属性为1(可见)的通视性要素。共计136203个。

使用【汇总统计数据】工具,统计每个观察点可以看到的目标点数量。统计字段visible,案例分组字段为“OID_OBSERV”即观察点。

图47 统计可见视线

查看结果表。“OID_OBSERV”为观察点ID,COUNT_VISIBLE为对应观察点的可见目标点数量。

图48 查看可见视线属性

使用【连接字段】工具,为观察点3D图层添加COUNT_VISIBLE字段。

图49 观察点连接可见性属性

验证连接。共计1536个点,有1486个观察点能看到湖。

图50 验证连接

使用【计算字段】工具,计算湖景可见性,其表达式为“!COUNT_VISIBLE! / 151”。

图51 计算住宅可见性

2.4 住宅楼日照时长计算

2.4.1 提取窗户点

2.4.1.1 提取一楼窗户点

切换到地图视图。

使用【复制要素】工具,将“一层分户住宅线”要素复制为“南侧住宅线”。

图52 输出南侧住宅线

使用编辑工具,删除该图层的多余线,只保留南侧住宅线。保存数据。

使用【沿线生成点】工具,输出南侧住宅线的1/4、1/2、3/4 处的中心点,命名为“窗户点”。

图53 生成窗户点

使用【计算字段】工具,添加当前窗户点高度字段,赋值2(来源2.8/2+0.6).

图54 计算窗户点高度

2.4.1.2 复制窗户点

将窗户点图层复制到场景视图中。

使用【依据属性实现要素转3D】工具,输出窗户点3D图层,高度字段选择“当前窗户点高度”。

图55 窗户点转3D

将窗户点3D图层拖拽到3D图层中,选中窗户点3D所有要素。

使用编辑工具中的垂直复制,垂直偏移为2.8米,复制次数为31次。点击复制。窗户点个数共计4608个。保存。

旋转场景视图,切换到南侧,窗户点与住宅楼的视觉关系如下图。

图56 窗户点效果

使用【计算几何属性】工具,计算当前窗户点高度。

图57 计算所有窗户点高度

使用【计算字段】工具,为窗户点3D图层添加“当前楼层”字段,当前楼层的表达式为“(!当前窗户点高度!+0.8)/2.8”。

图58 计算窗户点楼层

使用【计算字段】工具,为窗户点3D图层添加“门牌号”字段,门牌号的表达式为“!名称! +str(!当前楼层!)+'0'+str(!户号!)”,与住宅一致。

图59 计算门牌号

使用【连接字段】工具,将窗户点3D图层与住宅3D图层连接,连接字段为“门牌号”,传输住宅的唯一ID。

图60 窗户点连接住宅ID

2.4.2 创建建筑物阴影

使用【天际线】工具,构建天际线轮廓,输入要素选择全部建筑物3D要素,并勾选创建轮廓。

图61 天际线分析

俯视效果如下:

图62 天际线效果

使用【天际线障碍】工具,生成天际线的阴影。需要设置最小、最大半径,最小半径表示观察点到天际线的最近距离,最大半径表示观察点到天际线的最远距离,当观察点是太阳时,最大半径一般选择比较大的数值(这里选择500米),从而保证阴影能够延伸到地表。

图63 天际线障碍物

效果如下图

图64 建筑物阴影效果

该多面体要素类中包含OBSV_PT_ID字段表示观察点的 FID、SILHOUE_ID表示阴影体FID,ORIGFTR_ID字段表示生成阴影体的建筑物的FID。

2.4.3 统计阳光次数

2.4.3.1 计算窗户点光照情况

使用【3D内部】工具,判断窗户点是否在阴影内部,并勾选复杂输出表,从而标识窗户点与阴影的关系。

图65 分析3D内部

输出独立表,该独立表的Target_ID字段表示窗户点ID,Contain_ID 字段表示阴影ID。

使用【连接字段】工具,将窗户点光照情况表与建筑物阴影挂接,目的是将窗户点的ID、太阳时间点(观察点ID)放在一个表中。

图66 光照情况表连接观察点ID

使用【连接字段】工具,将窗户点光照情况表与窗户点3D图层挂接,目的是将窗户点的ID、住宅唯一值ID放在一个表中。注意两个连接字段的工具参数区别。

图67 光照情况表连接住宅ID

使用【汇总统计数据】工具,汇总同一个住宅,在几个时间段没有光照(status字段是inside),注意统计类型选择唯一值,表示时间段的唯一值数量,案例分组字段为OID,表示用住宅唯一值ID分组。

图68 汇总各住宅光照情况

结果中UNIQUE_OBSV_PT_ID字段表示没有光照的次数。

2.4.3.2 汇总统计住宅光照次数

使用【连接字段】工具,将UNIQUE_OBSV_PT_ID字段挂接到住宅3D要素中。

图69 住宅连接各住宅光照情况

使用【计算字段】工具,计算各住宅光照次数。表达式为

def frequency(p):
 if not p:
   return 7
 else:
return 7-p

需要判断没有光照的次数是否为空。

图70 计算光照次数

关闭其他图层,可以选择使用唯一值对关照进行渲染,效果如下图:

图71 光照图效果

至此,题目就全部完成了。

03 总结

题目中计算容积率部分是比较基础的应用,这一步的工具也比较简单。

对于构建小区三维模型,其主要难点在住宅楼分户模型上,使用编辑中的【划分】工具对要素进行多部分划分非常的方便,还有一个特别的编辑工具【垂直复制】这是Pro中所特有的,极大的节省了考试时间,此外还用到了编辑工具中的【移动至】、【平行复制】,这些工具都非常实用。

常见的二维要素转三维的方法,如果是二维要素转3D线或多面体,一般是使用拉伸的方式,先保证其有3D显示属性,再由3D图层转为要素类;如果是二维点、线、面要素,需要通过其高度值创建3D要素,则使用依据属性实现要素转 3D工具。

在计算日照时,需要了解其使用【天际线】及【天际线障碍】的原理,题目中要求使用虚拟太阳,这时就可以选择天际线的相关方法,如果没有给出虚拟太阳做观察点,则可以使用太阳阴影体工具来分析,除此之外,如果提供了背光面轮廓以及太阳高度角的计算方法,则可以考虑将矢量数据转成栅格,使用山体阴影来计算太阳阴影。

相关内容阅读

2023年全国大学生 GIS应用技能大赛试题详解(第一题)

2023年全国大学生 GIS应用技能大赛试题详解(第二题)

M姐实验室

M姐实验室,关注GIS教育的一切,不定期分享各种教学资源、案例。关注GIS学生关注的一切,就业、考研and其其他他。如果你们有自己感兴趣的话题,想了解的内容,可以留言咨询~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值