Классифицировать шум LAS (3D Analyst)

Сводка

Классифицирует точки LAS с аномальными пространственными характеристиками как шум.

Использование

  • Точки шума в LAS обычно оказывают негативное влияние на визуализацию и анализ данных. Например, отраженные сигналы от высоко летящих птиц и рассеянных импульсов, которые столкнулись с облачным покровом, дымкой смога, водными объектами и отражающими зеркалами, может исказить z-диапазон точек, окружающих это местоположение. Определение таких точек, как шум, позволит отфильтровать их из отображения и исключить из любых производных данных, таких как поверхность рельефа, профиль уклона или экспозиции.

  • Метод Изоляция обработает данные LAS и переведет в разделенные на листы бины 3x3 на основе области, указанной в параметрах Ширина окрестности и Высота окрестности. Если число точек LAS в анализируемом массиве меньше, чем значение параметра Предел количества точек окрестности, то точки LAS будут признаны как шум. Ограничение количества точек должно отражать достаточно точную аппроксимацию на основании плотности точек лидара и количества точек LAS, которое ожидается в анализируемом объеме.

  • Если в некоторых возвращаемых точках LAS имеются аномально высокие или низкие z-значения для области, захваченной лидарной съемкой, рассмотрите возможность использования метода Абсолютная высота для определения предела z-значений данных, чтобы быстро идентифицировать точки выбросов как шум.

  • Если точки LAS имеют аномально высокие или низкие z-значения для определенных регионов, но эти значения попадают в диапазон допустимых измерений, захваченных в лидарной съемке, рассмотрите возможность использования метода Относительная высота для определения предельного z-значения допустимых данных на основе смещения от поверхности Земли. Для построения поверхности Земли отфильтруйте набор данных LAS по классифицированным точкам поверхности Земли и примените инструмент Набор данных LAS в растр.

  • Будут переклассифицированы только точки LAS со значениями кода класса 0 или 1. Если неклассифицированные точки представлены каким-то другим значением, примените инструмент Изменить коды классов LAS, чтобы назначить неклассифицированным точкам значение 1. Когда точки шума классифицируются и применяется метод Изоляция или Абсолютная высота, всем точкам шума будет назначено значение кода класса 7. Если выполняется метод Относительная высота, точки шума, которые ниже предела Минимальная высота получат значение 7, которое означает Низкий шум, а точки выше предельного значения Максимальная высота приобретут значение 18, которым отмечается Высокий шум.

  • Если вы не знаете, какие параметры использовать для определения точек шума, рассмотрите возможность экспорта точек LAS, определенных как шум, в точечный объект при отключенной опции изменения кодов классификации LAS. Если выходные точки соответствуют ожидаемым результатам, вы можете выполнить переклассификацию точек LAS, используя эти объекты с помощью инструмента Расположить точки LAS по близости.

  • Метод Изоляция выполняется с высокой производительностью, и работает ещё быстрее, если заданы большие размеры бинов. Укажите самый максимальный допустимый размер бинов в зависимости от природы и распределения данных.

Синтаксис

arcpy.3d.ClassifyLasNoise(in_las_dataset, method, edit_las, withheld, {compute_stats}, ground, low_z, high_z, max_neighbors, step_width, step_height, {extent}, {process_entire_files}, {out_feature_class})
ParameterОбъяснениеТип данных
in_las_dataset

Обрабатываемый набор данных LAS.

LAS Dataset Layer
method

Метод выявления шума, который будет использоваться.

  • ISOLATIONПространственная близость точек LAS будет проанализирована в объеме каждого листа для выявления шума в измерениях наряду с обнаружением шума по высоте. Это значение по умолчанию.
  • RELATIVE_HEIGHTВсе точки ниже указанной минимальной высоты и выше максимальной высоты, измеряемых от поверхности Земли, будут идентифицированы как шум.
  • ABSOLUTE_HEIGHTВсе точки ниже указанной минимальной высоты и выше максимальной высоты по отношению к среднему уровню моря будут определены как шум.
String
edit_las

Указывает, будут ли переклассифицироваться точки LAS, идентифицированные как шум.

  • CLASSIFYТочки шума будут заново классифицироваться. Это значение по умолчанию.
  • NO_CLASSIFYТочки шума не будут классифицироваться.
Boolean
withheld

Указывает, будет ли точкам шума назначен флаг классификации Исключенная. Эта опция работает, только если параметр edit_las задан как CLASSIFY.

  • WITHHELDТочкам шума будет назначен флаг классификации Исключенная.
  • NO_WITHHELDТочкам шума не будет назначен флаг классификации Исключенная. Это значение по умолчанию.
Boolean
compute_stats
(Дополнительный)

Определяет, следует ли вычислять статистику для файлов LAS, на которые ссылается набор данных LAS. Вычисление статистики определяет пространственный индекс для каждого файла LAS, что улучшает производительность анализа и отображения. Статистика также улучшает фильтрацию и символы, ограничивая отображение таких атрибутов LAS, как коды классификации и возвращаемая информация, значениями, которые присутствуют в файле LAS.

  • COMPUTE_STATSСтатистика будет рассчитана.
  • NO_COMPUTE_STATSСтатистика не будет рассчитана. Используется по умолчанию.
Boolean
ground

Поверхность Земли, используемая для определения относительной высоты.

Raster Layer
low_z

Высота, определяющая наименьший предел z-значения для определения точек шума. Любые точки ниже указанного значения будут классифицированы как шум. Если задана поверхность Земли, то этот предел будет основан на смещении от поверхности Земли таким образом, что значение "-3 фута" означает, что любые точки, которые находятся на 3 фута ниже поверхности Земли, будут классифицироваться как шум.

Linear Unit
high_z

Высота, определяющая самое высокое пороговое z-значение для определения точек шума. Любые точки выше указанного значения будут классифицированы как шум. Если поверхность Земли задана, этот предел будет основан на смещении от поверхности Земли таким образом, что значение "250 метров" означает, что любые точки, которые выше 250 метров над поверхностью Земли, будут классифицироваться как шум.

Linear Unit
max_neighbors

Максимальное количество точек внутри анализируемого объема данных, которые можно квалифицировать как шум при использовании метода Изоляция. Если анализируемый объем содержит любое количество точек LAS, которое меньше или равно данному значению, эти точки будут классифицированы как шум.

Long
step_width

Размер каждого измерения в пространстве XY анализируемого объема данных при использовании метода Изоляция.

Linear Unit
step_height

Высота анализируемого объема при использовании метода Изоляция.

Linear Unit
extent
(Дополнительный)

Указывает экстент данных, который будет обработан этим инструментом.

  • MAXOF - будет использоваться максимальный экстент всех входных данных.
  • MINOF - будет использоваться минимальная область, общая для всех входных данных.
  • DISPLAY– экстент будет равен видимому отображению.
  • Имя слоя - будет использоваться тот же экстент, что и в указанном слое.
  • Объект Extent - будет использоваться тот же экстент, что и в указанном объекте.
  • Строка координат, разделенных пробелами – будет использоваться экстент из заданной строки. Координаты должны быть выражены в таком порядке: x-min, y-min, x-max, y-max.
Extent
process_entire_files
(Дополнительный)

Указывает, как применяется экстент обработки.

  • PROCESS_EXTENTБудут обработаны только те точки LAS, что пересекают область интереса. Используется по умолчанию.
  • PROCESS_ENTIRE_FILESЕсли какая-либо часть файла LAS пересекает область интереса, будут обработаны все точки файла LAS, включая те, что находятся вне области интереса.
Boolean
out_feature_class
(Дополнительный)

Выходные точечные объекты, представляющие точки LAS, идентифицированные как шум.

Feature Class

Производные выходные данные

NameОбъяснениеТип данных
out_las_dataset

Набор данных LAS, который будет изменен.

Слой набора данных LAS

Пример кода

ClassifyLasNoise, пример 1 (окно Python)

В следующем примере показано использование этого инструмента в окне Python.

arcpy.env.workspace = 'C:/data'

arcpy.ddd.ClassifyLasNoise('Denver_2.lasd', "ABSOLUTE_HEIGHT", 
                           edit_las='CLASSIFY', withheld='WITHHELD', 
                           high_z='450 Feet')
ClassifyLasNoise, пример 2 (автономный скрипт)

В следующем примере показано использование этого инструмента в автономном скрипте Python.

'''****************************************************************************
       Name: Classify Lidar & Extract Building Footprints
Description: Extract footprint from lidar points classified as buildings, 
             regularize its geometry, and calculate the building height.

****************************************************************************'''
import arcpy

lasd = arcpy.GetParameterAsText(0)
dem = arcpy.GetParameterAsText(1)
footprint = arcpy.GetParameterAsText(2)

try:
    desc = arcpy.Describe(lasd)
    if desc.spatialReference.linearUnitName in ['Foot_US', 'Foot']:
        unit = 'Feet'
    else:
        unit = 'Meters'
    ptSpacing = desc.pointSpacing * 2.25
    sampling = '{0} {1}'.format(ptSpacing, unit)
    # Classify overlap points
    arcpy.ddd.ClassifyLASOverlap(lasd, sampling)
    # Classify ground points
    arcpy.ddd.ClassifyLasGround(lasd)
    # Filter for ground points
    arcpy.management.MakeLasDatasetLayer(lasd, 'ground', class_code=[2])
    # Generate DEM
    arcpy.conversion.LasDatasetToRaster('ground', dem, 'ELEVATION', 
                                        'BINNING NEAREST NATURAL_NEIGHBOR', 
                                        sampling_type='CELLSIZE', 
                                        sampling_value=desc.pointSpacing)
    # Classify noise points
    arcpy.ddd.ClassifyLasNoise(lasd, method='ISOLATION', edit_las='CLASSIFY', 
                               withheld='WITHHELD', ground=dem, 
                               low_z='-2 feet', high_z='300 feet', 
                               max_neighbors=ptSpacing, step_width=ptSpacing, 
                               step_height='10 feet')
    # Classify buildings
    arcpy.ddd.ClassifyLasBuilding(lasd, '7.5 feet', '80 Square Feet')
    #Classify vegetation
    arcpy.ddd.ClassifyLasByHeight(lasd, 'GROUND', [8, 20, 55], 
                                  compute_stats='COMPUTE_STATS')
    # Filter LAS dataset for building points
    lasd_layer = 'building points'
    arcpy.management.MakeLasDatasetLayer(lasd, lasd_layer, class_code=[6])
    # Export raster from lidar using only building points
    temp_raster = 'in_memory/bldg_raster'
    arcpy.management.LasPointStatsAsRaster(lasd_layer, temp_raster,
                                           'PREDOMINANT_CLASS', 'CELLSIZE', 2.5)
    # Convert building raster to polygon
    temp_footprint = 'in_memory/footprint'
    arcpy.conversion.RasterToPolygon(temp_raster, temp_footprint)
    # Regularize building footprints
    arcpy.ddd.RegularizeBuildingFootprint(temp_footprint, footprint, 
                                          method='RIGHT_ANGLES')

except arcpy.ExecuteError:
    print(arcpy.GetMessages())

Информация о лицензиях

  • Basic: Требуется 3D Analyst
  • Standard: Требуется 3D Analyst
  • Advanced: Требуется 3D Analyst

Связанные разделы