3D ASCII 文件转要素类 (3D Analyst)

摘要

将 3D 要素从一个或多个以 XYZ、XYZI 或 GENERATE 格式存储的 ASCII 文件导入到新要素类中。

插图

3D ASCII 文件转要素类示例

使用情况

  • 所有输入文件必须具有相同的格式和几何类型。

  • XYZXYZI 格式支持标题行并将以三个连续整数开头的第一行视为点记录的开始。这两个格式均可以存储点、线和面,但每个文件仅可存储一个单部件线或面要素。面要素必须闭合,其最后一个折点的坐标要等于第一个折点的坐标,并且不得自相交。

  • 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
    注:

    面要素应该按照顺时针方向定向、不能自相交,且应该闭合(即最后一个折点等于第一个折点)。任何一个条件不符,输出的面都将是无效的。检查几何工具可用于验证结果要素,修复几何工具可用于更正错误。

参数

标注说明数据类型
ASCII 3D 数据

包含 XYZ、XYZI(具有激光雷达强度)或 3D GENERATE 格式数据的 ASCII 文件或文件夹。所有输入文件的格式必须相同。如果指定了某个文件夹,则文件后缀参数将成为必选项,并将处理所有与指定后缀具有相同扩展名的文件。

地理处理窗格中,还可以指定文件夹作为输入,具体方法如下:在 File Explorer 中选择文件夹,然后将其拖动到参数的输入框上。

Folder; File
文件格式

将转换为要素类的 ASCII 文件格式。

  • XYZ包含存储为 XYZ 坐标的几何信息的文本文件。
  • XYZI同时包含 XYZ 坐标和强度测量值的文本文件。
  • 生成以 GENERATE 格式进行结构化的文本文件。
String
输出要素类

将生成的要素类。

Feature Class
输出要素类类型

输出要素类的几何类型。

  • 多点要素由于输入数据包含大量每个要素不需要的点和属性,所以建议使用多点。
  • 点要素每个 XYZ 坐标将生成一个点要素。
  • 折线要素输出将包含折线要素。
  • 多边形要素输出将包含面要素。
String
Z 因子
(可选)

Z 值将乘上的系数。 此值通常用于转换 z 线性单位来匹配 x,y 线性单位。 默认值为 1,此时高程值保持不变。 如果输入表面的空间参考具有已指定线性单位的 z 基准,则此参数不可用。

Double
坐标系
(可选)

输入数据的坐标系。默认为“未知坐标系”。如果已指定坐标系,则输出可能会(也可能不会)被投影到不同的坐标系中。这取决于地理处理环境是否具有为目标要素类位置而定义的坐标系。

Coordinate System
平均点间距
(可选)

输入点之间的平均平面距离。仅当将输出几何设置为 MULTIPOINT 时才可使用此参数,且其功能是提供一个平均值以将点归组到一起。结合每个形状限制的点数使用该值,以构造用于组合点的虚拟分块系统。分块系统的原点取决于目标要素类的空间域。指定目标要素类的水平单位的间距。

Double
文件后缀
(可选)

将从输入文件夹导入的文件的后缀。 将文件夹指定为输入时,此参数为必填项。

String
小数分隔符
(可选)

文本文件中将用于区分数字的整数部分与其小数部分的小数分隔符。

  • DECIMAL_POINT将使用点作为小数字符。 这是默认设置。
  • DECIMAL_COMMA将使用逗号作为小数字符。
String

arcpy.ddd.ASCII3DToFeatureClass(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 文件或文件夹。所有输入文件的格式必须相同。如果指定了某个文件夹,则文件后缀参数将成为必选项,并将处理所有与指定后缀具有相同扩展名的文件。

地理处理窗格中,还可以指定文件夹作为输入,具体方法如下:在 File Explorer 中选择文件夹,然后将其拖动到参数的输入框上。

Folder; File
in_file_type

将转换为要素类的 ASCII 文件格式。

  • XYZ包含存储为 XYZ 坐标的几何信息的文本文件。
  • XYZI同时包含 XYZ 坐标和强度测量值的文本文件。
  • GENERATE以 GENERATE 格式进行结构化的文本文件。
String
out_feature_class

将生成的要素类。

Feature Class
out_geometry_type

输出要素类的几何类型。

  • MULTIPOINT由于输入数据包含大量每个要素不需要的点和属性,所以建议使用多点。
  • POINT每个 XYZ 坐标将生成一个点要素。
  • POLYLINE输出将包含折线要素。
  • POLYGON输出将包含面要素。
String
z_factor
(可选)

Z 值将乘上的系数。 此值通常用于转换 z 线性单位来匹配 x,y 线性单位。 默认值为 1,此时高程值保持不变。 如果输入表面的空间参考具有已指定线性单位的 z 基准,则此参数不可用。

Double
input_coordinate_system
(可选)

输入数据的坐标系。默认为“未知坐标系”。如果已指定坐标系,则输出可能会(也可能不会)被投影到不同的坐标系中。这取决于地理处理环境是否具有为目标要素类位置而定义的坐标系。

Coordinate System
average_point_spacing
(可选)

输入点之间的平均平面距离。仅当将输出几何设置为 MULTIPOINT 时才可使用此参数,且其功能是提供一个平均值以将点归组到一起。结合每个形状限制的点数使用该值,以构造用于组合点的虚拟分块系统。分块系统的原点取决于目标要素类的空间域。指定目标要素类的水平单位的间距。

Double
file_suffix
(可选)

将从输入文件夹导入的文件的后缀。 将文件夹指定为输入时,此参数为必填项。

String
decimal_separator
(可选)

文本文件中将用于区分数字的整数部分与其小数部分的小数分隔符。

  • DECIMAL_POINT将使用点作为小数字符。 这是默认设置。
  • DECIMAL_COMMA将使用逗号作为小数字符。
String

代码示例

ASCII3DToFeatureClass 示例 1(Python 窗口)

下面的示例演示了如何在 Python 窗口中使用此工具。

arcpy.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

# Set environment settings
arcpy.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")

相关主题