描述
创建一个不规则三角网 (TIN) 数据集。
使用方法
-
避免使用地理坐标系创建 TIN,因为以球面坐标表示 XY 单位时,无法有效实施 Delaunay 三角测量规则。
-
表面要素类型用于定义输入要素将如何构成表面三角化的定义。
- 可将点要素指定为离散多点,而这些点所提供的数据结点的 Z 值用于表面的三角测量。
- 可将线要素指定为离散多点和隔断线,表示沿某一表面的位置,该表面的坡度线性不连续,如山脊线、海岸线、路面边缘、建筑物轮廓等。
- 此外,也可将面要素,以及用于定义数据区的裁剪要素、通过常量 Z 值定义区域的替换要素(如水体)和表示不存在数据的内部区域的擦除要素指定为离散多点和隔断线。
-
TIN 支持的最大结点数主要取决于计算机上连续的可用内存资源。考虑将结点总数限制到 6 百万以下,以保持响应显示性能和总体可用性。三角化网格面越大,越适合使用多分辨率 terrain 数据集进行管理。
-
如果待创建的 TIN 将用于 ArcGIS Desktop 10.0 之前的版本,可将 TIN 存储版本环境设置设为 PRE_10.0。
语法
arcpy.3d.CreateTin(out_tin, {spatial_reference}, {in_features}, {constrained_delaunay})
参数 | 说明 | 数据类型 |
out_tin | 将要生成的 TIN 数据集。 | TIN |
spatial_reference (可选) | 应将输出 TIN 的空间参考设为投影坐标系。不建议使用地理坐标系,因为当以角度单位表示 XY 坐标时无法确保 Delaunay 三角测量,这可能会对基于距离的计算(如坡度、体积和视线)的准确性产生负面影响。 | Coordinate System |
in_features [[in_features, height_field, SF_type, tag_value],...] (可选) | 将构成 TIN 定义的输入要素及其相关属性。
| Value Table |
constrained_delaunay (可选) | 指定与 TIN 隔断线一同使用的三角测量技术。
| Boolean |
代码示例
下面的示例演示了如何在 Python 窗口中使用此工具。
arcpy.env.workspace = "C:/data"
arcpy.CreateTin_3d("NewTIN", "NAD 1983 StatePlane California II FIPS 0402 (Feet).prj",
"points.shp Shape.Z masspoints", "constrained_delaunay")
下面的示例演示了如何在独立 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