3D 最近邻域 (地统计分析)

需要 Geostatistical Analyst 许可。

摘要

通过为每个体素分配 3D 中最近邻域的类别,从分类 3D 点创建体素图层源文件 (netCDF)。

了解有关体素图层的详细信息

插图

3D 最近邻域工具插图
体素图层显示最近 3D 点的土壤和岩石类别。

使用情况

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

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

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

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

  • 如果在类别字段参数中指定了多个字段,则输出 netCDF 文件将为每个字段包含一个单独的变量。 每个变量都将与类别字段同名。 将体素图层添加到场景时,可以选择要在场景中显示的变量。

    例如,如果提供两个字段:土壤类别字段(页岩、沙子、粘土等)和土壤颜色字段,则输出 netCDF 文件中的每个体素都将包含最近相邻要素的土壤类别和土壤颜色。

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

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

  • 每个类别的体素数和百分比将作为地理处理消息返回。 具有空值的体素(例如输入研究区域面之外的体素)将不包含在计数或百分比中。 如果提供了多个类别字段,将为每个字段返回单独的消息。

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

  • 对于每个类别字段,每个唯一值都将作为整数保存在输出 netCDF 文件中。 在对唯一值进行排序(升序)后,为第一个类别分配整数 0;下一个类别分配整数 1;以此类推。 当作为离散体素图层添加到场景时,唯一值符号系统将类别字段的原始值作为标签应用于整数。

    当类别字段的值为整数时,表示 netCDF 文件中类别的整数通常与类别字段中的原始整数不同。 体素图层的符号系统标签可用于确定原始整数类别。

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

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

  • 如果输入要素包含具有不同类别字段值的重合点(具有相同 x、y 和 z 坐标的点),则将在该位置使用第一个字母数字类别。

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

参数

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

输入点表示 3D 中具有已知类别的位置。 这些点必须在投影坐标系中,并且必须至少有三个点。

Feature Layer
类别字段

输入要素的字段包含每个点的类别。 对于每个字段,该字段的唯一值表示该字段的类别。 每个字段必须是文本型、短整型或长整型。

例如,如果提供两个字段:土壤类别字段(页岩、沙子、粘土等)和土壤颜色字段(黄色、棕色、白色等)。 则输出 netCDF 文件中的每个体素会将最近的土壤类别和土壤颜色存储为单独的变量。

Field
输出 netCDF 文件

包含 3D 网格类别的输出 netCDF 文件。 3D 网格中的每个点都分配有最近输入点的类别。 此文件可用作体素图层的数据源。

File
X 间距
(可选)

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

Linear Unit
Y 间距
(可选)

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

Linear Unit
高程间距
(可选)

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

Linear Unit
高程膨胀因子
(可选)

在查找最近相邻要素之前,使用常量值乘以输入点的高程(z 坐标)。 值大于 1 表示水平搜索比垂直搜索更远的范围,以查找最近的相邻要素。 例如,值为 10 表示每个体素将水平搜索比垂直搜索远 10 倍的范围以找到最近的相邻要素。 默认值为 1,表示不调整高程。 值必须位于 1 和 1000 之间。

高程膨胀仅用于查找最近的相邻要素,并且在创建输出 netCDF 文件之前将所有高程返回到原始比例。 当输入点的类别在水平岩层上趋于相似时,例如土壤类别和岩石类型,建议使用高程膨胀。

Double
输入研究区域面
(可选)

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

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

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

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

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

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

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

Raster Layer

派生输出

标注说明数据类型
输出体素图层

类别的体素图层。

Voxel Layer

arcpy.ga.NearestNeighbor3D(in_features, category_field, out_netcdf_file, {x_spacing}, {y_spacing}, {elevation_spacing}, {elev_inflation_factor}, {in_study_area}, {min_elev_raster}, {max_elev_raster})
名称说明数据类型
in_features

输入点表示 3D 中具有已知类别的位置。 这些点必须在投影坐标系中,并且必须至少有三个点。

Feature Layer
category_field
[category_field,...]

输入要素的字段包含每个点的类别。 对于每个字段,该字段的唯一值表示该字段的类别。 每个字段必须是文本型、短整型或长整型。

例如,如果提供两个字段:土壤类别字段(页岩、沙子、粘土等)和土壤颜色字段(黄色、棕色、白色等)。 则输出 netCDF 文件中的每个体素会将最近的土壤类别和土壤颜色存储为单独的变量。

Field
out_netcdf_file

包含 3D 网格类别的输出 netCDF 文件。 3D 网格中的每个点都分配有最近输入点的类别。 此文件可用作体素图层的数据源。

File
x_spacing
(可选)

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

Linear Unit
y_spacing
(可选)

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

Linear Unit
elevation_spacing
(可选)

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

Linear Unit
elev_inflation_factor
(可选)

在查找最近相邻要素之前,使用常量值乘以输入点的高程(z 坐标)。 值大于 1 表示水平搜索比垂直搜索更远的范围,以查找最近的相邻要素。 例如,值为 10 表示每个体素将水平搜索比垂直搜索远 10 倍的范围以找到最近的相邻要素。 默认值为 1,表示不调整高程。 值必须位于 1 和 1000 之间。

高程膨胀仅用于查找最近的相邻要素,并且在创建输出 netCDF 文件之前将所有高程返回到原始比例。 当输入点的类别在水平岩层上趋于相似时,例如土壤类别和岩石类型,建议使用高程膨胀。

Double
in_study_area
(可选)

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

Feature Layer
min_elev_raster
(可选)

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

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

Raster Layer
max_elev_raster
(可选)

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

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

Raster Layer

派生输出

名称说明数据类型
out_voxel_layer

类别的体素图层。

Voxel Layer

代码示例

NearestNeighbor3D 示例 1(Python 窗口)

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

# Create a voxel layer source file of 3D soil class points within a field
# and between a bedrock layer and the ground.
arcpy.ga.NearestNeighbor3D("SoilPoints", "SoilClass","outputNCDF.nc",
                           "50 Meters", "50 Meters", "5 Meters", 1,
                           "MyStudyArea", "Bedrock.tif", "WorldElevation3D")
NearestNeighbor3D 示例 2(独立脚本)

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

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


# Create a voxel layer source file of 3D soil class points within a field
# and between a bedrock layer and the ground.



# Import system modules
import arcpy

# Allow overwriting output
arcpy.env.overwriteOutput = True

# Define 3D input points with categories
in3DPoints = "C:/gapydata/inputs.gdb/my3DSoilPoints"
categoryField = "SoilClass"
outNetCDF = "C:/gapydata/outputs/SoilClassVoxel.nc"

# Define voxel dimensions and elevation inflation
xSpacing = "50 Meters"
ySpacing = "50 Meters"
elevSpacing = "5 Meters"
elevInflation = 1

# Define study area, bedrock elevation layer, and ground elevation layer
studyArea = "C:/gapydata/inputs.gdb/StudyAreaPolygon"
minElevRaster = "C:/gapydata/inputs.gdb/BedrockDepth"
maxElevRaster = "C:/gapydata/inputs.gdb/WorldElevationDEM"


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

# Execute Nearest Neighbor 3D
arcpy.ga.NearestNeighbor3D(in3DPoints, categoryField,outNetCDF,
                           xSpacing, ySpacing, elevSpacing,
                           elevInflation, studyArea, minElevRaster,
                           maxElevRaster)

许可信息

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

相关主题