太阳辐射点 (空间分析)
用法
-
输入位置可以是要素类或表。表可以是 INFO 表、.dbf 文件、Access 表或文本表文件。
-
按表输入位置时,必须指定带 x,y 坐标的位置列表。使用坐标文件时,每行均应包含一个由空格或制表符分隔的 x,y 对。示例如下:
X Y 325541.218750 4314768.5 325169.250000 4313907.0 325874.031250 4313134.0 325825.093750 4314181.5
或者,也可在位置表中指定坡度(度)和坡向。文件应包含每个位置的坡度和坡向值以及 x,y 坐标。示例如下:
x y slope aspect 325541.218750 4314768.5 15.84516716 310.2363586 325169.250000 4313907.0 39.39801788 2.03503442 325874.031250 4313134.0 16.10847282 223.8308563 325825.093750 4314181.5 8.89850712 205.2011261
-
对于多日时间配置,最大天数范围为一年的总天数(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.)。起始时间必须小于结束时间。
-
当表面 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 天),则应使用较大的天空大小。分析期间,阳光图(取决于天空大小)用于表示特定时间段的太阳位置(轨迹)以计算直接辐射。对于更小的间隔天数,如果天空大小分辨率不是足够大,太阳轨迹可能重叠,从而导致该轨迹的辐射值为零或更低。增加分辨率可获得更精确的结果。
-
最大天空大小值为 10,000。默认值为 200,对于具有大间隔天数(例如 > 14 天)的整个 DEM 而言,默认值已经足够。如果某点位置处的计算无需考虑计算时间,512 的天空大小值便以足够。对于更小的间隔天数(例如 < 14 天),建议使用更大的值。例如,要以间隔天数 1 计算赤道上某一位置的日照,建议使用 2,800 或更大的天空大小。
-
建议间隔天数大于 3,因为三天内的太阳轨迹通常会重叠,具体取决于天空大小和年中的时间。使用月间隔计算整年的数据时,日间隔将被禁用,并且程序在内部使用日历月间隔。默认值为 14。
-
因为视域计算可能极为耗时,因此只针对指定的计算方向数跟踪视角。有效值必须是 8 的倍数(8、16、24、32,依此类推)。通常,值 8 或 16 适合于地形平缓的区域,而值 32 适合于复杂地形。默认值为 32。
-
所需的计算方向数与输入 DEM 的分辨率有关。分辨率为 30 米的自然地形通常相当平滑,因此多数情况下较小的方向数就足够了(16 或 32)。对于更精细的 DEM,尤其是当 DEM 中包含有人造建筑时,需要增加方向数。增加方向数会提升精度,但也会增加计算时间。
-
为每种间隔创建输出复选框提供了一种灵活的方式,使用户可计算指定时间段内的整体日照,也可计算时间序列中每个间隔内单独的日照。例如,对于时间间隔为一小时的日内时间段,选中此框将创建每小时日照值;否则,将计算整天的整体日照。
-
“对每个间隔”复选框会影响输出要素的属性数。为点辐射分析选中此选框时,输出要素类包括附加属性(t0、t1、t2 等),而这些属性用于指示每段时间间隔的辐射或持续时间值(时间配置小于一日时为小时间隔,时间配置为多日时为日间隔)。
-
地表接收到的太阳辐射量只是大气外接收到的辐射量的一部分。透射率是大气层的一种属性,表现为到达地球表面的能量(所有波长的平均值)与大气上边缘接收到的能量(大气圈外)的比率。值的范围介于 0(无透射)到 1(完全透射)之间。通常,在天空非常晴朗的条件下,观测值为 0.6 或 0.7;在天空普通晴朗的条件下,观测值为 0.5。
地球表面接收到的能量值是以相对于海平面而言大气中的最短路径(即太阳位于天顶或头顶正上方)计算的。对于南回归线和北回归线以外的地区,太阳永远也不能精确地位于天顶,即使是中午也不能;但是,此值仍然是指太阳位于天顶这一时刻的值。因为会根据海拔影响校正算法,所以应始终针对海平面给出透射率。
透射率与散射比例参数成反比关系。
语法
参数 | 说明 | 数据类型 |
in_surface_raster |
输入高程面栅格数据。 | Raster Layer |
in_points_feature_or_table |
指定位置以分析太阳辐射位置的输入点要素类或表。 | Feature Layer | Table View |
out_global_radiation_features |
用于表示为每个位置所计算的全局辐射或日照入射量(直射 + 散射)的输出要素类。 输出单位为瓦特小时每平方米 (WH/m2)。 | Feature Class |
height_offset (可选) |
要执行计算的 DEM 表面之上的高度(以米为单位)。 高度偏移将应用到所有输入位置。 | Double |
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_features (可选) |
表示每个位置的直接入射太阳辐射的输出要素类。 输出单位为瓦特小时每平方米 (WH/m2)。 | Feature Class |
out_diffuse_radiation_features (可选) |
表示每个位置的散射入射太阳辐射的输出要素类。 输出单位为瓦特小时每平方米 (WH/m2)。 | Feature Class |
out_direct_duration_features (可选) |
表示直接入射太阳辐射的持续时间的输出要素类。 输出单位为小时。 | Feature Class |
代码实例
以下 Python 窗口脚本演示了 PointsSolarRadiation 工具的使用方法。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
PointsSolarRadiation("elevation", "observers.shp",
"c:/sapyexamples/output/outglobalrad1.shp", "", 35, 200,
TimeMultipleDays(2009, 91, 212), 14, 0.5,"NOINTERVAL",
1, "FROM_DEM", 32, 8, 8,"STANDARD_OVERCAST_SKY", 0.3, 0.5,
"c:/sapyexamples/output/outdirectrad1.shp",
"c:/sapyexamples/output/outdiffuserad1.shp",
"c:/sapyexamples/output/outduration1.shp")
计算特定点位置的太阳辐射入射量。
# PointsSolarRadiation_Example02.py
# Description: For all point locations, calculates total global, direct,
# diffuse and direct duration solar radiation for a whole year.
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Set local variables
inRaster = "elevation"
inPntFC = "observers.shp"
outFeatures = "c:/sapyexamples/output/outglobal1.shp"
latitude = 35.75
skySize = 200
timeConfig = TimeMultipleDays(2009, 91, 212)
dayInterval = 14
hourInterval = 0.5
zFactor = 0.3048
calcDirections = 32
zenithDivisions = 8
azimuthDivisions = 8
diffuseProp = 0.3
transmittivity = 0.5
outDirectRad = "C:/sapyexamples/output/outdirectrad1.shp"
outDiffuseRad = "C:/sapyexamples/output/outdiffuserad1.shp"
outDirectDur = "C:/sapyexamples/output/outduration1.shp"
# Execute PointsSolarRadiation...
PointsSolarRadiation(inRaster, inPntFC, outFeatures, "", latitude, skySize,
timeConfig, dayInterval, hourInterval, "INTERVAL",
zFactor, "FROM_DEM", calcDirections, zenithDivisions,
azimuthDivisions,"STANDARD_OVERCAST_SKY", diffuseProp,
transmittivity, outDirectRad, outDiffuseRad, outDirectDur)