ASCII 3D в класс объектов (3D Analyst)
Резюме
Инструмент импортирует 3D объекты из одного или нескольких текстовых файлов кодировки ASCII (форматов XYZ, XYZI или GENERATE) в новый класс пространственных объектов.
Рисунок
Использование
Все входные файлы должны быть одного формата и с одним типом геометрии.
Форматы XYZ и XYZI поддерживают строки заголовка и за начало записи точек принимают первую строку с тремя последовательными числами. Оба эти формата используют одинаковый принцип хранения всех поддерживаемых типов геометрий, в одном файле может содержаться только один простой (не составной) линейный или полигональный пространственный объект.
Примечание:В файлах XYZ или XYZI может храниться только один линейный или полигональный пространственный объект, состоящий только из одной части (простой). Полигоны должны замыкаться, т.е. координаты последней вершины должны совпадать с координатами первой, кроме того, они не должны иметь самопересечений.
Файлы XYZ содержат координаты x, y и z в формате с плавающей точкой (float), при этом каждая строка характеризует отдельную точку. За координатами XYZ могут следовать буквенно-цифровые символы, но эта информация не перейдет в полученный класс пространственных объектов.
Файлы XYZI содержат координаты x, y, z и значения интенсивности. В случае выходных объектов-мультипатчей значения интенсивности хранятся в поле типа BLOB (большой двоичный объект).
Примечание:Если имеется файл ASCII в формате XYZI, но значения интенсивности из него не требуются, то выберите при чтении формат XYZ. В этом случае при чтении файлов значения интенсивности будут пропущены.
Формат GENERATE не поддерживает строки заголовка, но каждая точка с координатами 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
Примечание:Полигоны должны быть ориентированы по часовой стрелке, не иметь самопересечений и быть замкнутыми (т.е. последняя вершина должна быть равна первой). Если одно из этих условий не выполняется, в результате будут получены некорректные полигоны. Инструмент Проверка геометрии (Check Geometry) может использоваться для проверки корректности полученных пространственных объектов, а инструмент Восстановление геометрии (Repair Geometry) — для исправления ошибок.
Синтаксис
Параметр | Объяснение | Тип данных |
input [input,...] |
Файлы или папки с файлами кодировки ASCII, содержащие данные в формате XYZ, XYZI (с интенсивностью данных лазерного сканирования) или 3-D GENERATE. Если указана папка, то необходимо также задать параметр Суффикс файла (File Suffix), при этом будут использованы все файлы из папки, имеющие расширение, соответствующее заданному суффиксу. Если обрабатываются несколько файлов, они должны иметь один формат. | Folder; File |
in_file_type | String | |
out_feature_class |
Выходной класс объектов. | Feature Class |
out_geometry_type |
Тип геометрии выходного класса пространственных объектов.
| String |
z_factor (дополнительно) |
Коэффициент, на который будут умножаться значения высоты. Обычно он используется для преобразования линейных единиц измерения Z, соответствующих линейным единицам измерения XY. Значение по умолчанию равно 1, при нем значения высоты не изменяются. | Double |
input_coordinate_system (дополнительно) |
Система координат входных данных. По умолчанию используется Неизвестная система координат (Unknown 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)