Краткая информация
Извлекает файлы LAS, которые перекрываются вырезающими объектами или экстентом.
Иллюстрация
Использование
-
Если набор данных LAS указан в качестве входных данных, будут обработаны все точки данных в LAS-файлах, на которые он ссылается. Выбрать поднабор данных лидара также можно по кодам классификации, флагам классификации и возвращаемым значениям, применив фильтры точек LAS на слое набора данных LAS. Фильтры можно ввести в диалоговом окне свойств слоя или с помощью инструмента Создать слой набора данных LAS.
Используйте этот инструмент для извлечения поднабора данных лидара, захваченных в исходных файлах данных лидара. Например, если вам необходимо работать только с областью, заданной границей полигона, вы можете извлечь файл LAS, используя полигон как ограничивающий объект.
Для перепроецирования файлов LAS укажите Выходную систему координат в Параметрах среды. Если обработанные файлы LAS не имеют определенной пространственной привязки, извлеченные файлы LAS унаследуют указанную проекцию.
Если экстент извлечения задан вместе с границей извлечения, их пересечение будет использоваться для задания покрытия извлекаемых файлов LAS.
Параметр Изменить порядок точек, если отмечен, (rearrange_points = 'REARRANGE_POINTS' в Python), упорядочивает записи точек в пространственные кластеры, оптимизированные для чтения файлов. Такая оптимизация существенно улучшает отображение на платформе 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 |
Пример кода
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