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