Solar Radiation Graphics (Spatial Analyst)
Summary
Derives raster representations of a hemispherical viewshed, sunmap, and skymap, which are used in the calculation of direct, diffuse, and global solar radiation.
Usage
-
Outputs from the Solar Radiation Graphics tool are raster representations and are not maps that correspond to the outputs from the area or point solar radiation analysis. Rather, they are representations of directions in a hemisphere of directions looking upward from a given location. In a hemispherical projection, the center is the zenith, the edge of the circular "map" is the horizon, and the angle relative to the zenith is proportionate to the radius. Hemispherical projections do not have a geographic coordinate system and have a bottom left corner of (0,0).
-
It would not be practical to store viewsheds for all locations in a DEM, so when input locations are not specified, a single viewshed is created for the center of the input surface raster. When input point features or locations file are specified, multiple viewshed rasters are created for each input location. When multiple locations are specified, the default output format is an ESRI GRID stack, which contains multiple bands that correspond to the viewshed for each location.
-
The input locations table can be an INFO table, a .dbf file, an Access table, or a text file.
-
Output graphic display rasters do not honor extent or cell size environment settings. The output extents are always respective of the sky size/resolution and have a cell size equal to one. However, the underlying analysis will use the environment settings and may affect the results of the viewshed.
-
One or two sunmap rasters may be generated, depending on whether the time configuration includes overlapping sun positions throughout the year. When two sunmaps are created, one represents the period between the winter and summer solstice (December 22 to June 22), and the other represents the period between the summer solstice and the winter solstice (June 22 to December 22). When multiple sunmaps are created, the default output is an ESRI GRID stack. When the output is added to ArcMap, only the first band will be displayed.
-
The latitude for the site area (units: decimal degree, positive for the north hemisphere and negative for the south hemisphere) is used in calculations such as solar declination and solar position.
The analysis is designed only for local landscape scales, so it is generally acceptable to use one latitude value for the whole DEM. With larger datasets (i.e., states, countries, or continents), the insolation results will differ significantly at different latitudes (greater than 1 degree). To analyze broader geographic regions, it is necessary to divide the study area into zones with different latitudes.
-
For input surface rasters containing a spatial reference, the mean latitude is automatically calculated; otherwise, the latitude will default to 45 degrees. When using an input layer, the spatial reference of the data frame is used.
-
Sky size is the resolution of the viewshed, sky map, and sun map rasters which are used in the radiation calculations (units: cells per side). These are upward-looking, hemispherical raster representations of the sky and do not have a geographic coordinate system. These grids are square (equal number of rows and columns).
Increasing the sky size increases calculation accuracy but also increases calculation time considerably.
-
When the "day interval" setting is small (e.g., < 14 days) a larger sky size should be used. During analysis the sun map (determined by the sky size) is used to represent sun positions (tracks) for particular time periods to calculate direct radiation. With smaller day intervals, if the sky size resolution is not large enough, sun tracks may overlap, resulting in zero or lower radiation values for that track. Increasing the resolution provides a more accurate result.
-
The maximum sky size value is 10000. A value of 200 is default and is sufficient for whole DEMs with large day intervals (e.g., > 14 days). A sky size value of 512 is sufficient for calculations at point locations where calculation time is less of an issue. At smaller day intervals (e.g., < 14 days), it is recommended to use higher values. For example, to calculate insolation for a location at the equator with day interval = 1, it is recommended to use a sky size of 2800 or more.
-
Day intervals greater than 3 are recommended as sun tracks within three days typically overlap, depending on sky size and time of year. For calculations of the whole year with monthly interval, day interval is disabled and the program internally uses calendar month intervals. The default value is 14.
-
Because the viewshed calculation can be highly intensive, horizon angles are only traced for the number of calculation directions specified. Valid values must be multiples of 8 (8, 16, 24, 32, and so on). Typically, a value of 8 or 16 is adequate for areas with gentle topography, whereas a value of 32 is adequate for complex topography. The default value is 32.
-
The number of calculation directions needed is related to the resolution of the input DEM. Natural terrain at 30m resolution is usually quite smooth so fewer directions are sufficient for most situations (16 or 32). With finer DEMs, and particularly with man-made structures incorporated in the DEMs, the number of directions needs to increase. Increasing the number of directions will increase accuracy but will also increase calculation time.
Syntax
Parameter | Explanation | Data Type |
in_surface_raster |
Input elevation surface raster. | Raster Layer |
in_points_feature_or_table (Optional) |
The input point feature class or table specifying the locations to analyze solar radiation. | Feature Layer | Table View |
sky_size (Optional) |
The resolution or sky size for the viewshed, sky map, and sun map grids. The units are cells. The default creates a raster of 200 x 200 cells. | Long |
height_offset (Optional) |
The height (in meters) above the DEM surface for which calculations are to be performed. The height offset will be applied to all input locations. | Double |
calculation_directions (Optional) |
The number of azimuth directions used when calculating the viewshed. Valid values must be multiples of 8 (8, 16, 24, 32, and so on). The default value is 32 directions, which is adequate for complex topography. | Long |
latitude (Optional) |
The latitude for the site area. The units are decimal degrees, with positive values for the northern hemisphere and negative for the southern. For input surface rasters containing a spatial reference, the mean latitude is automatically calculated; otherwise, latitude will default to 45 degrees. | Double |
time_configuration (Optional) |
Specifies the time configuration (period) used for calculating solar radiation. The Time class objects are used to specify the time configuration. The different types of time configurations available are TimeWithinDay, TimeMultiDays, TimeSpecialDays, and TimeWholeYear. The following are the forms:
The default time_configuration is TimeMultiDays with the start_day of 5 and end_day of 160, for the current Julian year. | Time configuration |
day_interval (Optional) |
The time interval through the year (units: days) used for calculation of sky sectors for the sun map. The default value is 14 (biweekly). | Long |
hour_interval (Optional) |
Time interval through the day (units: hours) used for calculation of sky sectors for sun maps. The default value is 0.5. | Double |
out_sunmap_raster (Optional) |
The output sunmap raster. The output is a representation that specifies sun tracks, the apparent position of the sun as it varies through time. The output is at the same resolution as the viewshed and skymap. | Raster Dataset |
zenith_divisions (Optional) |
The number of divisions used to create sky sectors in the sky map. The default is eight divisions (relative to zenith). Values must be greater than zero and less than half the sky size value. | Long |
azimuth_divisions (Optional) |
The number of divisions used to create sky sectors in the sky map. The default is eight divisions (relative to north). Valid values must be multiples of 8. Values must be greater than zero and less than 160. | Long |
out_skymap_raster (Optional) |
The output skymap raster. The output is constructed by dividing the whole sky into a series of sky sectors defined by zenith and azimuth divisions. The output is at the same resolution as the viewshed and sunmap. | Raster Dataset |
Return Value
Name | Explanation | Data Type |
out_viewshed_raster |
The output viewshed raster. The resulting viewshed for a location represents which sky directions are visible and which are obscured. This is similar to the view provided by upward-looking hemispherical ("fisheye") photographs. | Raster |
Code Sample
The following Python Window script demonstrates how to use the SolarRadiationGraphics tool.
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outViewshedMap = SolarRadiationGraphics("elevation", "observers.shp", 200, 2, 32, 52,
TimeMultipleDays(2009, 91, 212), 14, 0.5,
"c:/sapyexamples/output/sunmap", 8, 8,
"c:/sapyexamples/output/skymap")
outViewshedMap.save("c:/sapyexamples/output/viewmap")
Create a viewshed, sunmap, and skymap used in the solar radiation analysis.
# Name: SolarRadiationGraphics_Ex_02.py
# Description: Derives raster representations of a hemispherical viewshed,
# sunmap, and skymap, which are used in the calculation of direct, diffuse,
# and global solar radiation.
# 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"
# Set local variables
inRaster = "elevation"
pntFC = "observers.shp"
skySize = 200
zOffset = 2
directions = 32
latitude = 52
timeConfig = TimeMultipleDays(2009, 91, 212)
dayInterval = 14
hourInterval = 0.5
outSunMap = "c:/sapyexamples/output/sunmap"
zenDivisions = 8
aziDivisions = 8
outSkyMap = "c:/sapyexamples/output/skymap"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute SolarRadiationGraphics
outViewshedMap = SolarRadiationGraphics(inRaster, pntFC, skySize, zOffset,
directions, latitude, timeConfig,
dayInterval, hourInterval, outSunMap,
zenDivisions, aziDivisions, outSkyMap)
# Save the output
outViewshedMap.save("c:/sapyexamples/output/viewmap")