城市建筑日照分析
1.背景
随着城市建筑密度越来越大,建筑物的日照规范也被纳入城市规划的指标之中,一方面要衡量现有建筑是否符合规范,另一方面又要对未来城市规划提供参考依据。应用GIS空间分析方法可以方便的找出不符合建筑日照规范的建筑。
2.数据
(1) 某一城区建筑数据buildings.shp;
(2) 地块单元数据parcel.shp。
图1. 建筑数据(左)和地块单元数据(右)
3.要求
(1) 计算该地区各个单元的容积率
(公式1)
式中,建筑面积为各楼层建筑面积之和;用地面积为各地块单元(parcels.shp)面积。
(2) 请找出不符合国家规定日照标准的建筑。
我国建筑日照标准有如下规定:一个建筑底层日照要至少满足在冬至这一天,在12:00-14:00能接受到太阳照射。已知该地区纬度¢为32°,太阳赤纬计算公式为:
(公式2)
式中,θ为日角,即
,t0=N-1,N为积日,即为日期在年内的顺序号(1月1日为1,以此类推,非闰年的12月31日为365)。
时角t为
t=(s f/60-12)*15 (公式3)
式中,s为时,f为分。
太阳高度角h,即
(公式4)
太阳方位角A(方位角是以正南方向为0,顺时针为正,逆时针为负),即
(公式5)
(3) 注意:弧度与角度的转换(在三角函数中统一使用弧度)
4.工作流程
⑴ 计算容积率
根据给定的容积率计算公式,需要计算各地块的面积和地块内的建筑物的建筑总面积,而地块内建筑物的建筑总面积又与每个建筑物的建筑面积相关。因此,首先计算每个建筑物的建筑面积,然后将不同建筑物标识到其所属的地块内,以此得到地块内的建筑物的总建筑面积。同时,计算出各个地块的面积,依据公式1计算得到地块的容积率。
⑵找出不符合日照标准的建筑
在ArcGIS 10的三维分析工具中,提供了阴影分析的功能,该分析工具的光源为点状光源,而本例的太阳光源属于平行光光源,因此该阴影分析的功能无法满足本例的需要。ArcGIS提供的山体阴影工具,模拟的是太阳平行光源,可以用于本例的分析。因此,采用山体阴影工具(Hillshade)进行日照分析。
要提取太阳在规定时间内、不同方位角生成的建筑物阴影,必须获得建筑物的高度。因此,① 将矢量建筑物数据转为栅格,属性为建筑物高度。② 由于建筑物是体模型,在空间上具有一定的宽度,如果直接对建筑物提取山体阴影会造成判断错误。例如假设建筑物A与建筑物B在空间上存在阴影遮挡(即A挡住了B),则A在B向阳向的前方,B的房顶会遮盖住A的阴影,给遮蔽判断带来困难,如下图所示:
图2. 投影缺失(左)和正确情况(右)
因此,为解决这个问题,首先需要提取建筑物的背光面高度数据,由此提取[12:00 - 14:00]这段时间的“山体阴影”,并与建筑物进行叠加分析,从而判断建筑物是否满足日照标准。
要判断12:00 – 14:00建筑物的遮挡情况,还需要对太阳高度和角度的变化逐时刻模拟太阳日照,这是一个积分过程,微分时刻划分的越细,计算量越大,工作越复杂。在保证结果正确性的前提下,为了提高效率,我们只计算3个时刻(即12:00、13:00、14:00)的日照情况,如果这3个时刻都没有遮挡,则说明建筑物满足日照要求。
最后通过分析阴影与建筑物的空间叠加关系,找出不符合日照标准的建筑物。
工作流程图如下:
图3. 工作流程图
5.操作步骤
⑴ 求解地块容积率。
① 计算地块用地面积。
方法一:选择【空间统计工具】|【工具】}【计算面积】工具,打开对话框如下图:
图4. 面积计算工具对话框
图5. parcel_area属性表及面积计算结果
方法二:打开parcel文件属性表,选择add field命令,如下图:
图6. parcel属性表add field命令
添加“area”字段,设置“字段类型”为double。右键该字段名,在菜单中选择【calculate geometry】命令
图7. 选择calculate geometry命令
图8. 计算结果
② 计算各建筑物的总面积(建筑总面积=每层建筑面积×楼层数)。
打开buildings属性表,新建一个双精度字段“T_area”表示建筑物总面积(方法同上),右键该字段,选择【filed calculator】命令,在对话框中输入公式:[FLOOR]*[area],得到建筑物总面积,如下图:
图9. field calculator对话框及总面积计算结果
③ 标识各个建筑所属地块,便于下一步计算各个地块内的建筑总面积。
选择【分析工具】|【叠加分析】|【标识】工具,打开对话框如图:
图10. Identity工具对话框
输入要素:buildings;
标识要素:parcel;
输出要素类:buildings_ID;
连接属性:ALL;
其它参数选择默认,生产结果属性表如图:
图11. 标识结果
④ 通过建筑物所属地块的ID属性来统计每个地块内的总建筑面积。
打开building_ID的属性表,右击ID_1字段 ,选择【summarize】命令,打开对话框及输出结果如图:
图12. 汇总工具对话框及汇总结果
⑤ 关联表Sum_Area和parcel_area的属性表。
右键parcel_area(或parcel)图层,选择【连接和关联】|【连接】工具,打开工具对话框如图:
图13. 连接工具对话框
设置parcel_area(或parcel)的ID字段和表Sum_Area的ID_1字段进行关联操作。在提示是否创建索引的对话框选择“是”。
图14. 关联结果
⑥ 计算每个地块的容积率
在parcel_area(或parcel)的属性表中,新建双精度字段Rate;右键该字段选择【field calculator】工具,输出公式:[Sum_Area.Sum_T_area]/[parcel_area.F_AREA](或[parcel.area]),计算结果就是容积率。计算完成后,右击parcel_area图层,选择【连接和关联】|【移除连接】|【Sum_Area】。结果如下图:
图15. 地块容积率计算结果
⑵ 找出不符合日照标准的建筑。
1)将buildings.shp转化为栅格数据。选择【convention Tools】|【To Raster】|【Polygon To Raster】工具,打开工具对话框,如图:
图16. 面转栅格对话框
输入要素:buildings;
值字段:height;
输出栅格:buildings_g;
像元大小:1
其他参数默认设置,点击确定,生成栅格数据,如图:
图17. 建筑物栅格数据
2)对于上面栅格数据,须将NoData转为数值0,否则获得的阴影数据将不完整。
选择【spaitial analyst tools】|【reclass】|【reclassify】工具,
输入栅格:buildings_g;
重分类字段:value;
将NoData的值改为0,其它值保持不变;
输出栅格:dem_buildings。
图18. 重分类结果
3)分别根据给定的公式,计算12:00、13:00和14:00这3个时间点太阳的高度角和太阳方位角(如下表)。
表1. 太阳位置时刻表
时间 | 12:00 | 13:00 | 14:00 |
---|---|---|---|
高度角 | 34.75197 | 32.92049 | 27.75121 |
方位角 | 0 | 16.4569 | 31.2727 |
ArcGIS中的方位角 | 180 | 196.4569 | 211.2727 |
* 角度单位为°。
4)假设在t0时刻太阳的方位角为A,则建筑物在t0时刻的向光面坡向为[A-90,A 90].依据此原理,分别提取不同时刻的建筑物背光面轮廓。(下面说明12:00的背光面轮廓提取步骤)。
选择【spaitial analyst tools】|【surface】|【aspect】工具。打开工具对话框如图。
输入栅格:dem_buildings;
输出栅格:aspect12;
生成坡向数据如图:
图19. 12:00建筑物的坡向数据
5)选择【spaitial analyst tools】|【map algebra】|【raster calculator】工具。打开工具对话框如下左图。
输入公式:~(("Aspect12" >= 90) & ("Aspect12" <=>= 0)。计算12:00方位角为180°时建筑物背光面的轮廓。
输出栅格:back12;
图20. 栅格计算器对话框和提取结果
6)提取建筑物背光面的高度数据。
选择【spaitial analyst tools】|【map algebra】|【raster calculator】工具。输入公式:"back12" * "dem_buildings"。
输出栅格:dem12。
图21. 栅格计算器对话框和12:00建筑物背光面高度提取结果
同样的方法提可以取出13:00和14:00的建筑物背光面轮廓的高度数据:dem13和dem14。
7)根据3个时间点计算得到的建筑物背光面高度数据,生成hillshade。
选择【spaitial analyst tools】|【surface】|【hillshade】工具。打开工具对话框如图。
图21. hillshade工具对话框及参数设置
输入栅格:分别为dem12、dem13和dem14;
输出栅格:分别设为hillshade12、hillshade13和hillshade14;
“方位角”和“高度角”参数分别根据不同时刻输入相应的数据;
选择“模拟阴影”选项,输出栅格会同时考虑本地光照的角度和阴影,其中0值表示阴影区域。
所得3个时刻阴影数据分别如下所示:
图22. 12:00时刻的建筑物阴影数据
图23. 13:00时刻的建筑物阴影数据
图24. 14:00时刻的建筑物阴影数据
图25. 局部建筑物与阴影的遮挡关系(虚框为建筑物,黑色为阴影区)
8)由于获得的hillshade数据中,仅值为0的栅格为建筑物的阴影,为了方便对该时间段阴影的叠加分析,首先应先将hillshade数据进行【重分类】,对阴影栅格(hillshade值为0)数据,赋值为1,其它数据对应值为0 。
图26. 对hillshade数据重分类结果
然后,利用【raster calculator】将3个时刻的阴影栅格,累加为一个图层sh_all,即建筑物在12:00 – 14:00时段内的阴影范围。其取值分别为0、1、2、3;
值为0的区域属于非阴影区;
值为1的区域说明在某一时刻存在阴影;
值为2的区域说明在其中两个时刻存在阴影;
值为3的区域说明该区域3个时刻都存在阴影;
这里认为凡是值大于0的区域在12:00 ~ 14:00内有建筑物被遮挡。
图27. 阴影区域累加结果
9)对累积结果进行重分类。
因为阴影区的数值还不统一,所以用【重分类】工具对sh_all数据分类,使“阴影栅格”为1,非阴影栅格为0.
图28. 阴影区与非阴影区重分类结果
10)通过矢量包含关系来判断建筑物与阴影的遮挡关系。
所以我们需要将栅格数据转换为矢量面数据。打开上面的栅格文件的属性表,选中值为1的字段;再选择【转换工具】|【由栅格转出】|【栅格转面】工具,打开对话框如下图:
图29. 栅格转面工具对话框
输出结果如下图:
图30. 转换为矢量后的结果
11)查询不符合日照标准的建筑物(即质心落在阴影内的建筑物)。
选择菜单栏中的【selection】|【select by location】工具,如下图:
图31. 选择“按位置选择”工具
该工具对话框如下图:
选择方法:“从以下图层中选择要素”
目标图层:buildings;
源图层:shadow_polygon;
空间选择方法:“目标图层要素的质心在源图层要素内”
图32. “按位置选择”工具对话框及参数设置
点击确认,生成查询结果,如下图所示,其中高亮框选中区域为被遮挡的建筑物。
图33. 查询结果
12)将查询结果导出新图层。
右击查询后的buildings图层,选择【数据】|【导出数据】,打开工具对话框,如下图:
输出要素类设置为illegal。
图34. 导出数据对话框
将illegal图层和buildings、parcel数据叠加显示,得到不符合日照法规的建筑物分布情况,如下图:
图35. 不符合日照法规的建筑分布图(高亮建筑为不达标建筑物)