地形转栅格 (Spatial Analyst)

需要 Spatial Analyst 许可。

需要 3D Analyst 许可。

描述

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

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

使用方法

  • 如果所有输入数据都存储在同一平面坐标系中且 Z 单位相同,则会获得最佳结果。您可以使用尚未投影的数据(纬度-经度),但是结果可能并不精确,尤其是高纬度地区的结果。

  • 如果在一个输出像元内落入多个输入点,地形转栅格将使用平均值进行插值(仅考虑落入的前 100 个点,余下的点将忽略)。如果算法遇到太多点,则可能会出现错误,表明点数据集中的点过多。可用的最大点数为 NRows * NCols,其中 NRows 表示输出栅格中的行数,而 NCols 则表示列数。

  • 如果输入要素数据类型为等值线,则算法将先根据等值线的曲率生成概化的表面形态。然后该算法会将等值线作为高程信息的源。等值线最适合大比例数据,因为此时等值线和拐角可准确地指示出河流和山脊。在较小比例下,对等值线的拐角点进行数字化并将其用作输入点要素类可能同样有效且消耗更少。

  • 输出像元大小可以通过数值进行定义,也可以从现有栅格数据集获取。如果没有将像元大小明确指定为参数值,则将从像元大小环境获取相应值(前提是已指定环境)。如果未指定参数像元大小和环境像元大小,但已设置捕捉栅格环境,则将使用捕捉栅格的像元大小。如果未指定任何内容,则像元大小会通过使用范围的宽度或高度中的较小值除以 250 来计算,其中范围位于在环境中指定的输出坐标系内。

  • 如果使用数值指定像元大小,则工具会直接将其用于输出栅格。

    如果使用栅格数据集指定像元大小,则该参数将显示栅格数据集的路径而不是像元大小的值。如果数据集的空间参考与输出空间参考相同,则栅格数据集的像元大小将直接用于分析。如果数据集的空间参考与输出空间参考不同,则将基于所选的像元大小投影方法进行投影。

  • 表示纵横交错的河流或使用弧段表示河流的两侧时可能并不会产生准确的结果。河流数据的优先级始终高于点或等值线数据,因此与表示河流下行的实际情况冲突的高程数据点将被忽略。使用河流数据是为插值添加地形信息的有效途径,进而保证了输出 DEM 的质量。

  • 对于支持 Null 值的数据格式,例如文件地理数据库要素类,在将 Null 值用作输入时,该值将被忽略。

  • 容差 1容差 2 设置的典型值为:

    • 对于比例为 1:100,000 的点数据,请分别使用 5.0 和 200.0。
    • 对于比例高达 1:500,000 的较不密集的点数据,请分别使用 10.0 和 400.0。
    • 对于等值线间距为 10 的等值线数据,请分别使用 5.0 和 100.0。

    容差 2 应至少比容差 1 大 6 倍。

  • 要使带有输入和参数的实验更简便,可使用地形转栅格对话框创建一个输出参数文件,此文件可在任何文本编辑器中进行修改,然后用作通过文件实现地形转栅格工具的输入。

  • 此工具是一个占用大量内存的应用程序,因此不能创建较大的输出栅格。需要创建较大的输出时,可使用 Margin 参数生成较小的输出栅格。有关此操作的详细信息,请参阅“地形转栅格工作原理”帮助的创建并镶嵌栅格部分。

  • 有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst

语法

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

Topo 类用于指定包含要插值到表面栅格中的 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,...])

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

PointElevationContourSink 要素输入类型均可指定包含 z 值的字段。但对于 BoundaryLakeCliffCoastExclusionStream 输入类型则不存在 Field 选项。

TopoInput
cell_size
(可选)

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

此参数可以通过数值进行定义,也可以从现有栅格数据集获取。如果未将像元大小明确指定为参数值,则将使用环境像元大小值(如果已指定);否则,将使用其他规则通过其他输出计算像元大小。有关详细信息,请参阅用法部分。

Analysis Cell Size
extent
(可选)

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

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

Extent 类的形式为:

  • 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
(可选)

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

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

Double
discrete_error_factor
(可选)

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

值必须大于零。正常的调整范围是 0.25 到 4,默认值为 1。值越小,数据的平滑处理就越少;而值越大,平滑处理也就越多。

Double
vertical_standard_error
(可选)

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

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

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

Double
tolerance_1
(可选)

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

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

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

Double
tolerance_2
(可选)

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

值必须大于零。如果数据类型是 等值线,则默认值为 100;如果数据类型是 ,则默认值为 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'])

inFeatures = ([inPointElevations, inContours, inLake, inBoundary, inSinks])

# Execute TopoToRaster
outTTR = TopoToRaster(inFeatures)

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

许可信息

  • Basic: 需要 Spatial Analyst 或 3D Analyst
  • Standard: 需要 Spatial Analyst 或 3D Analyst
  • Advanced: 需要 Spatial Analyst 或 3D Analyst

相关主题