Alat pengolah LiDAR apa yang tersedia dalam Python?


22

Saya telah menggunakan FUSION dan baris perintah FUSION Lidar Toolkit (LTK) untuk memproses data LiDAR. Pencarian Google yang luas ("Lidar Python") menghasilkan libLAS dan pyLAS sebagai pustaka Python LiDAR, namun, ini tampaknya hanya menyediakan akses baca dan tulis ke data LAS.

Saya terutama tertarik untuk membuat gambar intensitas dan kerapatan selain model permukaan kanopi dari awan titik. Apakah ada seperangkat alat yang diterima secara umum dalam Python yang dapat menyelesaikan jenis tugas yang sama dengan FUSION LTK?


1
Ini bukan jawaban langsung untuk pertanyaan Anda, tetapi karena saya telah bekerja pada perangkat lunak Python untuk rekonstruksi pohon botani dari data cloud point yang diperoleh LIDAR, mungkin tumpukan teknologi yang saya gunakan dapat memberi Anda beberapa ide. Secara khusus, lapisan visualisasi dibangun menggunakan VTK, yang sangat kuat.
cjauvin

ArcMap 10.1 memiliki kemampuan untuk menangani filter Lidar Datacloud untuk tampilan dan analisis dengan lapisan lain. C ++ mungkin adalah metode terbaik untuk menangani file .las yang kaya data seperti yang disarankan di atas.

Saya tidak melihat bagaimana jawaban ini adalah pertanyaan OP. Dia ingin alat dengan Python. Jika Anda menyarankan C ++, Anda harus mencadangkan klaim itu dengan alasan terperinci.
Devdatta Tengshe

Jawaban:


13

laspy adalah software baca / tulis LAS yang bagus. Ini mendukung bekerja dengan data secara langsung dalam array numpy dan sejumlah fitur Pythonic bagus lainnya. Namun, itu bukan pemrosesan perangkat lunak.

PDAL memiliki kemampuan untuk menggunakan Python sebagai bahasa pemfilteran dalam-pipa, tetapi ini juga bukan mesin pemroses.

Tidak ada terlalu banyak dalam quiver Python untuk LiDAR dan titik pemrosesan cloud. Saya pikir beberapa ini ada hubungannya dengan volume data yang biasanya diproses dan respons khas untuk meraih C / C ++ ketika dihadapkan dengan tantangan. Saya berharap bahwa seiring dengan membaiknya Python (PyPy menggerakkan banyak hal, dan itulah alasan saya bekerja untuk mengembangkan laspy) semakin banyak perangkat lunak pengolah cloud titik Python menjadi tersedia. Saya pikir prospeknya membaik tetapi masih ada beberapa hal yang belum.


7

Saya baru-baru ini merilis perpustakaan open-source (MIT) yang berdiri sendiri (yaitu tidak ada dependensi) yang disebut WhiteboxTools untuk melakukan banyak jenis analisis geospasial, termasuk pemrosesan data LiDAR. Perpustakaan ditulis dalam Rust dan memiliki dukungan luas untuk skrip berbasis Python . Sebagai contoh, skrip Python berikut menggunakan pustaka WhiteboxTools untuk mengisi data warna RGB dari titik-titik LiDAR dalam file LAS:

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) 

Alat pemrosesan LiDAR khusus untuk WhiteboxTools meliputi fungsi-fungsi berikut:

  • BlockMaximum: Membuat raster maksimum blok dari file input LAS.
  • BlockMinimum: Membuat raster minimum blok dari file input LAS.
  • FilterLidarScanAngles: Menghapus titik dalam file LAS dengan sudut pindai lebih besar dari ambang.
  • FindFlightlineEdgePoints: Mengidentifikasi poin di sepanjang tepi flightline dalam file LAS.
  • FlightlineOverlap: Membaca file titik LiDAR (LAS) dan menampilkan raster yang berisi jumlah jalur penerbangan yang tumpang tindih di setiap sel kisi.
  • LidarElevationSlice: Outputs semua poin dalam file poin LiDAR (LAS) yang terletak di antara rentang ketinggian yang ditentukan.
  • LasToAscii: Mengubah satu atau lebih file LAS menjadi file teks ASCII.
  • LidarColourize: Menambahkan bidang warna merah-hijau-biru pada file LiDAR (LAS) berdasarkan gambar input.
  • LidarGroundPointFilter: Mengidentifikasi titik-titik dasar dalam dataset LiDAR.
  • LidarIdwInterpolation: Interpolasi file LAS menggunakan skema weighted-distance weighted (IDW).
  • LidarHillshade: Menghitung nilai hillshade untuk poin dalam file LAS dan menyimpan data ini di bidang RGB.
  • LidarHistogram: Membuat histogram dari data LiDAR.
  • LidarInfo: Mencetak informasi tentang dataset LiDAR (LAS), termasuk header, frekuensi titik balik, dan data klasifikasi serta informasi tentang catatan panjang variabel (VLR) dan geokeys.
  • LidarJoin: Menggabungkan beberapa file LiDAR (LAS) menjadi satu file LAS.
  • LidarKappaIndex: Melakukan analisis indeks perjanjian Kappa (KIA) pada klasifikasi dua file LAS.
  • LidarNearestNeighbourGridding: Kisi file LAS menggunakan skema tetangga terdekat.
  • LidarPointDensity: Menghitung pola kerapatan titik spasial untuk kumpulan data LiDAR.
  • LidarPointStats: Membuat beberapa raster yang merangkum distribusi data titik LAS.
  • LidarRemoveDuplicates: Menghapus titik duplikat dari kumpulan data LiDAR.
  • LidarRemoveOutliers: Menghapus outlier (titik tinggi dan rendah) di awan titik LiDAR.
  • LidarSegmentation: Mengelompokkan awan titik LiDAR berdasarkan vektor normal.
  • LidarSegmentationBasedFilter: Mengidentifikasi titik tanah dalam awan titik LiDAR menggunakan pendekatan berbasis segmentasi.
  • LidarTile: Memasang file LiDAR LAS ke beberapa file LAS.
  • LidarTophatTransform: Melakukan transformasi top-hat putih pada dataset Lidar; sebagai perkiraan ketinggian di atas tanah, ini berguna untuk memodelkan kanopi vegetasi.
  • NormalVectors: Menghitung vektor normal untuk titik-titik dalam file LAS dan menyimpan data ini (komponen vektor XYZ) di bidang RGB.

Selain itu, ada banyak alat untuk memproses DEM yang diinterpolasi dari data sumber LiDAR (misalnya denoising pengawet fitur, penegakan hidro, dll). Detail dapat ditemukan di Manual Pengguna . Kode sumber dapat ditemukan di sini , dan binari yang dikompilasi ada di situs web Geomorfometri dan Hydrogeomatics, di sini .


Wow! Menanti untuk menguji alat-alat ini.
Aaron

Saya harap ini berhasil untuk Anda. Kirimkan email kepada saya jika Anda memiliki pertanyaan.
WhiteboxDev

Saya menganggap LidarPointStats mirip dengan FUSION GridMetrics? Apakah ada dokumentasi di mana metrik grid dibuat saat menggunakan LidarPointStats?
Aaron

@ Harun Saya tidak terlalu yakin tentang alat FUSION karena saya tidak pernah menggunakan perangkat lunak, tetapi alat ini menampilkan yang berikut: num_points, num_pulses, z_range, intensity_range, predom_class. Detailnya dapat ditemukan di sini ( github.com/jblindsay/whitebox-geospatial-analysis-tools/blob/… ) dan juga dalam manual pengguna.
WhiteboxDev

@ Harun Saya mungkin juga harus mengklarifikasi bahwa alat alat lidar_point_stats melaporkan masing-masing statistik berdasarkan sel per sel. Artinya, ada raster yang dihasilkan untuk setiap statistik yang ditentukan pengguna sebagai output yang diinginkan. Sebagai contoh: lidar_point_stats ('input.las', resolusi = 1.0, num_points = Benar, num_pulses = Benar)
WhiteboxDev

2

Meskipun bukan semata-mata perpustakaan 'Python' tetapi lebih dari satu set pembungkus untuk alat-alat lain, khususnya GRASS, ada 'ARSF DEM Scripts' yang telah saya tulis:

https://github.com/pmlrsg/arsf_dem_scripts

Salah satu tujuannya adalah untuk menyediakan seperangkat fungsi Python umum untuk alat baris perintah yang berbeda (disebut menggunakan subproses) dengan methodbendera yang digunakan untuk menentukan alat.

Contoh penggunaan untuk menghasilkan DSM, intensitas dan kepadatan gambar adalah:

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)

Ada beberapa alat pengolah LiDAR yang tersedia melalui pembungkus GRASS Python yang juga bisa digunakan sebagai pengganti / sebagai tambahan dari apa yang tersedia arsf_dem.


2

pylidaradalah seperangkat modul Python yang relatif baru untuk pemrosesan LiDAR. Ini didasarkan pada SPDLib dan RIOS dan menggunakan numpy.

Ini tersedia untuk diunduh dari sini



Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.