Краткая информация
Извлекает файлы LAS или ZLAS, которые пересекаются с вырезающим полигоном или экстентом.
Иллюстрация
Использование
-
Если набор данных LAS указан в качестве входных данных, будут обработаны все точки данных в LAS-файлах, на которые он ссылается. Также можно выбрать поднабор данных лидара по кодам классификации, флагам классификации и значениям отраженного сигнала, применив фильтры точек LAS к слою набора данных LAS. Фильтры можно ввести в диалоговом окне свойств слоя или с помощью инструмента Создать слой набора данных LAS.
Используйте этот инструмент для извлечения поднабора данных лидара, захваченных в исходных файлах данных лидара. Например, если вам необходимо работать только с областью, заданной границей полигона, вы можете извлечь файл LAS, используя полигон как ограничивающий объект.
Для перепроецирования файлов LAS укажите правильную пространственную привязку в Параметре среды Выходная система координат.
Если экстент извлечения задан вместе с границей извлечения, их пересечение будет использоваться для задания покрытия извлекаемых файлов LAS.
Обычно записи точек LAS не хранятся в файле LAS в виде бинарной последовательности, которая не соответствует пространственной кластеризации точек. Когда происходит запрос к данным с таким распределением, в результате доступ к бинарным записям, представляющим точки LAS будет не эффективным. Переорганизация точек в полученном файле LAS оптимизирует данные для визуализации и выполнения других пространственных операций. Если включена опция переорганизации автоматически будет вычисляться статистика. Если вы выберите не переорганизовывать точки LAS, то вы можете включить или отключить расчет статистики. Расчет статистики оптимизирует пространственные запросы и предоставляет сводную информацию о кодах класса, а также возвращает значения, которые представлены в файле LAS. Но это также добавляет некоторое время на выполнение инструмента. Если полученные в результате файлы LAS не будут использоваться в ArcGIS, вы можете отключить расчет статистики, чтобы инструмент выполнялся быстрее.
Синтаксис
ExtractLas_3d (in_las_dataset, target_folder, {extent}, {boundary}, {process_entire_files}, {name_suffix}, {remove_vlr}, {rearrange_points}, {compute_stats}, {out_las_dataset})
Параметр | Объяснение | Тип данных |
in_las_dataset | Обрабатываемый набор данных LAS. | LAS Dataset Layer |
target_folder | Папка, в которую будут записаны выходные файлы LAS. Каждый выходной файл будет иметь ту же версию файла LAS и формат записей, что и входной файл. | Folder |
extent (Дополнительный) | Указывает экстент данных, который будет обработан этим инструментом. | Extent |
boundary (Дополнительный) | Полигональная граница, определяющая местоположения, в которые будут извлекаться файлы LAS. | Feature Layer |
process_entire_files (Дополнительный) | Указывает, как применяется экстент обработки.
| Boolean |
name_suffix (Дополнительный) | Текст, который будет присоединен к имени каждого выходного файла LAS. Каждый файл сохраняет базовое имя из источника, к которому присоединяется суффикс, заданный этим параметром. | String |
remove_vlr (Дополнительный) | Определяет, удалять или сохранять в файле LAS дополнительные записи переменной длины.
| Boolean |
rearrange_points (Дополнительный) | Задает необходимость изменения порядка точек в файлах LAS.
| Boolean |
compute_stats (Дополнительный) | Определяет, следует ли вычислять статистику для файлов LAS, на которые ссылается набор данных LAS. Статистика позволяет использовать опции фильтрации и присвоения символов в слое набора данных LAS для ограничения отображения атрибутов LAS атрибутами, существующими в файлах LAS.
| Boolean |
out_las_dataset (Дополнительный) | Выходной набор данных LAS. | LAS Dataset |
Производные выходные данные
Name | Объяснение | Тип данных |
out_folder | Папка, в которую будут записаны выходные файлы LAS. |
Пример кода
ExtractLas, пример 1 (окно Python)
В следующем примере показано использование этого инструмента в окне Python.
import arcpy
from arcpy import env
env.workspace = 'C:/data'
arcpy.ddd.ExtractLas('test.lasd', 'c:/lidar/subset', boundary='study_area.shp',
name_suffix='subset', remove_vlr=True,
rearrange_points='REARRANGE_POINTS',
out_las_dataset='extracted_lidar.lasd')
ExtractLas, пример 2 (автономный скрипт)
В следующем примере показано использование этого инструмента в автономном скрипте Python.
'''****************************************************************************
Name: Split Large LAS File
Description: Divides a large LAS file whose point distribution covers the full
XY extent of the data into smaller files to optimize performance
when reading lidar data.
****************************************************************************'''
# Import system modules
import arcpy
import tempfile
import math
in_las_file = arcpy.GetParameterAsText(0)
tile_width = arcpy.GetParameter(1) # double in LAS file's XY linear unit
tile_height = arcpy.GetParameter(2) # double in LAS file's XY linear unit
out_folder = arcpy.GetParameterAsText(3) # folder for LAS files
out_name_suffix = arcpy.GetParameterAsText(4) # basename for output files
out_lasd = arcpy.GetParameterAsText(5) # output LAS dataset
try:
temp_lasd = arcpy.CreateUniqueName('temp.lasd', tempfile.gettempdir())
arcpy.management.CreateLasDataset(in_las_file, temp_lasd,
compute_stats='COMPUTE_STATS')
desc = arcpy.Describe(temp_lasd)
total_columns = int(math.ceil(desc.extent.width/tile_width))
total_rows = int(math.ceil(desc.extent.height/tile_height))
digits = int(math.log10(max(cols, rows))) + 1
for row in range(1, total_rows+1):
yMin = desc.extent.YMin + tile_height*(row-1)
yMax = desc.extent.YMin + tile_height*(row)
for col in range (1, total_columns+1):
xMin = desc.extent.XMin + tile_width*(col-1)
xMax = desc.extent.XMax + tile_width*(col)
name_suffix = '_{0}_{1}x{2}'.format(out_name_suffix,
str(row).zfill(digits),
str(col).zfill(digits))
arcpy.ddd.ExtractLas(temp_lasd, out_folder,
arcpy.Extent(xMin, yMin, xMax, yMax),
name_suffix=name_suffix,
rearrange_points='REARRANGE_POINTS',
compute_stats='COMPUTE_STATS')
arcpy.env.workspace = out_folder
arcpy.management.CreateLasDataset(arcpy.ListFiles('*{0}*.las'.format(out_name_suffix)),
out_lasd, compute_stats='COMPUTE_STATS',
relative_paths='RELATIVE_PATHS')
except arcpy.ExecuteError:
print(arcpy.GetMessages())
Параметры среды
Информация о лицензиях
- ArcGIS Desktop Basic: Требует 3D Analyst
- ArcGIS Desktop Standard: Требует 3D Analyst
- ArcGIS Desktop Advanced: Требует 3D Analyst