标注 | 说明 | 数据类型 |
输入要素 | 输入点表示 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 |
需要 Geostatistical Analyst 许可。
插图
使用情况
输出 netCDF 文件参数不会自动将图层添加到地图或场景。要将输出渲染为体素图层,必须将其添加到局部场景,其具有与 netCDF 文件相同的水平和垂直坐标系。也可以分别使用创建 NetCDF 要素图层工具或创建 NetCDF 栅格图层工具,将其作为要素或栅格图层添加到地图或场景中。
-
输入要素必须是具有存储在 Shape.Z 几何属性中的高程的 3D 点。 可以使用依据属性实现要素转 3D 工具将具有高程字段的 2D 点要素转换为 3D 点要素。
如果在类别字段参数中指定了多个字段,则输出 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 间距和高程间距参数的值。 当工具运行完成时,重新计算的值将打印为警告消息。 如果手动为间距参数提供值(或提供输出范围),则不会重新计算该值。
参数
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 |
代码示例
以下 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")
以下 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