3D ASCII 文件转要素类 (3D Analyst)
摘要
将 3D 要素从一个或多个以 XYZ、XYZI 或 GENERATE 格式存储的 ASCII 文件导入到新要素类中。
插图
用法
所有输入文件必须具有相同的格式和几何类型。
XYZ 和 XYZI 格式支持标题行并将以三个连续整数开头的第一行视为点记录的开始。这两种格式会以相同的方式存储所有支持的几何类型,并仅支持每个文件有一个单部分线或面要素。
注:仅有一个单部分线或面要素可以存储在 XYZ 或 XYZI 文件中。面必须闭合,其最后一个折点的坐标要等于第一个折点的坐标,并且不得自相交。
XYZ 文件会以浮点值形式存储 x、y 和 z 坐标,文件中的每一行表示一个不同的点记录。XYZ 坐标可以后跟字母数字项,但此信息不会传递至随后生成的要素类。
XYZI 文件可以存储 x、y、z 和强度测量值。强度值以二进制大对象 (BLOB) 字段进行存储,以用于多面体输出。
注:如果 ASCII 文件是 XYZI 格式但不需要强度测量值,则可选择 XYZ。这样在读取文件时会跳过强度值。
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
语法
参数 | 说明 | 数据类型 |
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 线性单位,以匹配 XY 线性单位的值。默认值为 1,此时高程值保持不变。 | Double |
input_coordinate_system (可选) |
输入数据的坐标系。默认为“未知坐标系”。如果已指定坐标系,则输出可能会(也可能不会)被投影到不同的坐标系中。这取决于地理处理环境是否具有为目标要素类位置而定义的坐标系。 | Coordinate System |
average_point_spacing (可选) |
输入点之间的平均平面距离。仅当将输出几何设置为 MULTIPOINT 时才可使用此参数,且其功能是提供一个平均值以将点归组到一起。结合每个形状限制的点数使用该值,可构造用于组合点的虚拟切片系统。切片系统的原点取决于目标要素类的属性域。指定目标要素类的水平单位的间距。 | Double |
file_suffix (可选) |
从输入文件夹导入的文件的后缀。将文件夹指定为输入时,此参数为必填项。 | String |
decimal_separator (可选) | 文本文件中用于区分数字的整数部分与其小数部分的小数分隔符。
| String |
代码实例
下面的示例演示了如何在 Python 窗口中使用此工具:
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.Ascii3DToFeatureClass_3d("masspnts.txt", "GENERATE", "masspnts.shp", "POINT", 1, "Coordinate Systems/Projected Coordinate Systems/State Plane/NAD 1983 (Feet)/NAD 1983 StatePlane Massachusetts Mainland FIPS 2001 (Feet).prj")
下面的示例演示了如何在独立 Python 脚本中使用此工具:
'''****************************************************************************
Name: ASCII3D_to_Feature_Class Example
Description: This script demonstrates how to use the
ASCII3D_to_Feature_Class tool to create a point feature class
from a set of text files in the specified workspace.
****************************************************************************'''
# Import system modules`
import arcpy
from arcpy import env
import exceptions, sys, traceback
try:
# Obtain a license for the ArcGIS 3D Analyst extension
arcpy.CheckOutExtension("3D")
# Set environment settings
env.workspace = "C:/data"
# Set Local Variables
inFormat = "GENERATE"
# Name of the output file
outFC = "Pts_from_ASCII.shp"
# Geometry of the output feature class
outType = "POINT"
zFactor = 1
# Coordinate system of the output feature class
CS = "Coordinate Systems/Geographic Coordinate Systems/World/WGS 1984.prj"
fileSuffix = "ascii.txt"
decSep = "DECIMAL_POINT" # Specifies the decimal delimeter
# Create list of ASCII files
txtList = arcpy.ListFiles("*" + fileSuffix)
# Verify the presence of TINs in the list
if len(txtList) > 0:
# Execute ASCII3D_to_Feature_Class
arcpy.ASCII3DToFeatureClass_3d(txtList, inFormat, outFC, outType,
zFactor, CS, fileSuffix, decSep)
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)