摘要
将 3D 要素从一个或多个以 XYZ、XYZI 或 GENERATE 格式存储的 ASCII 文件导入到新要素类中。
插图
用法
所有输入文件必须具有相同的格式和几何类型。
XYZ 和 XYZI 格式支持标题行并将以三个连续整数开头的第一行视为点记录的开始。两个格式均可以存储点、线和面,但每个文件仅可存储一个单部件线或面要素。面要素必须闭合,其最后一个折点的坐标要等于第一个折点的坐标,并且不得自相交。
XYZ 文件会以浮点值形式存储 x、y 和 z 坐标,文件中的每一行表示一个不同的点记录。XYZ 坐标可以后跟字母数字项,但此信息不会传递至随后生成的要素类。
XYZI 文件可以存储 x、y、z 和强度测量值。强度值以二进制大对象 (BLOB) 字段进行存储,以用于多面体输出。
GENERATE 格式不支持标题行,但它可以为每个点提供一个 ID 以及 XYZ 坐标,并且文件的最后一行可选择性地使用 END 关键字进行标注。
id x y z id x y z . . END
GENERATE 格式支持每个文件具有多个要素。对于线和面来说,END 关键字用于指示一个要素的结束,并且每个要素必须是单部件要素。一行中有两个 END 关键字表示文件结束。
id x y z x y z x y z END id x y z x y z END END
语法
ASCII3DToFeatureClass_3d (input, in_file_type, out_feature_class, out_geometry_type, {z_factor}, {input_coordinate_system}, {average_point_spacing}, {file_suffix}, {decimal_separator})
参数 | 说明 | 数据类型 |
input [input,...] | 包含 XYZ、XYZI(具有激光雷达强度)或 3D GENERATE 格式数据的 ASCII 文件或文件夹。所有输入文件的格式必须相同。如果指定了某个文件夹,则文件后缀参数将成为必选项,并将处理所有与指定后缀具有相同扩展名的文件。 | Folder; File |
in_file_type | String | |
out_feature_class | 将由此工具生成的要素类。 | Feature Class |
out_geometry_type | 输出要素类的几何类型。
| String |
z_factor (可选) | Z 值将乘上的系数。此值通常用于转换 Z 线性单位来匹配 XY 线性单位。默认值为 1,此时高程值保持不变。 | Double |
input_coordinate_system (可选) | 输入数据的坐标系。默认为“未知坐标系”。如果已指定坐标系,则输出可能会(也可能不会)被投影到不同的坐标系中。这取决于地理处理环境是否具有为目标要素类位置而定义的坐标系。 | Coordinate System |
average_point_spacing (可选) | 输入点之间的平均平面距离。仅当将输出几何设置为 MULTIPOINT 时才可使用此参数,且其功能是提供一个平均值以将点归组到一起。结合每个形状限制的点数使用该值,可构造用于组合点的虚拟切片系统。切片系统的原点取决于目标要素类的属性域。指定目标要素类的水平单位的间距。 | Double |
file_suffix (可选) | 从输入文件夹导入的文件的后缀。将文件夹指定为输入时,此参数为必填项。 | String |
decimal_separator (可选) | 文本文件中用于区分数字的整数部分与其小数部分的小数分隔符。
| String |
代码实例
ASCII3DToFeatureClass 示例 1(Python 窗口)
下面的示例演示了如何在 Python 窗口中使用此工具。
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
#Create spatial reference object using WKID
sr = arcpy.SpatialReference(32136)
arcpy.ASCII3DToFeatureClass_3d("masspntz.gen", "GENERATE", "elevation_points.shp",
"MULTIPOINT", z_factor=3.28,
input_coordinate_system=sr, average_point_spacing=2.5)
ASCII3DToFeatureClass 示例 2(独立脚本)
下面的示例演示了如何在独立 Python 脚本中使用此工具。
'''****************************************************************************
Name: ASCII3D_to_Feature_Class Example
Description: Creates a TIN surface using XYZI files in a folder and breaklines
imported from ASCII files.
****************************************************************************'''
# Import system modules`
import arcpy
from arcpy import env
import exceptions, sys, traceback
try:
arcpy.CheckOutExtension("3D")
# Set environment settings
env.workspace = "C:/data"
# Define the spatial reference using the name
sr = arcpy.SpatialReference("Hawaii Albers Equal Area Conic")
#Create the elevation points
arcpy.ddd.ASCII3DToFeatureClass("Elevation Points", "XYZI",
"elevation_points.shp",
"MULTIPOINT", z_factor=3.28,
input_coordinate_system=sr,
average_point_spacing=2.5,
file_suffix="XYZ")
#Create the break lines
arcpy.ddd.ASCII3DToFeatureClass("brklines.gen", "GENERATE",
"breaklines.shp",
"POLYLINE", z_factor=3.28,
input_coordinate_system=sr)
arcpy.ddd.CreateTin("elevation_tin", sr,
[["breaklines.shp", "Shape", "hardline"],
["elevation_points.shp", "Shape", "masspoints"]],
"CONSTRAINED_DELAUNAY")
except arcpy.ExecuteError:
print arcpy.GetMessages()
except:
# Get the traceback object
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
# Concatenate error information into message string
pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\
.format(tbinfo, str(sys.exc_info()[1]))
msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2))
# Return python error messages for script tool or Python Window
arcpy.AddError(pymsg)
arcpy.AddError(msgs)