Python'da hangi LiDAR işleme araçları bulunuyor?


22

LiDAR verilerini işlemek için FUSION ve FUSION Lidar Toolkit (LTK) komut satırını kullanıyorum . Geniş bir Google araması ("Lidar Python"), Python LiDAR kitaplıkları olarak libLAS ve pyLAS'ı sağladı , ancak bunlar, LAS verilerine yalnızca okuma ve yazma erişimi sağladı.

Özellikle nokta bulutlarından gölgelik yüzey modellerine ek olarak yoğunluk ve yoğunluk görüntüleri oluşturmakla da ilgileniyorum. Python'da, FUSION LTK'nın yapabileceği aynı görevleri yerine getirebilecek genel bir araç seti var mı?


1
Sorunuza doğrudan bir cevap değil, ancak LIDAR tarafından elde edilen nokta bulutu verilerinden botanik ağaçların yeniden inşası için bir Python yazılımı üzerinde çalıştığım için, belki de kullandığım teknoloji yığını size bazı fikirler verebilir. Özellikle, görselleştirme katmanı, çok güçlü olan VTK kullanılarak oluşturulmuştur.
cjauvin

ArcMap 10.1, diğer katmanlarla birlikte görüntülemek ve analiz etmek için Lidar Datacloud filtrelerini kullanma olanaklarına sahiptir. C ++ muhtemelen yukarıda önerilen şekilde zengin zengin zengin veri dosyalarını işlemek için en iyi yöntemdir.

Bu OP'nin sorusunu nasıl cevapladığını anlamıyorum. Python'da bir araç istiyor. C ++ 'yı öneriyorsanız, bu talebi ayrıntılı bir nedenden dolayı yedeklemelisiniz.
Devdatta Tengshe,

Yanıtlar:


13

laspy başka bir iyi LAS okuma / yazma yazılımıdır. Doğrudan numpy dizilerinde ve bir dizi hoş Pythonic özellikte verilerle çalışmayı destekler. Bununla birlikte, kendi başına bir yazılım işlemez.

PDAL , Python'u boru hattı filtreleme dili olarak kullanma yeteneğine sahiptir, ancak bu da bir işleme motoru değildir.

Python titremesinde LiDAR ve nokta bulutu işlemesi için fazla bir şey yok. Bunun bir kısmının tipik olarak işlenen veri hacimleri ve zorlukla karşılaştıklarında C / C ++ 'a ulaşmak için verilen tipik tepki ile ilgisi olduğunu düşünüyorum. Python geliştikçe umuyorum (PyPy birçok şeyi kullanıyor ve laspy'yi geliştirmeye çalışmamın sebebi) daha fazla Python point bulut işleme yazılımı kullanıma sunuldu. Bence görünüm düzeliyor ama işler hala tam olarak oralarda değil.


7

Kısa bir süre önce LiDAR veri işleme dahil birçok coğrafi analiz türünü gerçekleştirmek için WhiteboxTools adlı bir açık kaynaklı (MIT) bağımsız (yani bağımlılık yok) kitaplığı yayımladım . Kütüphane Rust dilinde yazılmıştır ve Python tabanlı scriptler için geniş bir desteğe sahiptir . Örneğin, aşağıdaki Python betiği bir LAS dosyasında LiDAR noktalarının RGB renk verilerini doldurmak için WhiteboxTools kütüphanesini kullanır:

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'un LiDAR'a özgü işleme araçları aşağıdaki işlevleri içerir:

  • BlockMaximum: Bir giriş LAS dosyasından bir blok maksimum raster oluşturur.
  • BlockMinimum: Bir giriş LAS dosyasından minimum blok raster oluşturur.
  • FilterLidarScanAngles: Tarama açıları eşikten büyük olan bir LAS dosyasındaki noktaları kaldırır.
  • FindFlightlineEdgePoints: Bir LAS dosyasındaki bir uçuş hattının kenarı boyunca noktaları tanımlar.
  • FlightlineOverlap: Bir LiDAR (LAS) nokta dosyası okur ve her bir ızgara hücresinde çakışan uçuş çizgileri sayısını içeren bir raster çıkarır.
  • LidarElevationSlice: Belirtilen bir yükseklik aralığı arasında kalan bir LiDAR (LAS) nokta dosyasındaki tüm noktaları çıkarır.
  • LasToAscii: Bir veya daha fazla LAS dosyasını ASCII metin dosyasına dönüştürür.
  • LidarColourize: Giriş görüntüsünü temel alarak bir LiDAR (LAS) dosyasının kırmızı-yeşil-mavi renk alanlarını ekler.
  • LidarGroundPointFilter: LiDAR veri kümesi içindeki temel noktaları tanımlar.
  • LidarIdwInterpolation: Ters mesafe ağırlıklı (IDW) şema kullanarak LAS dosyalarını enterpolasyonlar.
  • LidarHillshade: Bir LAS dosyası içindeki noktalar için bir tepe değeri değerini hesaplar ve bu verileri RGB alanında saklar.
  • LidarHistogram: LiDAR verilerinden bir histogram oluşturur.
  • LidarInfo: Başlık, nokta dönüş sıklığı ve sınıflandırma verileri ve değişken uzunluk kayıtları (VLR'ler) ve coğrafi tuşlar hakkındaki bilgiler dahil olmak üzere bir LiDAR (LAS) veri kümesi hakkındaki bilgileri yazdırır.
  • LidarJoin: Birden fazla LiDAR (LAS) dosyasını tek bir LAS dosyasına birleştirir.
  • LidarKappaIndex: İki LAS dosyasının sınıflandırması üzerinde bir kappa anlaşma endeksi (KIA) analizi gerçekleştirir.
  • LidarNearestNeighbourGridding: En yakın komşu şemasını kullanarak LAS dosyalarını ızgaralar.
  • LidarPointDensity: LiDAR veri kümesi için mekansal nokta yoğunluğu desenini hesaplar.
  • LidarPointStats: LAS nokta verilerinin dağılımını özetleyen birkaç raster oluşturur.
  • LidarRemoveDuplicates: Çift noktaları bir LiDAR veri setinden kaldırır.
  • LidarRemoveOutliers: LiDAR nokta bulutunda aykırı noktaları (yüksek ve düşük noktalar) kaldırır.
  • LidarSegmentation: LiDAR nokta bulutunu normal vektörlere göre bölümlere ayırır.
  • LidarSegmentationBasedFilter: Segmente dayalı bir yaklaşım kullanarak LiDAR nokta bulutları içindeki yer noktalarını belirler.
  • LidarTile: Bir LiDAR LAS dosyasını birden fazla LAS dosyasına döşer.
  • LidarTophatTransform: Lidar veri kümesinde beyaz bir üst şapka dönüşümü gerçekleştirir; Zeminden yükseklik tahmini olarak, bitki örtüsünün modellenmesinde faydalıdır.
  • NormalVectors: Bir LAS dosyası içindeki noktalar için normal vektörleri hesaplar ve bu verileri (XYZ vektör bileşenleri) RGB alanında saklar.

Ek olarak, DEM'lerin işlenmesi için LiDAR kaynak verilerinden enterpolasyonlu çok sayıda araç vardır (örn. Özellik koruma denoising, hidro zorlama, vb.). Detaylar Kullanım Kılavuzunda bulunabilir . Kaynak kod bulunabilir burada ve derlenmiş ikili, Geomorphometry ve Hydrogeomatics web sitesinde vardır burada .


Vaov! Bu araçları test etmek için sabırsızlanıyorum.
Aaron

Umarım sizin için işe yarar. Herhangi bir sorunuz varsa, sadece bana e-posta gönderin.
WhiteboxDev

LidarPointStats'ın FUSION'lara benzer olduğunu varsayıyorum GridMetrics? LidarPointStats kullanırken ızgara ölçümlerinin oluşturulduğu herhangi bir dokümantasyon var mı?
Aaron

@Aaron Yazılımı hiç kullanmadığımdan FUSION'ın aracı hakkında pek emin değilim, ancak bu araç aşağıdakileri veriyor: num_points, num_pulses, z_range, intensity_range, predom_class. Ayrıntılar burada ( github.com/jblindsay/whitebox-geospatial-analysis-tools/blob/… ) ve ayrıca kullanım kılavuzunda bulunabilir.
WhiteboxDev

@Aaron Muhtemelen lidar_point_stats aracı aracının bu istatistikleri her birini hücre bazında rapor ettiğini açıklığa kavuşturmalıydım. Yani, kullanıcının istenen bir çıktı olarak belirttiği istatistiklerin her biri için üretilmiş bir raster vardır. Lidar_point_stats ( 'input.las', çözünürlük = 1.0, NUM_POINTS = True, num_pulses = True): örnek için
WhiteboxDev

2

Her ne kadar kesinlikle bir 'Python' kütüphanesi olmasa da, diğer araçlar için, özellikle de ÇİM,

https://github.com/pmlrsg/arsf_dem_scripts

Amaçlardan biri method, aracı tanımlamak için kullanılan bir bayrakla birlikte farklı komut satırı araçları için (alt işlemi kullanarak adlandırılan) ortak bir Python işlevi seti sağlamaktı .

Bir DSM üretmek için örnek kullanım, yoğunluk ve yoğunluk görüntüsü:

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 ambalajı içinde mevcut olanlara ek olarak / ek olarak da kullanılabilecek oldukça az sayıda LiDAR işleme aracı bulunmaktadır arsf_dem.




Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.