Python에서 어떤 LiDAR 처리 도구를 사용할 수 있습니까?


22

I가 사용하고 FUSION 및 라이다 데이터를 처리하는 명령 행 FUSION은 Lidar 툴킷 (LTK 참조). 광범위한 Google 검색 ( "Lidar Python")은 libLASpyLAS 를 Python LiDAR 라이브러리로 생성했지만 LAS 데이터에 대한 읽기 및 쓰기 액세스 만 제공하는 것으로 보입니다.

특히 포인트 클라우드의 캐노피 표면 모델 외에도 강도 및 밀도 이미지를 만드는 데 관심이 있습니다. FUSION LTK가 수행 할 수있는 것과 같은 종류의 작업을 수행 할 수있는 일반적으로 인정되는 툴 집합이 파이썬에 있습니까?


1
귀하의 질문에 대한 직접적인 대답은 아니지만 LIDAR이 획득 한 포인트 클라우드 데이터에서 식물 나무를 재구성하기 위해 Python 소프트웨어 를 연구하면서 내가 사용했던 기술 스택이 몇 가지 아이디어를 줄 수 있습니다. 특히 시각화 레이어는 VTK를 사용하여 구축되며 매우 강력합니다.
cjauvin

ArcMap 10.1에는 다른 레이어와 함께 표시 및 분석하기 위해 Lidar Datacloud 필터를 처리 할 수있는 기능이 있습니다. C ++는 위에서 권장 한대로 데이터가 풍부한 .las 파일을 처리하는 가장 좋은 방법 일 것입니다.

이 답변이 OP의 질문인지 어떻게 알지 못합니다. 그는 파이썬 도구를 원합니다. C ++을 제안하는 경우 자세한 이유를 가지고 해당 주장을 백업해야합니다.
Devdatta Tengshe

답변:


13

laspy 는 또 다른 좋은 LAS 읽기 / 쓰기 소프트웨어입니다. 그것은 numpy 배열과 다른 많은 훌륭한 Pythonic 기능에서 직접 데이터 작업을 지원합니다. 그러나 소프트웨어 자체는 처리하지 않습니다.

PDAL 에는 파이프 라인 필터링 언어로 Python을 사용할 수있는 기능이 있지만 이는 처리 엔진이 아닙니다.

LiDAR 및 포인트 클라우드 처리를위한 Python quiver에는 그다지 많지 않습니다. 이 중 일부는 일반적으로 처리되는 데이터의 양과 도전에 직면했을 때 C / C ++에 도달하는 일반적인 응답과 관련이 있다고 생각합니다. 파이썬이 향상됨에 따라 (PyPy가 많은 것을 주도하고 있기 때문에 Laspy가 개발 된 이유입니다) 더 많은 Python 포인트 클라우드 처리 소프트웨어가 제공되기를 바랍니다. 나는 전망이 개선되고 있지만 아직 상황이 아직 멀지 않다고 생각합니다.


7

최근 에는 LiDAR 데이터 처리를 포함하여 여러 유형의 지리 공간 분석을 수행하기 위해 WhiteboxTools 라는 오픈 소스 (MIT) 독립형 (즉, 종속성 없음) 라이브러리를 출시했습니다 . 라이브러리는 Rust로 작성되었으며 Python 기반 스크립팅 을 광범위하게 지원합니다 . 예를 들어 다음 Python 스크립트는 WhiteboxTools 라이브러리를 사용하여 LAS 파일에서 LiDAR 포인트의 RGB 색상 데이터를 채 웁니다.

from whitebox_tools import WhiteboxTools

wbt = WhiteboxTools()
wbt.work_dir = "/path/to/data/"
in_lidar = "lidar_data.las"
in_image = "airphoto.tif"
out_lidar = "colourized_lidar.las"
wbt.lidar_colourize(in_lidar, in_image, out_lidar) 

WhiteboxTools의 LiDAR 특정 처리 도구에는 다음 기능이 포함됩니다.

  • BlockMaximum : 입력 LAS 파일에서 블록 최대 래스터를 만듭니다.
  • BlockMinimum : 입력 LAS 파일에서 블록 최소 래스터를 만듭니다.
  • FilterLidarScanAngles : 스캔 각도가 임계 값보다 큰 LAS 파일의 포인트를 제거합니다.
  • FindFlightlineEdgePoints : LAS 파일에서 비행선 가장자리를 따라 점을 식별합니다.
  • FlightlineOverlap : LiDAR (LAS) 포인트 파일을 읽고 각 그리드 셀에서 겹치는 비행선 수를 포함하는 래스터를 출력합니다.
  • LidarElevationSlice : 지정된 고도 범위 사이에있는 LiDAR (LAS) 점 파일 내의 모든 점을 출력합니다.
  • LasToAscii : 하나 이상의 LAS 파일을 ASCII 텍스트 파일로 변환합니다.
  • LidarColourize : 입력 이미지를 기반으로 LiDAR (LAS) 파일의 빨강-녹색-청색 필드를 추가합니다.
  • LidarGroundPointFilter : LiDAR 데이터 세트 내에서 접지점을 식별합니다.
  • LidarIdwInterpolation : IDW (역 거리 가중) 방식을 사용하여 LAS 파일을 보간합니다.
  • LidarHillshade : LAS 파일 내의 포인트에 대한 힐 셰이드 값을 계산하고 이러한 데이터를 RGB 필드에 저장합니다.
  • LidarHistogram : LiDAR 데이터에서 히스토그램을 만듭니다.
  • LidarInfo : 헤더, 포인트 리턴 주파수 및 분류 데이터를 포함한 LiDAR (LAS) 데이터 세트에 대한 정보와 VLR (가변 길이 레코드) 및 지오 키에 대한 정보를 인쇄합니다.
  • LidarJoin : 여러 LiDAR (LAS) 파일을 단일 LAS 파일로 결합합니다.
  • LidarKappaIndex : 두 LAS 파일의 분류에 대한 KPA (kappa index of agreement) 분석을 수행합니다.
  • LidarNearestNeighbourGridding : 가장 가까운 이웃 체계를 사용하여 LAS 파일을 그리드합니다.
  • LidarPointDensity : LiDAR 데이터 세트에 대한 점 밀도의 공간 패턴을 계산합니다.
  • LidarPointStats : LAS 점 데이터의 분포를 요약 한 여러 래스터를 만듭니다.
  • LidarRemoveDuplicates : LiDAR 데이터 세트에서 중복 포인트를 제거합니다.
  • LidarRemoveOutliers : LiDAR 점 구름에서 특이 치 (높은 점 및 낮은 점)를 제거합니다.
  • LidarSegmentation : 법선 벡터를 기반으로 LiDAR 점 구름을 분할합니다.
  • LidarSegmentationBasedFilter : 세그먼트 기반 접근 방식을 사용하여 LiDAR 점 구름 내 기준점을 식별합니다.
  • LidarTile : LiDAR LAS 파일을 여러 LAS 파일로 바둑판 식으로 배열합니다.
  • LidarTophatTransform : Lidar 데이터 세트에서 흰색 탑햇 변환을 수행합니다. 지상 높이의 추정치로서, 이것은 식물 캐노피를 모델링하는데 유용하다.
  • 법선 벡터 : LAS 파일 내의 점에 대한 법선 벡터를 계산하고 이러한 데이터 (XYZ 벡터 구성 요소)를 RGB 필드에 저장합니다.

또한 LiDAR 소스 데이터에서 보간되는 DEM을 처리하기위한 수많은 도구가 있습니다 (예 : 기능 보존 노이즈 제거, 유압 강제 적용 등). 자세한 내용은 사용 설명서를 참조하십시오 . 소스 코드는 여기 에서 찾을 수 있으며 컴파일 된 바이너리는 Geomorphometry and Hydrogeomatics 웹 사이트 ( 여기)에 있습니다 .


와우! 이러한 도구를 테스트하기를 기대합니다.
Aaron

나는 그것이 당신을 위해 일하기를 바랍니다. 질문이 있으시면 저에게 이메일을 보내주십시오.
WhiteboxDev

LidarPointStats가 FUSION과 비슷하다고 가정합니다 GridMetrics. LidarPointStats를 사용할 때 그리드 메트릭이 작성되는 문서가 있습니까?
Aaron

@Aaron 나는 소프트웨어를 사용한 적이 없기 때문에 FUSION의 도구에 대해 너무 확신하지 못하지만이 도구는 num_points, num_pulses, z_range, intensity_range, predom_class를 출력합니다. 자세한 내용은 여기 ( github.com/jblindsay/whitebox-geospatial-analysis-tools/blob/… )와 사용자 설명서에서 찾을 수 있습니다 .
WhiteboxDev

@Aaron 아마 lidar_point_stats 도구 도구가 각 통계를 셀 단위로보고하고 있음을 분명히했을 것입니다. 즉, 사용자가 원하는 출력으로 지정하는 각 통계에 대해 생성 된 래스터가 있습니다. lidar_point_stats ( 'input.las', 해상도 = 1.0, NUM_POINTS = 사실, num_pulses = 참) : 예를 들어
WhiteboxDev

2

엄격하게 'Python'라이브러리가 아니라 다른 도구, 특히 GRASS 용 래퍼 세트이지만 필자가 작성한 'ARSF DEM Scripts'가 있습니다.

https://github.com/pmlrsg/arsf_dem_scripts

목표 중 하나는 도구 method를 지정하는 데 사용되는 플래그 와 함께 다른 명령 줄 도구 (하위 프로세스 사용)에 대한 일반적인 Python 함수 세트를 제공하는 것입니다 .

DSM, 강도 및 밀도 이미지를 생성하는 사용 예는 다음과 같습니다.

from arsf_dem import dem_lidar

# DSM image (GRASS, points2grid, SPDLib, FUSION or licensed LAStools)
dem_lidar.las_to_dsm('in_las.las', 'out_dsm.tif',
                      method='points2grid')

# Intensity image (GRASS or licensed version of LAStools)
dem_lidar.las_to_intensity('in_las.las', 'out_intensity.tif',
                           method='GRASS')

# Density image (GRASS only)
dem_lidar.grass_lidar.las_to_density('in_las.las', 'out_density.tif',
                                     bin_size=10)

GRASS Python 래퍼를 통해 사용할 수있는 LiDAR 처리 도구는 상당히 많으며,이 도구를 통해 사용 가능한 도구 외에 / 대신 사용할 수도 있습니다 arsf_dem.




당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.