地形转栅格 (空间分析)

许可等级:BasicStandardAdvanced

摘要

将点、线和面数据插值成符合真实地表的栅格表面。

了解有关地形转栅格工具工作原理的详细信息

用法

语法

TopoToRaster (in_topo_features, {cell_size}, {extent}, {Margin}, {minimum_z_value}, {maximum_z_value}, {enforce}, {data_type}, {maximum_iterations}, {roughness_penalty}, {discrete_error_factor}, {vertical_standard_error}, {tolerance_1}, {tolerance_2}, {out_stream_features}, {out_sink_features}, {out_diagnostic_file}, {out_parameter_file}, {profile_penalty}, {out_residual_feature}, {out_stream_cliff_error_feature}, {out_contour_error_feature})
参数说明数据类型
in_topo_features
topo_input

地形类用于指定包含要插值到表面栅格中的 z 值的输入要素。

共有九种数据类型可作为地形类的输入:TopoPointElevationTopoContourTopoStreamTopoSinkTopoBoundaryTopoLakeTopoCliffTopoExclusionTopoCoast

  • TopoPointElevation ([[inFeatures,{field}],...])

    表示表面高程的点要素类。

    field 用于存储点的高程。

  • TopoContour ([[inFeatures,{field}],...])

    表示高程等值线的线要素类。

    field 用于存储等值线的高程。

  • TopoStream ([inFeatures,...])

    河流位置的线要素类。所有弧线必须定向为指向下游。要素类中应该仅包含单条弧线组成的河流。

  • TopoSink ([[inFeatures,{field}],...])

    表示已知地形凹陷的点要素类。地形转栅格不会试图将任何明显识别为汇的点从分析中移除。

    所用 field 应该能够存储合法汇的高程。如果选择了 NONE,将仅使用汇的位置。

  • TopoBoundary ([inFeatures,...])

    边界是包含表示输出栅格外边界的单个面的要素类。输出栅格中,位于此边界以外的像元值被定义为 NoData。此选项可用于在创建最终输出栅格之前沿海岸线裁剪出水域。

  • TopoLake ([inFeatures,...])

    指定湖泊位置的面要素类。湖面范围内的所有输出像元值均将被指定为沿湖岸线像元的最小高程值。

  • TopoCliff ([inFeatures,...])

    悬崖的线要素类。必须对悬崖线要素进行定向以使线的左侧位于悬崖的低侧,线的右侧位于悬崖的高侧。

  • TopoExclusion ([inFeatures,...])

    其中的输入数据应被忽略的区域的面要素类。这些面允许从插值过程中移除高程数据。通常将其用于移除与堤壁和桥相关联的高程数据。这样就可以内插带有连续地形结构的基础山谷。

  • TopoCoast ([inFeatures,...])

    包含沿海地区轮廓的面要素类。位于这些面之外的最终输出栅格中的像元会被设置为小于用户所指定的最小高度限制的值。

PointElevation、Contour 和 Sink 要素输入类型均可指定包含 z 值的字段。但对于 Boundary、Lake、Cliff、Coast、Exclusion 或 Stream 输入类型则不存在 Field 选项。

TopoInput
cell_size
(可选)

要创建的输出栅格的像元大小。

如果明确设置该值,则它将是环境中的值,否则,它是输入空间参考中输入点要素范围的宽度或高度除以 250 之后得到的较小值。

Analysis Cell Size
extent
(可选)

范围类决定着输出栅格数据集的范围。

插值可能会超出 x 和 y 坐标范围,在此范围之外的像元将为 NoData。要在输出栅格边界上获得最佳插值结果,四边的 x 和 y 坐标界限应该比输入数据的范围至少小 10 个像元。

范围类的形式为:

  • Extent (XMin, YMin, XMax, YMax)

    其中:

    • XMin - 默认值为所有输入的最小 x 坐标值。
    • YMin - 默认值为所有输入的最小 y 坐标值。
    • XMax - 默认值为所有输入的最大 x 坐标值。
    • YMax - 默认值为所有输入的最大 y 坐标值。

默认范围是输入要素数据所有范围中的最大范围。

Extent
Margin
margin
(可选)

像元中在指定输出范围和边界外进行插值的距离。

该值必须大于或等于 0(零)。默认值为 20。

如果 ExtentTopoBoundary 要素数据集与输入数据的界限相同(默认值),则沿 DEM 边内插的值与相邻的 DEM 数据将无法很好的匹配。这是因为插值时仅使用了相当于栅格内一半点数的数据,这些点的四周被输入数据包围着。通过 Margin 选项可使输入数据超出这些界限从而应用于插值过程。

Long
minimum_z_value
(可选)

要用于插值的最小 z 值。

默认值比所有输入值中最小的值低 20%。

Double
maximum_z_value
(可选)

要用于插值的最大 z 值。

默认值比所有输入值中最大的值高 20%。

Double
enforce
(可选)

要应用的地形强化类型。

可对地形强化选项进行设置以便移除所有汇或洼地,从而创建符合真实地表的 DEM。如果输入要素数据中已明确识别出这些汇点,则这些洼地将不会被填充。

  • ENFORCE 该算法将尝试移除遇到的所有汇,无论是“真”汇还是“伪”汇。这是默认设置。
  • NO_ENFORCE 汇不会被填充。
  • ENFORCE_WITH_SINK 输入要素数据中已识别为汇的点表示已知的地形凹陷并且将不会被更改。输入要素数据中未识别出的所有汇均将视为伪汇,算法将尝试填充此汇。伪汇数量超过 8,000 个将导致工具无法使用。
String
data_type
(可选)

输入要素数据的主要高程数据类型。

  • CONTOUR 输入数据的主要类型为高程等值线。这是默认设置。
  • SPOT 输入的主要类型为点。

指定相关的选项可优化河流和山脊生成期间所用搜索方法。

String
maximum_iterations
(可选)

插值迭代的最大次数。

迭代次数必须大于零。通常,默认值 20 适合等值线数据也适合线数据。

值 30 所能清除汇的数量较少。在极少数情况下,设置成更高的值 (45–50) 可能适合于清除更多的汇或设置更多的山脊和河流。达到最大迭代次数后,各格网分辨率的迭代将停止。

Long
roughness_penalty
(可选)

作为粗糙度衡量指标的二阶导数平方积分。

粗糙度惩罚系数必须大于等于零。如果主要输入数据类型为 CONTOUR,则默认值为零。如果主要数据类型为 SPOT,则默认值为 0.5。通常不建议使用更大的值。

Double
discrete_error_factor
(可选)

离散误差系数用于在将输入数据转换为栅格时调整平滑量。

该值必须大于零。正常的调整范围是 0.5 到 2,默认值为 1。如果值较小,则数据的平滑处理也较少;而如果值较大,平滑处理也较多。

Double
vertical_standard_error
(可选)

输入数据 z 值的随机误差量。

该值必须大于等于零。默认值为零。

如果数据的显著随机(非系统)垂直误差的方差一致,则垂直标准误差可设置为较小的正值。这种情况下,请将垂直标准误差设置为这些误差的标准差。对于大多数高程数据集,垂直误差应该设置为零,但当通过河流线数据对点数据进行栅格化时,可能会将其设置为较小的正值以稳定收敛。

Double
tolerance_1
(可选)

此容差可反映出高程点相对于表面地形的精度和密度。

对于点数据集,请将容差设置为数据高度的标准误差。对于等值线数据集,请使用平均等值线间距的一半。

该值必须大于等于零。如果数据类型是 CONTOUR,则默认值为 2.5;如果数据类型是 SPOT,则默认值为零。

Double
tolerance_2
(可选)

此容差将通过极大的界限值防止产生地形间隙。

该值必须大于零。如果数据类型是 CONTOUR,则默认值为 100;如果数据类型是 SPOT,则默认值为 200。

Double
out_stream_features
(可选)

河流折线要素和山脊线要素的输出线要素类。

线要素创建于插值过程开始之时。它提供了插值表面的大致形态。此值可用于通过比较已知河流和山脊数据验证地形和形态的正确性。

拆线要素按如下方式编码:

  1. 不在悬崖上的输入河流线。
  2. 在悬崖上的输入河流线(瀑布)。
  3. 清除伪汇的地形强化。
  4. 从等值线拐角确定的河流线。
  5. 从等值线拐角确定的山脊线。
  6. 未使用代码。
  7. 数据河流线边条件。
  8. 未使用代码。
  9. 表示大型高程数据间隙的线。
Feature Class
out_sink_features
(可选)

其余汇点要素的输出点要素类。

这些属于未在汇输入要素数据中指定且在地形强化期间未被清除的汇。调整容差值(tolerance_1tolerance_2)可减少其余汇的数量。其余汇通常用于指示输入数据中地形加强算法无法解决的误差。这是检测微小高程误差的有效方法。

Feature Class
out_diagnostic_file
(可选)

此输出诊断文件列出了使用的所有输入和参数以及各分辨率和迭代中清除的汇数。

File
out_parameter_file
(可选)

此输出参数文件列出了使用的所有输入和参数,这些输入和参数可与依据文件实现地形转栅格结合使用以便再次运行插值。

File
profile_penalty
(可选)

剖面曲率粗糙度惩罚系数是一个可用于部分替换总曲率的局部自适应惩罚系数。

使用高质量的等值线数据会获得良好的成果,但是对于质量差的数据,会导致收敛不稳定。对于无剖面曲率,设置为 0.0(默认值);对于中等剖面曲率,设置为 0.5;对于最大剖面曲率,设置为 0.8。不建议并且也不应使用大于 0.8 的值。

Double
out_residual_feature
(可选)

由局部离散误差进行衡量的所有大高程残差的输出点要素类。

应对所有大于 10 的比例缩放残差进行检查,查看输入高程和河流数据是否存在错误。大比例缩放残差表示输入高程数据和河流线数据之间存在冲突。这可能也与不良的自动地形强化有关。这些冲突可以通过在首次检查和纠正现有输入数据中的错误后提供附加的流线和/或点高程数据来进行修复。未大比例缩放的残差通常表示存在输入高程误差。

Feature Class
out_stream_cliff_error_feature
(可选)

可能出现河流和悬崖错误的位置的输出点要素类。

可从点要素类来识别其河流有闭合环、支流和悬崖上河流的位置。还可识别相邻像元与悬崖高低边不一致的的悬崖。这可以理想地指出方向错误的悬崖。

点按如下方式编码:

  1. 数据河流线网络中的真回路。
  2. 以外栅格编码的河流网络中的回路。
  3. 通过连接湖泊的河流网络中的回路。
  4. 支流点。
  5. 悬崖上的河流(瀑布)。
  6. 表示从湖泊流出多条河流的点。
  7. 未使用代码。
  8. 悬崖旁高度与悬崖方向不一致的点。
  9. 未使用代码。
  10. 已移除圆形支流。
  11. 无流入河流的支流。
  12. 不同于出现数据河流线支流位置的输出像元中的栅格化支流。
  13. 处理边条件时出错 - 非常复杂的河流线数据的指示符。
Feature Class
out_contour_error_feature
(可选)

可能发生的与输入等值线数据相关的错误的输出点要素类。

高度偏差达到输出栅格所示等值线值标准偏差五倍以上的等值线会报告至此要素类。与不同高程值的等值线相连接的等值线在此要素类中会使用代码 1 进行标记,这是等值线标注错误的明确标志。

Feature Class

返回值

名称说明数据类型
out_surface_raster

输出插值后的表面栅格。

Raster

代码实例

TopoToRaster 示例 1(Python 窗口)

该示例根据点、线和面数据创建符合真实地表的 TIFF 表面栅格。

import arcpy
from arcpy import env  
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outTTR = TopoToRaster([TopoPointElevation([['spots', 'spot_meter']]), 
                       TopoContour([['contours', 'spot_meter']]),
                       TopoCliff(['cliff'])], 60, 
                       "#", "#", "#", "#", "NO_ENFORCE")
outTTR.save("C:/sapyexamples/output/ttrout.tif")
TopoToRaster 示例 2(独立脚本)

该示例根据点、线和面数据创建符合真实地表的 Grid 表面栅格。

# Name: TopoToRaster_Ex_02.py
# Description: Interpolates a hydrologically correct surface 
#    from point, line, and polygon data.
# 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
inPointElevations = TopoPointElevation([['spots.shp', 'spot_meter'], 
                                        ['spots2.shp', 'elev']])
inBoundary = TopoBoundary(['boundary.shp'])
inContours = TopoContour([['contours.shp', 'spot_meter']])
inLake = TopoLake(['lakes.shp'])
inSinks = TopoSink([['sink1.shp', 'elevation'], ['sink2.shp', 'none']])
inStream = TopoStream(['streams.shp'])
inCliff = TopoCliff(['cliff.shp'])
inCoast = TopoCoast(['coast.shp'])
inExclusion = TopoExclusion(['ignore.shp'])
                    
inFeatures = ([inPointElevations, inContours, inLake, inStream, inBoundary, inSinks, inCliff, inCoast, inExclusion])

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Execute TopoToRaster
outTTR = TopoToRaster(inFeatures)

# Save the output 
outTTR.save("C:/sapyexamples/output/ttrout03")

环境

相关主题

许可信息

ArcGIS for Desktop Basic:需要 Spatial Analyst 或 3D Analyst
ArcGIS for Desktop Standard:需要 Spatial Analyst 或 3D Analyst
ArcGIS for Desktop Advanced:需要 Spatial Analyst 或 3D Analyst
9/15/2013