标注 | 说明 | 数据类型 |
输出 TIN | 将要生成的 TIN 数据集。 | TIN |
坐标系 (可选) | 输出 TIN 的空间参考。 将空间参考设置为投影坐标系。 不建议使用地理坐标系,因为当以角度单位表示 x,y 坐标时无法确保 Delaunay 三角测量,这可能会对基于距离的计算(如坡度、体积和视线)的准确性产生负面影响。 | Coordinate System |
输入要素类 (可选) | 将构成 TIN 定义的输入要素及其相关属性。
| Value Table |
约束型 Delaunay (可选) | 指定将与 TIN 隔断线一同使用的三角测量技术。
| Boolean |
摘要
创建一个不规则三角网 (TIN) 数据集。
插图
使用情况
-
避免使用地理坐标系创建 TIN,因为以球面坐标表示 x,y 单位时,无法有效实施 Delaunay 三角测量规则。
-
表面要素类型用于定义输入要素将如何构成表面三角化的定义。
- 可将点要素指定为离散多点,而这些点所提供的数据结点的 z 值用于表面的三角测量。
- 可将线要素指定为离散多点和隔断线,表示沿某一表面的位置,该表面的坡度线性不连续,如山脊线、海岸线、路面边缘、建筑物轮廓等。
- 此外,也可将面要素,以及用于定义数据区的裁剪要素、通过常量 z 值定义区域的替换要素(例如水体)和表示不存在数据的内部区域的擦除要素指定为离散多点和隔断线。
如果有足够的内存,该工具可以创建由数百万个点组成的 TIN。 但是,将 TIN 结点的数量限制在 600 万以下将确保响应迅速的显示性能和整体可用性。 TIN 表面越大,越适合使用多分辨率 terrain 数据集进行管理。 使用 LAS 格式的点云数据时,LAS 数据集可用于高效地渲染和处理 TIN 表面中的 LAS 点,该表面包含 TIN 数据集中同样支持的基于折线和面的表面约束。
-
如果待创建的 TIN 将用于 ArcGIS Desktop 10.0 之前的版本,可将默认 TIN 存储版本环境设置设为 PRE_10.0。
创建 TIN 数据集后,您可以使用编辑 TIN 工具对其进行修改,以将其他基于要素的测量值合并到 TIN 表面。 您还可以使用描绘 TIN 数据区域工具根据三角形边的最大长度定义哪些 TIN 三角形构成插值区域。 也可以通过交互式编辑修改 TIN 表面。
参数
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 定义的输入要素及其相关属性。
| Value Table |
constrained_delaunay (可选) | 指定将与 TIN 隔断线一同使用的三角测量技术。
| Boolean |
代码示例
下面的示例演示了如何在 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")
下面的示例演示了如何在独立 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)