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?

Harun
sumber
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.

Howard Butler
sumber
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 .

WhiteboxDev
sumber
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.

danclewley
sumber
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

dmci
sumber
2

Mulai bermain-main dengan alat yang ditemukan di sini. Sudah cukup berguna. https://github.com/brycefrank/pyfor

bw4sz
sumber
Tautan luar biasa! Saya sangat menantikan untuk bermain dengan metrik kotak.
Aaron
1

Jika Anda melihat kode sumber dari toolbox QGIS untuk LAStools (sekarang bagian dari kerangka pengolahan Plugin) Anda dapat melihat bagaimana memanggil perangkat lunak eksternal (di sini LAStools ) untuk melaksanakan operasi pemrosesan LIDAR.

LAStools
sumber