描述
计算表面和参考平面之间区域的面积和体积。
插图
使用
当表面 Z 值不使用 XY 单位而使用其他测量单位表示时,使用 Z 因子可确保体积计算的准确性。使用 Z 因子不会修改原始数据。工具将自动在定义 XY 和 Z 坐标系时确定适用的 Z 因子。
输出文本文件将存储表面的完整路径、用于生成结果的参数以及计算得出的面积和体积测量值。如果在工具的多次运行中指定了相同的输出文件,则会维护预先存在的记录并将结果追加至表。
数据集 平面高度 参考 Z 因子 2D 面积 3D 面积 体积 C:\data\tin
100.00
上方
1
15984467.82
16354331.40
1886012931.05
C:\data\raster.tif
250.5
下方
3.28084
0
0
0
C:\data.gdb\fd\terrain
1250
上方
0.3048
1854238.36
1970550.88
1099221466.89
如果需要计算表面面积和体积的区域是由非矩形范围定义的,请考虑创建用于划定感兴趣区边界的面,然后使用面体积工具确定由该面定义的平面与给定表面之间区域的计算。
将使用每个像元中心点的范围评估栅格表面,不使用整个像元区域的范围。相对于为栅格显示的数据区域,生成的分析会将栅格的数据区域减少半个像元。
语法
SurfaceVolume(in_surface, {out_text_file}, {reference_plane}, {base_z}, {z_factor}, {pyramid_level_resolution})
参数 | 说明 | 数据类型 |
in_surface | 待处理的栅格、TIN 或 terrain 表面。 | Mosaic Layer; Raster Layer; Terrain Layer; TIN Layer |
out_text_file (可选) | 包含面积和体积计算的以逗号分隔的 ASCII 文本文件。如果该文件已经存在,新结果将会追加至该文件。 | File |
reference_plane (可选) | 要为之计算结果的参考平面的方向。
| String |
base_z (可选) | 将用于计算面积和体积的平面的 Z 值。 | Double |
z_factor (可选) | Z 值将乘上的系数。此值通常用于转换 Z 线性单位来匹配 XY 线性单位。默认值为 1,此时高程值保持不变。如果输入表面的空间参考具有已指定线性单位的 Z 基准,则将禁用此参数。 | Double |
pyramid_level_resolution (可选) | 此工具将使用 terrain 金字塔等级的 z 容差或窗口大小分辨率。默认值为 0(z 容差),或全分辨率(窗口大小)。 | Double |
代码示例
表面体积 (SurfaceVolume) 示例 1(Python 窗口)
下面的示例演示了如何在 Python 窗口中使用此工具。
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.SurfaceVolume_3d("sample.gdb/featuredataset/terrain", "surf_vol.txt",
"ABOVE", 300, 1, 5)
表面体积 (SurfaceVolume) 示例 2(独立脚本)
下面的示例演示了如何在独立 Python 脚本中使用此工具。
'''****************************************************************************
Name: Surface Volume Example
Description: This script demonstrates how to use the
Surface Volume tool.
****************************************************************************'''
# Import system modules
import arcpy
from arcpy import env
import exceptions, sys, traceback
try:
# Obtain a license for the ArcGIS 3D Analyst extension
arcpy.CheckOutExtension("3D")
# Set environment settings
env.workspace = "C:/data"
# Set Local Variables
inSurface = "elevation_tin"
#Execute SurfaceVolume
result = arcpy.SurfaceVolume_3d(inSurface, "", "ABOVE", "300", "1", "5")
print result.getMessages()
except arcpy.ExecuteError:
print arcpy.GetMessages()
except:
# Get the traceback object
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
# Concatenate error information into message string
pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\
.format(tbinfo, str(sys.exc_info()[1]))
msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2))
# Return python error messages for script tool or Python Window
arcpy.AddError(pymsg)
arcpy.AddError(msgs)
环境
许可信息
- Basic: 需要 3D Analyst
- Standard: 需要 3D Analyst
- Advanced: 需要 3D Analyst