太阳辐射区域 (空间分析)
用法
-
由于计算日照很耗时,因此请务必确保所有参数正确。计算大型的数字高程模型 (DEM) 可能需要数小时,而计算超大型的 DEM 可能需要数天。
-
输出辐射栅格数据将始终为浮点型,并且单位为瓦特小时每平方米 (WH/m2)。输出直接辐射持续时间栅格数据是以小时为单位的整型。
-
太阳赤纬和太阳位置等计算中使用位置区域的纬度(单位:十进制度,北半球为正,南半球为负)。
分析仅针对局部景观尺度,因此,通常可以为整个 DEM 使用一个纬度值。对于更大的数据集(如州、国家或大洲),不同纬度(大于 1 度)处的日照结果将明显不同。要对更广的地理区域进行分析,有必要将研究区域按纬度分割为不同的区。
-
对于多日时间配置,最大天数范围为一年的总天数(365 天,闰年为 366 天)。如果起始日大于结束日,时间计算将进行到下一年。
例如,[起始日, 结束日] = [365, 31] 表示 12 月 31 日到下一年的 1 月 31 日。[1, 2] 表示第一天的时间,即从 0:00(1 月 1 日)到 0:00(1 月 2 日)。起始日和结束日不能相同。
时间配置中的年份值用于确定是否为闰年。它对太阳辐射分析没有任何其他影响,因为各计算式是取决于儒略日的时间段的函数。
-
对于“日内”时间配置,最大时间范围为一天(24 小时)。计算不会跨天执行(例如,从 12:00 p.m. 到第二天的 12:00 p.m.)。起始时间必须小于结束时间。
-
对于日内的时间配置,开始和结束时间显示为太阳时(单位:十进制小时)。使用时间转换对话框窗口转换本地标准时和本地太阳时 (HMS)。将本地标准时转换成太阳时时,此程序会考虑均时差。
-
当表面 z 单位用其他单位而非地面 x,y 单位表示时,需要使用 Z 因子对计算进行校正。要获得精确的结果,z 单位应与 x,y 地面单位相同。如果二者不同,可使用 z 因子将 z 单位转换为 x,y 单位。例如,如果 x,y 单位是米而 z 单位是英尺,则应指定 0.3048 的 z 因子以将英尺转换为米。
-
建议数据采用投影坐标系统(单位:米)。但是,如果选择使用球坐标系运行分析,需要为该纬度指定一个适当的 z 因子。如果 x,y 单位是十进制度而 Z 单位是米,特定纬度的一些合适的 Z 因子为:
Latitude Z-factor 0 0.00000898 10 0.00000912 20 0.00000956 30 0.00001036 40 0.00001171 50 0.00001395 60 0.00001792 70 0.00002619 80 0.00005156
-
太阳赤纬和太阳位置等计算中使用位置区域的纬度(单位:十进制度,北半球为正,南半球为负)。因为太阳分析在景观尺度和局部尺度下执行,所以可以为整个 DEM 使用一个纬度值。对于更广的地理区域,有必要将研究区域按纬度分割为不同的区。
-
对于包含空间参考的输入表面栅格数据,会自动计算平均纬度;否则,纬度将默认为 45 度。使用输入图层时,将使用数据框的空间参考。
-
天空大小是辐射计算中使用的视域、天空图和太阳图栅格数据的分辨率(单位:每边像元数)。这些是天空的仰视半球栅格表示,没有地理坐标系。这些格网为正方形(行和列数相等)。
增加天空大小会提高计算精度,但也会显著增加计算时间。
-
如果“间隔天数”的设置较小(例如,< 14 天),则应使用较大的天空大小。分析期间,太阳图(取决于天空大小)用于表示特定时间段的太阳位置(轨迹)以计算直接辐射。对于更小的间隔天数,如果天空大小分辨率不是足够大,太阳轨迹可能重叠,从而导致该轨迹的辐射值为零或更低。增加分辨率可获得更精确的结果。
-
最大天空大小值为 4000,默认值为 200。对于具有大间隔天数(例如 > 14 天)的整个 DEM 而言,默认值已经足够。如果某点位置处的计算无需考虑计算时间,512 的天空大小值便以足够。对于更小的间隔天数(例如 < 14 天),建议使用更大的值。例如,要以间隔天数 1 计算赤道上某一位置的日照,建议使用 2800 或更大的天空大小。
-
建议间隔天数大于 3,因为三天内的太阳轨迹通常会重叠,具体取决于天空大小和年中的时间。使用月间隔计算整年的数据时,日间隔将被禁用,并且程序在内部使用日历月间隔。默认值为 14。
-
因为视域计算可能极为耗时,因此只针对指定的计算方向数跟踪视角。有效值必须是 8 的倍数(8、16、24、32,依此类推)。通常,值 8 或 16 适合于地形平缓的区域,而值 32 适合于复杂地形。默认值为 32。
-
所需的计算方向数与输入 DEM 的分辨率有关。分辨率为 30m 的自然地形通常相当平滑,因此多数情况下较小的方向数就足够了(16 或 32)。对于更精细的 DEM,尤其是当 DEM 中合并有人造建筑时,需要增加方向数。增加方向数会提升精度,但也会增加计算时间。
-
为每种间隔创建输出复选框提供了一种灵活的方式,使用户可计算指定时间段内的整体日照,也可计算时间序列中“每个间隔”内单独的日照。例如,对于时间间隔为一小时的日内时间段,选中此框将创建每小时日照值;否则,将计算整天的整体日照。
-
每个间隔复选框的参数会影响输出辐射文件的格式和数量。对于区域分析,由于要创建多个输出,因此在开始计算之前总是要验证有足够的磁盘空间可供使用。选中时,默认的输出格式为“ESRI GRID”格式,该格式包含多个波段,对应每个时间间隔(时间配置小于一日时为小时间隔,时间配置为多日时为日间隔)的辐射或持续时间值。
-
散射比例是总正常辐射通量的散射部分。该值的范围是从 0 到 1。应根据大气条件设置该值。天空非常晴朗的条件下,典型值为 0.2,而天空一般晴朗的条件下,典型值为 0.3。
-
地表接收到的太阳辐射量只是大气外接收到的辐射量的一部分。透射率是大气层的一种属性,它是指大气上边缘接收到的能量与通过最短路径(沿天顶方向)到达地球表面的能量的比率(所有波长的平均值)。值的范围介于 0(无透射)到 1(完全透射)之间。通常,在天空非常晴朗的条件下,观测值为 0.6 或 0.7;在天空普通晴朗的条件下,观测值为 0.5。
因为会根据海拔影响校正算法,所以应始终针对海平面给出透射率。透射率与散射比例参数成反比关系。
语法
参数 | 说明 | 数据类型 |
in_surface_raster |
输入高程面栅格数据。 | Raster Layer |
latitude (可选) |
位置区域的纬度。单位为十进制度,北半球为正值,南半球为负值。 对于包含空间参考的输入表面栅格数据,会自动计算平均纬度;否则,纬度将默认为 45 度。 | Double |
sky_size (可选) |
视域、天空图和太阳图格网的分辨率或天空大小。单位为像元。 默认情况下会创建 200 x 200 像元的栅格。 | Long |
time_configuration (可选) |
指定用于计算太阳辐射的时间配置(时段)。 时间类对象用于指定时间配置。 可用的不同类型的时间配置为:TimeWithinDay、TimeMultiDays、TimeSpecialDays 和 TimeWholeYear。 格式如下:
默认时间配置为 TimeMultiDays,其中 start_day 为 5 且 end_day 为 160(当前儒略年)。 | Time configuration |
day_interval (可选) |
用于为太阳图计算天空分区的一年中的时间间隔(单位:天)。 默认值为 14(两周)。 | Long |
hour_interval (可选) |
用于为太阳图计算天空分区的一天中的时间间隔(单位:小时)。 默认值为 0.5。 | Double |
each_interval (可选) |
指定是针对所有位置计算一个总日射值,还是针对指定间隔小时数和间隔天数计算多个值。
| Boolean |
z_factor (可选) |
一个表面 z 单位中地面 x,y 单位的数量。 z 单位与输入表面的 x,y 单位不同时,可使用 z 因子调整 z 单位的测量单位。计算最终输出表面时,将用 z 因子乘以输入表面的 z 值。 如果 x,y 单位和 z 单位采用相同的测量单位,则 z 因子为 1。这是默认值。 如果 x,y 单位和 z 单位采用不同的测量单位,则必须将 z 因子设置为适当的因子,否则会得到错误的结果。 例如,如果 z 单位是英尺而 x,y 单位是米,则应使用 z 因子 0.3048 将 z 单位从英尺转换为米(1 英尺 = 0.3048 米)。 | Double |
slope_aspect_input_type (可选) |
如何为分析获取坡度和坡向信息。
| String |
calculation_directions (可选) |
计算视域时使用的方位角方向数。 有效值必须是 8 的倍数(8、16、24、32,依此类推)。默认值为 32 个方向,该值适用于复杂地形。 | Long |
zenith_divisions (可选) |
用于创建天空图中的天空分区的分割数。 默认值为八个分割(相对于天顶)。值必须大于零并且小于天空大小值的一半。 | Long |
azimuth_divisions (可选) |
用于创建天空图中的天空分区的分割数。 默认值为八个分割(相对于北方)。有效值必须是 8 的倍数。值必须大于零并且小于 160。 | Long |
diffuse_model_type (可选) |
散射辐射模型的类型。
| String |
diffuse_proportion (可选) |
散射的总正常辐射通量的比例。值的范围介于 0 到 1 之间。 应根据大气条件设置该值。默认值为 0.3,适用于普通晴朗的天空条件。 | Double |
transmittivity (可选) |
穿过大气层的辐射部分(所有波长的平均值)。值的范围介于 0(无透射)到 1(完全透射)之间。 默认值为 0.5,适用于普通晴朗的天空。 | Double |
out_direct_radiation_raster (可选) |
表示每个位置的直接入射的太阳辐射的输出栅格。 输出单位为瓦特小时每平方米 (WH/m2)。 | Raster Dataset |
out_diffuse_radiation_raster (可选) |
表示每个位置的散射入射的太阳辐射的输出栅格。 输出单位为瓦特小时每平方米 (WH/m2)。 | Raster Dataset |
out_direct_duration_raster (可选) |
表示直接入射太阳辐射的持续时间的输出栅格。 输出单位为小时。 | Raster Dataset |
返回值
名称 | 说明 | 数据类型 |
out_global_radiation_raster |
用于表示为输入表面的每个位置所计算的全局辐射或全部日照入射量(直射 + 散射)的输出栅格。 输出单位为瓦特小时每平方米 (WH/m2)。 | Raster |
代码示例
以下 Python 窗口脚本演示了太阳辐射区域 (AreaSolarRadiation) 工具的使用方法。
import arcpy from arcpy.sa import * from arcpy import env env.workspace = "C:/sapyexamples/data" outGlobalRadiation = AreaSolarRadiation("dem30", "", "400", TimeMultipleDays(2008,91,152)) outGlobalRadiation.save("C:/sapyexamples/output/glob_rad")
计算某一地理区域太阳辐射入射量。
# Name: AreaSolarRadiation_example02.py # Description: Derives incoming solar radiation from a raster surface. # Outputs a global radiation raster and optional direct, diffuse and direct duration rasters # for a specified time period. (April to July). # # Requirements: Spatial Analyst Extension # Import system modules import arcpy from arcpy import env from arcpy.sa import * # Set environment settings env.workspace = "C:/sapyexamples/output" # Check out the ArcGIS Spatial Analyst extension license arcpy.CheckOutExtension("Spatial") # Set local variables inRaster = "C:/sapyexamples/data/solar_dem" latitude = 35.75 skySize = 400 timeConfig = TimeMultipleDays(2008, 91, 212) dayInterval = 14 hourInterval = 0.5 zFactor = 0.3048 calcDirections = 32 zenithDivisions = 16 azimuthDivisions = 16 diffuseProp = 0.7 transmittivity = 0.4 outDirectRad = "" outDiffuseRad = "" outDirectDur = Raster("C:/sapyexamples/output/dir_dur") # Execute AreaSolarRadiation outGlobalRad = AreaSolarRadiation(inRaster, latitude, skySize, timeConfig, dayInterval, hourInterval, "NOINTERVAL", zFactor, "FLAT_SURFACE", calcDirections, zenithDivisions, azimuthDivisions, "UNIFORM_SKY", diffuseProp, transmittivity, outDirectRad, outDiffuseRad, outDirectDur) # Save the output outGlobalRad.save("C:/sapyexamples/output/glob_rad")