IDW 3D (地统计分析)

摘要

将使用反距离加权 (IDW) 来插值 3D 点的值,并创建预测值的体素图层和源文件 (.nc)。

插图

IDW 3D 工具图示

使用情况

  • 与同样执行 3D 插值的 3D 经验贝叶斯克里金法 (EBK 3D) 工具相比,IDW 3D 是一种更加快速、更加简单的工具,其中不会对数据值的分布或趋势做出任何假设。 IDW 3D 是一种精确的插值方法,这意味着 3D 预测表面将精确地通过输入点的测量值,由此使其成为适用于不规则 3D 点的一种非常有用的可视化工具。

    IDW 3D 产生的预测通常不如 EBK 3D 精确,并且它对聚类输入点特别敏感。 IDW 3D 无法生成预测值的标准误差,因此不支持预测不确定性的估计。

  • 该工具将使用预测位置 3D 搜索邻域内输入点值的加权平均值来预测 3D 中每个新位置处的值。 每个相邻点的权重是到预测位置的距离的倒数(除以距离)的幂(指数)。 将对权重进行归一化,在加权平均值中的和为 1。

    了解有关 IDW 的详细信息

    • IDW 3D 预测公式,其中 k 为相邻要素的数量,ωi 为相邻要素 i 的权重,zi 为相邻要素 i 的测量值。

    • IDW 3D 权重公式,其中 di 为相邻要素 i 的预测位置的 3D 欧氏距离,p 为幂值。

  • 如果该工具在本地场景中运行,该场景与输入要素具有相同的水平和垂直坐标系,则会将体素图层添加至场景,以便以交互方式探索结果。 您还可以使用创建多维体素图层工具或者添加多维体素图层对话框将输出 netCDF 文件添加为体素图层。

    可以使用复制栅格工具将输出 netCDF 文件转换为多维栅格。 您也可以分别使用创建 NetCDF 要素图层工具或创建 NetCDF 栅格图层工具,将其作为要素或栅格图层添加至地图。

  • 基于留一法交叉验证的汇总统计数据将显示为地理处理消息,以评估预测的准确性和可靠性。 显示了以下汇总统计数据:

    • 计数 - 具有交叉验证结果的要素数量。 当某些要素具有空值、具有重合位置,或者无法定位相邻要素时,该值可能与输入要素的数量不同。
    • 平均误差 - 交叉验证误差的平均值。 此统计数据用于衡量模型偏差,应该尽可能接近于零。 正值表示过度预测的趋势(预测值大于测量值),负值表示预测不足的趋势。
    • 均方根误差 - 各个交叉验证误差的平方平均数的平方根。 此统计数据用于衡量预测准确性,并且应该尽可能的小。 该值用于估计预测值和测量值之间的平均差值。 例如,对于以摄氏度为单位的温度插值,均方根误差值为 1.5 表示:平均而言,预测预计与真实值的偏差约为 1.5 度。

    了解有关交叉验证的详细信息

  • 输入要素必须是具有存储在 Shape.Z 几何属性中的高程的 3D 点。 可以使用依据属性实现要素转 3D 工具将具有高程字段的 2D 点要素转换为 3D 点要素。

    建议输入要素具有可准确定义其 z 坐标的垂直坐标系。 您可以使用定义投影工具将垂直坐标系分配给这些点。

  • 可以使用输出交叉验证要素类参数来调查每个输入点的交叉验证误差。 测量值和交叉验证预测将作为字段存储在要素类上。

    要素类将包含两个散点图,用于调查交叉验证结果的趋势:

    • 交叉验证:预测值与测量值 - 显示交叉验证预测值与测量值。 如果预测值近似等于测量值(指示插值结果精确),则散点图中的点应形成一条斜率等于 1 的线。
    • 交叉验证:测量值与误差 - 显示测量值与交叉验证误差。 如果误差与测量值无关,则散点图中的点将不会显示任何模式或趋势,并且趋势线将是平坦的(斜率大约等于 0)。 具有负斜率(下降)的趋势线指示插值模型中的平滑效应,这意味着该模型倾向于低估大值并高估小值。

    了解有关解释交叉验证图表的详细信息

  • 输入要素以及最小和最大高程裁剪栅格必须位于投影坐标系中。 如果点或栅格具有带纬度和经度坐标的地理坐标系,则必须使用投影投影栅格工具将它们投影到投影坐标系。

  • 在布置表示体素的点的 3D 网格时,将在输出范围(默认情况下,为输入要素的范围)的最小 x 坐标、最小 y 坐标和最小 z 坐标处创建第一个点。 其余点将通过借助输出范围的维度遍历 X 间距Y 间距高程间距参数距离进行创建。 如果任何间距都没有均匀划分输出范围的相应维度,则将在输出范围之外创建一行或一列点。 例如,如果 x 的输出范围指定为 0 到 10,并且 X 间距参数指定为 3,则输出在 x 范围内将有五行:0、3、6、9 和 12。 同样,如果间距没有均匀地划分 y 或 z 范围,则会另外创建一行或一列点。

  • 输入研究区域面最小高程裁剪栅格最大高程裁剪栅格参数可用于限制特定研究区域内和两个高程表面之间的分析。 这些边界之外的任何体素将没有任何值并且不会显示。 例如,如果这些点位于海洋保护区内,则可以创建一个体素图层,该图层仅显示在保护区(研究区域)的面内、海底上方(最小高程栅格)和温跃层下方(最大高程栅格)。

    使用高程表面作为最小或最大高程栅格包含多种注意事项。 影像服务、web 高程图层和 web 影像图层的性能最慢,并且大量查询可能会出错。 在磁盘上保存为本地文件的栅格的性能最高,因此在大空间范围内创建高分辨率体素图层时推荐使用此类栅格。

  • 如果输入要素可选,则在工具运行时将根据所选要素的范围重新计算 X 间距Y 间距高程间距参数的值。 当工具运行完成时,重新计算的值将打印为警告消息。 如果手动为间距参数提供值(或提供输出范围),则不会重新计算该值。

  • 如果提供输入研究区域面,则研究区域的范围将用作默认输出范围,并且将基于此范围重新计算 X 间距Y 间距参数值。 由此可确保输出将默认填充整个研究区域。

参数

标注说明数据类型
输入要素

包含将进行插值的字段的 3D 点要素。 这些点必须位于投影坐标系中。

Feature Layer
值字段

输入要素中的字段,包含将进行插值的测量值。

Field
输出 netCDF 文件

输出 netCDF 文件,将包含 3D 格网中的预测值。 此文件可用作体素图层的数据源。

File
(可选)

当计算预测时,将用于对相邻要素的值进行加权的幂值。 幂值越大,则对较近点的影响越大。 该值必须介于 1 和 100 之间。 默认值为 2。

Double
高程膨胀因子
(可选)

在查找相邻要素和计算距离之前,乘以输入要素的 z 坐标的常量值。 对于大部分 3D 数据,点值的垂直变化快于其水平变化,并且该因子将对点的位置进行拉伸,以使一个垂直距离单位等于一个水平距离单位。 返回插值结果之前,点的位置将移回其原始位置。 如果未提供任何值,则将在工具运行时估算一个值,并将其显示为地理处理消息。 将通过最小化均方根交叉验证误差来确定估算值。 值必须位于 1 和 1000 之间。

Double
输出交叉验证要素类
(可选)

每个输入点的交叉验证统计数据的要素类。 要素类将包含两个散点图。

Feature Class
X 间距
(可选)

x 维度中每个格网化点之间的间距。 默认值沿输出 x 范围创建 40 个点。

Linear Unit
Y 间距
(可选)

y 维度中每个格网化点之间的间距。 默认值沿输出 y 范围创建 40 个点。

Linear Unit
高程间距
(可选)

高程 (z) 维度中每个格网化点之间的间距。 默认值沿输出 z 范围创建 40 个点。

Linear Unit
输入研究区域面
(可选)

表示研究区域的面要素。 仅研究区域内的点保存在输出 netCDF 文件中。 如果可视化为体素图层,则场景中将仅显示研究区域内的体素。 将仅使用点的 x 和 y 坐标来确定点位于研究区域内部还是外部。

Feature Layer
最小高程裁剪栅格
(可选)

用于裁剪体素图层底部的高程栅格。 仅为此高程栅格上方的体素分配预测。 例如,如果使用地面高程栅格,则将仅显示在地面上方的体素图层。 该工具还可用于基岩表面或页岩沉积物的底部。

栅格必须在投影坐标系中,并且高程值的单位必须与栅格的垂直单位相同。

Raster Layer
最大高程裁剪栅格
(可选)

用于裁剪体素图层顶部的高程栅格。 仅为此高程栅格下方的体素分配预测。 例如,如果使用地面高程栅格,则将仅显示在地面下方的体素图层。 该工具还可用于将体素裁剪到受限空域的顶部。

栅格必须在投影坐标系中,并且高程值的单位必须与栅格的垂直单位相同。

Raster Layer
搜索邻域
(可选)

指定将用于预测新位置值的相邻要素的数量和方向。

Standard3D

  • 最大相邻要素数 - 将用于估计未知位置值的最大相邻要素数/扇区。
  • 最小相邻要素数 - 将用于估计未知位置值的最小相邻要素数/扇区。
  • 扇区类型 - 3D 邻域的几何。 扇区可用于确保在预测位置周围的每个方向上使用相邻要素。 所有扇区类型均由正多面体形成。
    • 1 扇区(球体)- 将使用来自所有方向的最近相邻要素。
    • 4 扇区(四面体)- 将空间划分为 4 个区域,并且在每个区域中都将使用相邻要素。
    • 6 扇区(立方体)- 将空间划分为 6 个区域,并且在每个区域中都将使用相邻要素。
    • 8 扇区(八面体)- 将空间划分为 8 个区域,并且在每个区域中都将使用相邻要素。
    • 12 扇区(十二面体)- 将空间划分为 12 个区域,并且在每个区域中都将使用相邻要素。
    • 20 扇区(二十面体)- 将空间划分为 20 个区域,并且在每个区域中都将使用相邻要素。
  • 半径 - 搜索邻域的半径长度。 如果未提供任何值,则将在工具运行时估算一个值,并将该估算值显示为地理处理消息。
Geostatistical Search Neighborhood

派生输出

标注说明数据类型
计数

使用的样本总数。

Long
平均误差

测量值与预测值之间的平均差值。

Double
均方根

指示模型预测结果与测量值的接近程度。

Double
输出体素图层

预测值的体素图层。

Voxel Layer

arcpy.ga.IDW3D(in_features, value_field, out_netcdf_file, {power}, {elev_inflation_factor}, {out_cv_features}, {x_spacing}, {y_spacing}, {elevation_spacing}, {in_study_area}, {min_elev_raster}, {max_elev_raster}, {search_neighborhood})
名称说明数据类型
in_features

包含将进行插值的字段的 3D 点要素。 这些点必须位于投影坐标系中。

Feature Layer
value_field

输入要素中的字段,包含将进行插值的测量值。

Field
out_netcdf_file

输出 netCDF 文件,将包含 3D 格网中的预测值。 此文件可用作体素图层的数据源。

File
power
(可选)

当计算预测时,将用于对相邻要素的值进行加权的幂值。 幂值越大,则对较近点的影响越大。 该值必须介于 1 和 100 之间。 默认值为 2。

Double
elev_inflation_factor
(可选)

在查找相邻要素和计算距离之前,乘以输入要素的 z 坐标的常量值。 对于大部分 3D 数据,点值的垂直变化快于其水平变化,并且该因子将对点的位置进行拉伸,以使一个垂直距离单位等于一个水平距离单位。 返回插值结果之前,点的位置将移回其原始位置。 如果未提供任何值,则将在工具运行时估算一个值,并将其显示为地理处理消息。 将通过最小化均方根交叉验证误差来确定估算值。 值必须位于 1 和 1000 之间。

Double
out_cv_features
(可选)

每个输入点的交叉验证统计数据的要素类。 要素类将包含两个散点图。

Feature Class
x_spacing
(可选)

x 维度中每个格网化点之间的间距。 默认值沿输出 x 范围创建 40 个点。

Linear Unit
y_spacing
(可选)

y 维度中每个格网化点之间的间距。 默认值沿输出 y 范围创建 40 个点。

Linear Unit
elevation_spacing
(可选)

高程 (z) 维度中每个格网化点之间的间距。 默认值沿输出 z 范围创建 40 个点。

Linear Unit
in_study_area
(可选)

表示研究区域的面要素。 仅研究区域内的点保存在输出 netCDF 文件中。 如果可视化为体素图层,则场景中将仅显示研究区域内的体素。 将仅使用点的 x 和 y 坐标来确定点位于研究区域内部还是外部。

Feature Layer
min_elev_raster
(可选)

用于裁剪体素图层底部的高程栅格。 仅为此高程栅格上方的体素分配预测。 例如,如果使用地面高程栅格,则将仅显示在地面上方的体素图层。 该工具还可用于基岩表面或页岩沉积物的底部。

栅格必须在投影坐标系中,并且高程值的单位必须与栅格的垂直单位相同。

Raster Layer
max_elev_raster
(可选)

用于裁剪体素图层顶部的高程栅格。 仅为此高程栅格下方的体素分配预测。 例如,如果使用地面高程栅格,则将仅显示在地面下方的体素图层。 该工具还可用于将体素裁剪到受限空域的顶部。

栅格必须在投影坐标系中,并且高程值的单位必须与栅格的垂直单位相同。

Raster Layer
search_neighborhood
(可选)

可以使用 SearchNeighborhoodStandard3D 类指定相邻要素的数量和方向。

Standard3D

  • radius - 搜索邻域的半径长度。 如果未提供任何值,则将在工具运行时估算一个值,并将该估算值显示为地理处理消息。
  • nbrMax - 用于估计未知位置值的最大相邻要素数/扇区。
  • nbrMin - 用于估计未知位置值的最小相邻要素数/扇区。
  • sectorType - 3D 邻域的几何。 扇区可用于确保在预测位置周围的不同方向上使用相邻要素。 所有扇区类型均由正多面体形成。
    • ONE_SECTOR - 将使用来自所有方向的最近相邻要素。
    • FOUR_SECTORS - 将空间划分为 4 个区域,并且在每个区域中都将使用相邻要素。
    • SIX_SECTORS - 将空间划分为 6 个区域,并且在每个区域中都将使用相邻要素。
    • EIGHT_SECTORS - 将空间划分为 8 个区域,并且在每个区域中都将使用相邻要素。
    • TWELVE_SECTORS - 将空间划分为 12 个区域,并且在每个区域中都将使用相邻要素。
    • TWENTY_SECTORS - 将空间划分为 20 个区域,并且在每个区域中都将使用相邻要素。
Geostatistical Search Neighborhood

派生输出

名称说明数据类型
count

使用的样本总数。

Long
mean_error

测量值与预测值之间的平均差值。

Double
root_mean_square

指示模型预测结果与测量值的接近程度。

Double
out_voxel_layer

预测值的体素图层。

Voxel Layer

代码示例

IDW3D 示例 1(Python 窗口)

以下 Python 脚本演示了如何使用 IDW3D 函数。

# Interpolate 3d oxygen measurements using IDW3D

arcpy.ga.IDW3D("OxygenPoints3D", "OxygenValue","outputNCDF.nc", "2",
         "", "outputCV.fc", "50 Meters", "50 Meters", "5 Meters",
         "MyStudyArea", "MinElevationRaster", "MaxElevationRaster",
         "NBRTYPE=Standard3D RADIUS=nan NBR_MAX=2 NBR_MIN=1 SECTOR_TYPE=TWELVE_SECTORS")
IDW3D 示例 2(独立脚本)

以下 Python 脚本演示了如何使用 IDW3D 函数。

# Name: IDW3D_Example_02.py
# Description: Creates a voxel layer source file from interpolated 3D points.
# Requirements: Geostatistical Analyst Extension
# Author: Esri



# Import system modules
import arcpy

# Allow overwriting output
arcpy.env.overwriteOutput = True

# Define 3D input points and value field to be interpolated
in3DPoints = "C:/gapydata/inputs.gdb/myOxygenPoints3D"
valueField = "OxygenValue"
outNetCDF = "C:/gapydata/outputs/OxygenMeasurementsVoxel.nc"
outCVFeatureClass = "C:/gapydata/outputs/outputCrossValidationErr.shp"

# Define power of IDW and elevation inflation factor
powerValue = "2"
elevInflation = ""

# Define voxel dimensions
xSpacing = "50 Meters"
ySpacing = "50 Meters"
elevSpacing = "5 Meters"


# Define study area, minimum clipping raster layer, and maximum clipping elevation layer
studyArea = "C:/gapydata/inputs.gdb/StudyAreaPolygon"
minElevRaster = "C:/gapydata/inputs.gdb/MinElevationClippingRaster"
maxElevRaster = "C:/gapydata/inputs.gdb/MaxElevationClippingRaster"

# Define the neighborhood
radius = ""
maxNeighbors = 2
minNeighbors = 1
sectorType = "TWELVE_SECTORS"
searchNeighborhood = arcpy.SearchNeighborhoodStandard3D(radius, maxNeighbors,
                     minNeighbors, sectorType)



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

# Execute Nearest Neighbor 3D
arcpy.ga.IDW3D(in3DPoints, valueField,outNetCDF,
                           powerValue, elevInflation, outCVFeatureClass,
                           xSpacing, ySpacing, elevSpacing,
                           studyArea, minElevRaster,
                           maxElevRaster, searchNeighborhood)

# Print messages
print(arcpy.GetMessages())

许可信息

  • Basic: 需要 Geostatistical Analyst
  • Standard: 需要 Geostatistical Analyst
  • Advanced: 需要 Geostatistical Analyst

相关主题