创建 TIN (3D Analyst)

摘要

创建一个不规则三角网 (TIN) 数据集。

插图

创建 TIN 工具图示。

使用情况

  • 避免使用地理坐标系创建 TIN,因为以球面坐标表示 x,y 单位时,无法有效实施 Delaunay 三角测量规则。

  • 表面要素类型用于定义输入要素将如何构成表面三角化的定义。

    • 可将点要素指定为离散多点,而这些点所提供的数据结点的 z 值用于表面的三角测量。
    • 可将线要素指定为离散多点和隔断线,表示沿某一表面的位置,该表面的坡度线性不连续,如山脊线、海岸线、路面边缘、建筑物轮廓等。
    • 此外,也可将面要素,以及用于定义数据区的裁剪要素、通过常量 z 值定义区域的替换要素(例如水体)和表示不存在数据的内部区域的擦除要素指定为离散多点和隔断线。
  • 如果有足够的内存,该工具可以创建由数百万个点组成的 TIN。 但是,将 TIN 结点的数量限制在 600 万以下将确保响应迅速的显示性能和整体可用性。 如果需要更大的 TIN 表面,请考虑使用 terrain 数据集。 terrain 数据集提供了多分辨率 TIN 表面,可以支持更大规模的源测量集合。

  • 如果要使用低于 ArcGIS Desktop 10.0 的版本来创建 TIN,则将默认 TIN 存储版本环境设置为 PRE_10.0

  • 创建 TIN 数据集后,您可以使用编辑 TIN 工具对其进行修改,以将其他基于要素的测量值合并到 TIN 表面。 您还可以使用描绘 TIN 数据区域工具根据三角形边的最大长度定义哪些 TIN 三角形构成插值区域。 也可以通过交互式编辑修改 TIN 表面。

参数

标注说明数据类型
输出 TIN

将要生成的 TIN 数据集。

TIN
坐标系
(可选)

输出 TIN 的空间参考。 将空间参考设置为投影坐标系。 不建议使用地理坐标系,因为当以角度单位表示 x,y 坐标时无法确保 Delaunay 三角测量,这可能会对基于距离的计算(如坡度、体积和视线)的准确性产生负面影响。

Coordinate System
输入要素类
(可选)

输入要素及其相关属性定义如何将其添加到 TIN。

  • 输入要素 - 将添加到 TIN 的要素。
  • 高度字段 - 输入要素的高程源。 可以使用输入要素属性表中的任何数值字段以及 Shape.Z(用于 3D 要素的 z 值)和 Shape.M(用于存储于几何中的 m 值)。 选择 <None> 关键字将导致要素的高程通过周围表面进行插值处理。
  • 类型 - 定义 TIN 表面中输入要素的角色。 可用选项取决于输入要素的几何。 对于基于线和面的表面要素类型,使用自然邻域插值法从 TIN 数据集插值栅格表面时,表面要素类型的硬指定和软指定会影响线或面边界的处理方式。 硬表面要素类型表示高程具有急剧不连续性的边界,例如悬崖边缘、墙壁或路边的路缘。 软表面要素类型表示高程更为平滑地定义的边界。
    • 可将点和多点要素定义为 Mass_Points,用于构成以 TIN 数据结点形式存储的高程值。
    • 可以将以下线要素合并到 TIN 中:
      • 线折点转换为 TIN 中的节点的离散多点
      • 定义 TIN 中的线性不连续性的硬断线软断线隔断线要素。
    • 面要素可作为离散多点、断点以及以下表面要素类型合并到 TIN 中:
      • 定义 TIN 表面数据区域的硬裁剪软裁剪要素。
      • 表示数据内部的空隙的硬擦除软擦除要素。
      • 定义恒定高度区域的硬替换软替换要素。
      • 将整数属性分配给节点和三角面的硬值填充软值填充要素。
  • 标签字段 - 将使用从输入要素属性表的整型字段中获得的值分配给 TIN 的数据元素的数值属性。
Value Table
约束型 Delaunay
(可选)

指定将与 TIN 隔断线一同使用的三角测量技术。

  • 未选中 - TIN 将使用符合 Delaunay 的三角测量,这可能会增密每条隔断线线段以生成多条三角形边。 这是默认设置。
  • 选中 - TIN 将使用约束型 Delaunay 三角测量,这会将各线段作为单独的边添加。 所有位置均支持 Delaunay 三角测量规则,但沿隔断线处除外,因为它无法增密。
Boolean

arcpy.ddd.CreateTin(out_tin, {spatial_reference}, {in_features}, {constrained_delaunay})
名称说明数据类型
out_tin

将要生成的 TIN 数据集。

TIN
spatial_reference
(可选)

输出 TIN 的空间参考。 将空间参考设置为投影坐标系。 不建议使用地理坐标系,因为当以角度单位表示 x,y 坐标时无法确保 Delaunay 三角测量,这可能会对基于距离的计算(如坡度、体积和视线)的准确性产生负面影响。

Coordinate System
in_features
[[in_features, height_field, SF_type, tag_value],...]
(可选)

输入要素及其相关属性定义如何将其添加到 TIN。

  • in_features - 将添加到 TIN 的要素。
  • height_field - 输入要素的高程源。 可以指定输入要素属性表中的任何数值字段以及 Shape.Z(用于 3D 要素的 z 值)和 Shape.M(用于随几何一同存储的 m 值)。 选择 <None> 关键字将导致要素的高程通过周围表面进行插值处理。
  • sf_type - 定义 TIN 表面中输入要素的角色。 可用选项取决于输入要素的几何。 对于基于线和面的表面要素类型,使用自然邻域插值法从 TIN 数据集插值栅格表面时,表面要素类型的硬指定和软指定会影响线或面边界的处理方式。 硬表面要素类型表示高程具有急剧不连续性的边界,例如悬崖边缘、墙壁或路边的路缘。 软表面要素类型表示高程更为平滑地定义的边界。
    • 可将点和多点要素定义为 Mass_Points,用于构成以 TIN 数据结点形式存储的高程值。
    • 可以将以下线要素合并到 TIN 中:
      • 线折点转换为 TIN 中的节点的 Mass_Points
      • 定义 TIN 中的线性不连续性的 Hard_LineSoft_Line 隔断线要素。
    • 面要素可作为离散多点、断点以及以下表面要素类型合并到 TIN 中:
      • 定义 TIN 表面数据区域的 Hard_ClipSoft_Clip 要素。
      • 表示数据内部的空隙的 Hard_EraseSoft_Erase 要素。
      • 定义恒定高度区域的 Hard_ReplaceSoft_Replace 要素。
      • 将整数属性分配给节点和三角面的 Hardvalue_FillSoftvalue_Fill 要素。
  • tag_field - 将从输入要素属性表的整型字段中派生的数值属性,其值可用于将基本形式的属性分配给 TIN 的数据元素。 指定 <None>,将不会分配标签值。
Value Table
constrained_delaunay
(可选)

指定将与 TIN 隔断线一同使用的三角测量技术。

  • DELAUNAYTIN 将使用符合 Delaunay 的三角测量,这可能增密每条隔断线线段以生成多条三角形边。 这是默认设置。
  • CONSTRAINED_DELAUNAYTIN 将使用约束型 Delaunay 三角测量,这会将各线段作为单独的边添加。 所有位置均支持 Delaunay 三角测量规则,但沿隔断线处除外,因为它无法增密。
Boolean

代码示例

CreateTin 示例 1(Python 窗口)

下面的示例演示了如何在 Python 窗口中使用此工具。

arcpy.env.workspace = "C:/data"
arcpy.ddd.CreateTin("NewTIN", "NAD 1983 StatePlane California II FIPS 0402 (Feet).prj", 
                   "points.shp Shape.Z masspoints", "constrained_delaunay")
CreateTin 示例 2(独立脚本)

下面的示例演示了如何在独立 Python 脚本中使用此工具。

'''****************************************************************************
Name: Define Data Boundary of LAS File
Description: This script demonstrates how to delineate data boundaries of 
             LAS files with irregularly clustered points. It is intended for 
             use as a script tool with one input LAS file.
****************************************************************************'''
# Import system modules
import arcpy

# Set local variables
inLas = arcpy.GetParameterAsText(0)  # input LAS file
ptSpacing = arcpy.GetParameterAsText(1)  # LAS point spacing
classCode = arcpy.GetParameterAsText(2)  # List of integers
returnValue = arcpy.GetParameterAsText(3)  # List of strings
outTin = arcpy.GetParameterAsText(4)  # TIN created to delineate data area
outBoundary = arcpy.GetParameterAsText(5)  # Polygon boundary file

try:
    # Execute LASToMultipoint
    lasMP = arcpy.CreateUniqueName('lasMultipoint', 'in_memory')
    arcpy.ddd.LASToMultipoint(inLas, LasMP, ptSpacing, class_code, 
                             "ANY_RETURNS", "", sr, inFormat, zfactor)
    # Execute CreateTin
    arcpy.ddd.CreateTin(outTin, sr, "{0} Shape.Z masspoints"\
                       .format(lasMP), "Delaunay")
    # Execute CopyTin
    arcpy.ddd.CopyTin(outTin, "{0}_copy".format(outTin))
    # Execute DelineateTinDataArea
    maxEdge = ptSpacing * 4
    arcpy.ddd.DelineateTinDataArea(outTin, maxEdge, "PERIMETER_ONLY")
    # Execute TinDomain
    arcpy.ddd.TinDomain(outTin, outBoundary, "POLYGON")
        
except arcpy.ExecuteError:
    print(arcpy.GetMessages())
except Exception as err:
    print(err)

许可信息

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

相关主题