| Повече ▼

Изрязване на LAS данни с помощта на шейпфайл полигони и софтуер с отворен код?

Изрязване на LAS данни с помощта на шейпфайл полигони и софтуер с отворен код?


Опитвам се да изрежа или филтрирам lidar файлове (.las, .xyz), използвайки шейп файл, който съдържа множество полигони.

Има ли софтуер с отворен код, който може да извърши тази пространствена операция?

Моите .las файлове са огромни и трябва да кажа, че съм много нов в DEM данните и анализа, така че всяка помощ би била много добре дошла.


Подкрепям отговора на @Michal Mackiewicz (относно Fusion / LTK), така че се надявам този пример да ви помогне да го преодолеете.

Това еPolyCLipDataкоманда за синтаксис (вижте стр. 110 на ръководството):

PolyClipData [превключва] PolyFile OutputFile DataFile

Използвайте текстов редактор, за да напишете командата, преди да я стартирате (например NotePad ++). Запазете файла с разширение.bat(партиден файл). Не забравяйте да запазите файла, преди да го стартирате.

Да приемем, че имате:

  1. Fusion / LTK под C: устройство.
  2. файлът на шейпфайла (shapefile.shp) под C: shapefile
  3. набора от данни las (lasdata.las) под C: las

напишете следното:

c:  fusion  polyclipdata c:  shapefile  shapefile.shp c:  las  clipped_data.las c:  las  lasdata.las

използвайте превключвателямултифайлако искате файловете las, генерирани от полигони, да се съхраняват в отделни файлове. Например:

c:  fusion  polyclipdata / multifile c:  shapefile  shapefile.shp c:  las  clipped_data.las c:  las  lasdata.las

използвайформапревключете заедно смултифайлза да назовете вашите множество OutputFiles със стойности, вградени в една от dbf колоната на PolyFile. Например, ако искате да наименувате файловете с идентификационната информация (да предположим, че ID е в първата колона на шейпфайла). Пишете:

c:  fusion  polyclipdata / multifile / shape: 1, * c:  shapefile  shapefile.shp c:  las  clipped_data.las c:  las  lasdata.las

За изрязване на las файлове, използвайкиPolyClipDataс множество еднофайлови шейпфайлове вижте следната публикация:
Изрязване на LAS данни с множество шейпфайлове

За изрязване на множество las файлове, като ги вградите в .txt файл като параметър на datafile заPolyClipData, вижте следната публикация:
Изрежете множество данни .las файлове в многоъгълник шейпфайл с помощта на FUSION

За изрязване на множество las файлове с шейпфайлове с помощта на lastools (сLAStools Производствокутия с инструменти) вижте следната публикация:
Изрязване от наборен набор от данни на LAS с LASTools (за ArcGIS)


FUSION LiDAR Toolkit има възможности за изрязване (инструмент PolyClipData) и за разлика от LASTools, използването му е неограничено. Въпреки това, въпреки факта, че съществува някакво хранилище на SVN в SourceForge, публикуваният изходен код е непълен и много стар. Ако можете да продължите, без да знаете кода и просто да използвате компилирания двоичен файл, тогава FUSION трябва да се оправи за тази задача.


WhiteboxTools могат да отрязват LAS файл на множество полигони, съдържащи се в Shapefile, използвайкиClipLidarToPolygonинструмент. Използвайки Python скриптове, можете да използвате инструмента, както следва:

от WBT.whitebox_tools импортиране на WhiteboxTools wbt = WhiteboxTools () wbt.work_dir = "/ path / to / data /" wbt.clip_lidar_to_polygon (i = "input.las", polygons = "polygons.shp", ouput = "ouput.las ")

Или, ако предпочитате GUI, можете да използвате приставката, базирана на QGIS, или WhiteboxTools Runner, която се разпространява (wb_runner.py) с двоичното изтегляне на библиотеката:


Различни различни задачи за филтриране обикновено се прилагат към наборите от данни на LiDAR (филтриране по плътност на точките, нисък проход, филтриране на растителността, задачи за изглаждане и т.н.). Както питате за пространствена операция (включващ шейпфайл), предполагам, че търсите начин да изрежете вашия набор от данни, т.е. изключва точки, които са извън границите на многоъгълник, определени от шейпфайл.

Като цяло LAStools е мощен пакет за точкова обработка на данни. Това е набор от инструменти за команден ред, но също така носи прост графичен интерфейс и се интегрира с QGIS (и между другото ArcGIS). Можете свободно да изтегляте и оценявате инструментариума - но само части от него са с отворен код (лиценз LGPL 2.1) - частите с затворен код изискват лицензиране в зависимост от вашата цел. Трябва да проверите какви условия се прилагат за вас.

Използвайте lasclip от LASTools (с затворен код, проверете лицензирането)

Един от инструментите с затворен код, lasclip, точно изпълнява a clip-by-shapefile задача:

lasclip: взема като вход LAS / LAZ / TXT файл и SHP / TXT файл с един или много полигони (например изграждане на отпечатъци), отрязва всички точки, които попадат извън всички полигони (или вътре в някои полигони), и съхранява оцелелите точки в изходният файл LAS / LAZ / TXT.

Употребата е ясна:

lasclip -i input_file.las -poly polygons.shp -o output_file.las -verbose

(проверете lasclip README за допълнителни подробности при използване, повече примери и изисквания за шейпфайл)

Използвайте las2las от LASTools (с отворен код; само основни задачи за изрязване)

Ако софтуерът с затворен код не е опция: las2las инструмент може изпълнявайте и прости задачи за изрязване - обаче не можете да клипнете към дефиниран от шейпфайл полигон. Можете да отрязвате по правоъгълници, кръгове, кота, ъгъл на сканиране, класификация или качество на данните например. (Вижте README за примери за употреба и подробности.)
За съжаление не ми е известен инструмент с отворен код, който да се равнява на функционалността на lasclip.

Използвайте libLAS за достъп до LAS файлове в самоделен скрипт

LASTools се базират на библиотеката libLAS с лиценз BSD с лиценз BSD. Можете да използвате libLAS за достъп до вашите LAS файлове и да ги филтрирате с персонализиран скрипт, напр. използване на Python.

Разбира се, има и други възможности, ако промените процеса на обработка (например конвертиране на LAS в растер и клип по-късно), но мисля, че най-удобният начин е да продължите да работите с LAS възможно най-дълго и да извършите цялото филтриране с данните в облака на точки себе си.


Написал съм поетапен урок за PDAL, който демонстрира как да се направи тази задача в тази среда. Моля, вижте ръководството за изрязване на PDAL за повече информация.