山体阴影 (Spatial Analyst)
插图
用法
-
山体阴影工具可根据某栅格创建地貌晕渲栅格。将光源视为位于无穷远处。
-
山体阴影栅格的整数值范围为 0 到 255。
-
可以输出两种地貌晕渲栅格。如果不启用模拟阴影选项(未选中),则输出栅格仅会考虑本地光照入射角度。如果启用该选项(选中),则输出栅格会同时考虑本地光照入射角度和阴影。
-
通过计入本地地平线对各像元的影响完成阴影分析。将处于阴影之中的栅格像元的值指定为零。
-
若只想创建阴影区域的栅格,请使用条件函数、重分类或按属性提取工具将为零的山体阴影值与其他山体阴影值分离。山体阴影工具必须已启用模拟阴影选项。
-
如果输入栅格位于球面坐标系中(如十进制度球面坐标系),则生成的山体阴影可能看起来很独特。这是因为水平地面单位与高程 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
-
您可以通过 ArcGIS ArcScene 叠加输出栅格,从而创建山体阴影表面的动态三维视图。
若要对输入栅格进行重采样,需使用双线性技术。例如,当输出栅格与输入栅格的坐标系统、范围或像元大小不同时,可对输入栅格进行重采样。
语法
参数 | 说明 | 数据类型 |
in_raster |
输入表面栅格。 | Raster Layer |
azimuth (可选) |
光源的方位角。 方位角由 0 到 360 度之间的正度数表示,以北为基准方向按顺时针进行测量。 默认值为 315 度。 | Double |
altitude (可选) |
高于地平线的光源高度角。 高度角由正度数表示,0 度代表地平线,而 90 度代表头顶正上方。 默认值为 45 度。 | Double |
model_shadows (可选) |
要生成的地貌晕渲类型。
| 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 |
返回值
名称 | 说明 | 数据类型 |
out_raster |
输出山体阴影栅格。 山体阴影栅格的整数值范围为 0 到 255。 | Raster |
代码实例
在本例中将生成含有阴影的山体阴影栅格。设置特定方位角和高度角。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outHillShade = HillShade("elevation", 180, 75, "SHADOWS", 1)
outHillShade.save("C:/sapyexamples/output/outhillshd01")
在本例中将生成含有阴影的山体阴影栅格。设置特定方位角和高度角,并且 z 因子将使 z 单位从英尺转换为米。
# Name: HillShade_Ex_02.py
# Description: Computes hillshade values for a raster surface.
# 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"
azimuth = 180
altitude = 75
modelShadows = "SHADOWS"
zFactor = 0.348
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute HillShade
outHillShade = HillShade(inRaster, azimuth, altitude, modelShadows, zFactor)
# Save the output
outHillShade.save("C:/sapyexamples/output/outhillshd02")