要素类 Z 转 ASCII (3D Analyst)
摘要
将 3D 要素导出到存储有 GENERATE、XYZ 或专用标准数据的 ASCII 文本文件。
用法
-
PROFILE 格式为可导入到专用图表绘制应用程序的 3D 线要素提供专用标准信息。源要素类中的每个线要素将写入一个单独的文件,其名称的后缀为线的唯一 ID。专用标准表中的各行包含从线的起始位置到折点 (D)(其后为该折点高程)的距离。
0 z1 D1 z2 D2 z3 D3 z4
XYZ 格式会以浮点值形式存储 x、y 和 z 坐标,文件中的各行表示不同点的记录。
x1 y1 z1 x2 y2 z2 x3 y3 z3 x4 y4 z4
注:点和多点要素写入同一文件,而面和折线要素将写入名称后缀名为要素 ID 的单独的文本文件。多部件要素的各部件均写入单独的文件,且其文件名要素 ID 后附有其部件号。
GENERATE 格式不支持标题行,但可在一个文件中存储所有输入要素。
- 点要素与其各自的 ID 和 XYZ 坐标一起存储,最后一条线用 END 关键字表示:
id1 x1 y1 z1 id2 x2 y2 z2 id3 x3 y3 z3 id4 x4 y4 z4 END
注:来自原始要素类中同一记录的多点要素的 ID 相同。
- 线和面要素由 END 关键字分开,两个连续的 END 关键字表示文件结束:
id1 x1 y1 z1 x2 y2 z2 x3 y3 z3 x4 y4 z4 END id2 x1 y1 z1 x2 y2 z2 END END
注:面要素的第一个和最后一个 XYZ 坐标始终相同。
- 点要素与其各自的 ID 和 XYZ 坐标一起存储,最后一条线用 END 关键字表示:
语法
参数 | 说明 | 数据类型 |
in_feature_class |
导出到 ASCII 文件的 3D 点、多点、折线或面要素类。 | Feature Layer |
output_location |
将在其中写入输出文件的文件夹。 | Folder |
out_file |
生成的 ASCII 文件的名称。 如果线或面要素类导出为 XYZ 格式,则使用文件名作为基础名称。因为 XYZ 格式每个文件仅支持一条线或一个面,所以每个要素都将具有唯一的文件输出。多部件要素的各部件也将写入单独的文件。文件名将附有每个要素的 OID,以及使各文件名唯一所需的任何附加字符。 | String |
format (可选) |
要创建的 ASCII 文件的格式。
| String |
delimiter (可选) |
文本文件中使用的字段定界符。
| String |
decimal_format (可选) |
用于确定输出文件中存储的有效数字位数的方法。
| String |
digits_after_decimal (可选) |
在十进制记数法设置为 FIXED 时使用此参数。此参数确定写入到输出文件的浮点值在小数之后写入的位数。 | Long |
decimal_separator (可选) | 文本文件中用于区分数字的整数部分与其小数部分的小数分隔符。
| String |
代码实例
下面的示例演示了如何在 Python 窗口中使用此工具:
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.FeatureClassZToASCII_3d("LidarPts.shp", "", "ASCII_LidarPts.txt",
"GENERATE", "COMMA", "FIXED", 6, "DECIMAL_POINT")
下面的示例演示了如何在独立 Python 脚本中使用此工具:
'''****************************************************************************
Name: FeatureClassZToASCII Example
Description: This script demonstrates how to use the
FeatureClassZToASCII tool to create generate files for all
z-aware point features in a given workspace.
****************************************************************************'''
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
# Obtain a license for the ArcGIS 3D Analyst extension
arcpy.CheckOutExtension('3D')
# Set environment settings
env.workspace = 'C:/data'
# List all points in the target workspace
fcList = arcpy.ListFeatureClasses("*", "POINT")
if fcList:
# Set Local Variables
outFolder = "C:/output"
outFormat = "GENERATE"
delimeter = "SPACE"
decimal = "FIXED"
digits = 3
dec_sep = "DECIMAL_POINT"
for fc in fcList:
# Use Describe method to evaluate whether the feature class is z-aware
desc = arcpy.Describe(fc)
if desc.hasZ == True:
# Define the output file name by replacing '.shp' with _ascii.txt
outName = fc.replace('.shp', '') + "_ascii.txt"
#Execute FeatureClassZToASCII_3d
arcpy.FeatureClassZToASCII_3d(fc, outFolder, outName, outFormat, delimeter, decimal, digits, dec_sep)
else:
print "There are no feature classes in the " + env.workspace + " directory."
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)