地形转栅格 (空间分析)
用法
-
如果所有输入数据都存储在同一平面坐标系中且 Z 单位相同,则会获得最佳结果。您可以使用尚未投影的数据(纬度-经度),但是结果可能并不精确,尤其是高纬度地区的结果。
-
地形转栅格仅使用四个输入数据点为每个输出像元进行插值。所有其他点都将被忽略。如果算法遇到太多点,则可能会出现错误,表明点数据集中的点过多。可用的最大点数为 NRows * NCols,其中 NRows 表示输出栅格中的行数,而 NCols 则表示列数。
-
如果输入要素类型为 CONTOUR,则算法将先根据等值线的曲率生成概化的表面形态。然后该算法会将等值线作为高程信息的源。等值线最适合大比例数据,因为此时等值线和拐角可准确地指示出河流和山脊。在较小比例下,对等值线的拐角点进行数字化并将其用作输入点要素类可能同样有效且开销更低。
-
表示纵横交错的河流或仅通过弧线表示河流的两侧可能并不会产生准确的结果。河流数据的优先级始终高于点或等值线数据,因此与表示河流下行的实际情况冲突的高程数据点将被忽略。使用河流数据是为插值添加地形信息的有效途径,进而保证了输出 DEM 的质量。
-
容差 1 和容差 2 设置的典型值为:
- 对于比例为 1:100,000 的点数据,请分别使用 5.0 和 200.0。
- 对于比例高达 1:500,000 的较不密集的点数据,请分别使用 10.0 和 400.0。
- 对于等值线间距为 10 的等值线数据,请分别使用 5.0 和 100.0。
-
要使带有输入和参数的实验更简便,可使用地形转栅格对话框创建一个输出参数文件,此文件可在任何文本编辑器中进行修改然后用作依据文件实现地形转栅格工具的输入。
“地形转栅格”是一个占用大量内存的应用程序,因此不能创建较大的输出栅格。需要创建较大的输出时,可使用 MARGIN 参数。
语法
参数 | 说明 | 数据类型 |
in_topo_features topo_input |
地形类用于指定包含要插值到表面栅格中的 z 值的输入要素。 共有六种数据类型可作为地形类的输入:TopoPointElevation、TopoContour、TopoStream、TopoSink、TopoBoundary、TopoLake。
PointElevation、Contour 和 Sink 要素输入类型均可指定包含 z 值的字段。但对于 Boundary、Lake 或 Stream 输入类型则不存在 Field 选项。 | TopoInput |
cell_size (可选) |
要创建的输出栅格的像元大小。 如果明确设置该值,则它将是环境中的值,否则,它是输入空间参考中输入点要素范围的宽度或高度除以 250 之后得到的较小值。 | Analysis Cell Size |
extent (可选) |
范围类决定着输出栅格数据集的范围。 插值可能会超出 x 和 y 坐标范围,在此范围之外的像元将为 NoData。要在输出栅格边界上获得最佳插值结果,四边的 x 和 y 坐标界限应该比输入数据的范围至少小 10 个像元。 范围类的形式为:
默认范围是输入要素数据所有范围中的最小范围。 | Extent |
Margin margin (可选) |
像元中在指定输出范围和边界外进行插值的距离。 该值必须大于或等于 0(零)。默认值为 20。 如果 Extent 和 TopoBoundary 要素数据集与输入数据的界限相同(默认值),则沿 DEM 边内插的值与相邻的 DEM 数据将无法很好的匹配。这是因为插值时仅使用了相当于栅格内一半点数的数据,这些点的四周被输入数据包围着。通过 Margin 选项可使输入数据超出这些界限从而应用于插值过程。 | Long |
minimum_z_value (可选) |
要用于插值的最小 z 值。 默认值比所有输入值中最小的值低 20%。 | Double |
maximum_z_value (可选) |
要用于插值的最大 z 值。 默认值比所有输入值中最大的值高 20%。 | Double |
enforce (可选) |
要应用的地形强化类型。 可对地形强化选项进行设置以便移除所有汇或洼地,从而创建符合真实地表的 DEM。如果输入要素数据中已明确识别出这些汇点,则这些洼地将不会被填充。
| String |
data_type (可选) |
输入要素数据的主要高程数据类型。
指定相关的选项可优化河流和山脊生成期间所用搜索方法。 | String |
maximum_iterations (可选) |
插值迭代的最大次数。 迭代次数必须大于零。通常,默认值 40 适合等值线数据也适合线数据。 值 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 (可选) |
河流折线要素和山脊线要素的输出线要素类。 线要素创建于插值过程开始之时。它提供了插值表面的大致形态。此值可用于通过比较已知河流和山脊数据验证地形和形态的正确性。 | Feature Class |
out_sink_features (可选) |
其余汇点要素的输出点要素类。 这些属于未在汇输入要素数据中指定且在地形强化期间未被清除的汇。调整容差值(tolerance_1 和 tolerance_2)可减少其余汇的数量。其余汇通常用于指示输入数据中地形加强算法无法解决的误差。这是检测微小高程误差的有效方法。 | Feature Class |
out_diagnostic_file (可选) |
此输出诊断文件列出了使用的所有输入和参数以及各分辨率和迭代中清除的汇数。 | File |
out_parameter_file (可选) |
此输出参数文件列出了使用的所有输入和参数,这些输入和参数可与依据文件实现地形转栅格结合使用以便再次运行插值。 | File |
返回值
名称 | 说明 | 数据类型 |
out_surface_raster |
输出插值后的表面栅格。 | Raster |
代码示例
该示例根据点、线和面数据创建符合真实地表的 TIFF 表面栅格。
import arcpy from arcpy import env from arcpy.sa import * env.workspace = "C:/sapyexamples/data" outTTR = TopoToRaster([TopoPointElevation([['spots.shp', 'spot_meter']]), TopoContour([['contours.shp', 'spot_meter']])], 60, "#", "#", "#", "#", "NO_ENFORCE") outTTR.save("C:/sapyexamples/output/ttrout.tif")
该示例根据点、线和面数据创建符合真实地表的 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]) # 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")