Aykırı değerleri lidr'deki nokta bulutundan filtrelemenin yolu?

Aug 18 2020

ALS nokta bulutum var. Yüksekliği başarılı bir şekilde normalleştirmeyi başardım, ancak açıkça hata / aykırı olan bazı noktaları kaldırmanın / filtrelemenin bir yolu olup olmadığını merak ediyorum (0'ın altındaki noktalar ve en uzun ağaçların 30-50 m, hatta 100 m yukarısı). Kullandığım veriler USGS Ulusal Haritasından, yalnızca sınıflandırılmış yer noktaları ile indirildi.

tin()Algoritma ile normalize edersem ve chm'mi doğrudan normalize nokta bulutundan oluşturursam, chm min / max değerlerim:

values     : -5.23, 129.98  (min, max)

ve bir dtm ile normalleştirirsem:

values     : -14.65, 129.91  (min, max)

Nihayetinde ağaçları segmentlere ayırmaya ve ağaç yükseklikleri, gölgelik örtüsü, ağaç yoğunluğu vb. Ürünleri üretmeye çalışıyorum. Ancak çalışma sahamda maksimum ağaç yüksekliğinin <30 m olacağını bildiğimde analizimi çalıştıramıyorum.

Zemini yeniden sınıflandırmaya çalışırsam, bu 0'ın altındaki noktalara yardımcı olur mu? Ama bu 129m maks.

li2012()Algoritmayı kullanmanın iyi bir yolunu bulmakta zorlandığım için ağaçları ayırmak için chm / ağaç üstlerini kullansam daha iyi olur diye düşünüyordum .

Yanıtlar

3 JRR Aug 18 2020 at 19:55

Süzme Aykırı hayır 'ileri' Orada lidR henüz . Ancak basit durumlar için kendiniz basit bir yöntem oluşturabilirsiniz. İşte bazı ipuçları ve örnekleri ihtiyacınıza göre değiştirebilirsiniz.

Eşikleri kullanarak ilgi çekici yerleri filtreleyin

las <- filter_poi(las, Z >= 0, Z <= 30)

95. yüzdelik CHM kullanarak yüksek aykırı değerleri filtreleyin

Bu, bu vinyetten alınmış bir örnektir . 95. yüzdelik bir raster oluşturur ve bu yükseklik haritasına göre çok yüksek olanı kaldırır.

filter_noise = function(las, sensitivity)
{
  p95 <- grid_metrics(las, ~quantile(Z, probs = 0.95), 10)
  las <- merge_spatial(las, p95, "p95")
  las <- filter_poi(las, Z < p95*sensitivity)
  las$p95 <- NULL
  return(las)
}

las <- filter_noise(las, sensitivity = 1.2)

Aykırı değerleri nokta tabanlı metrikler kullanarak filtreleyin

Verilen hiçbir örnek yoktur ama sonunda bu bölümde yoktur bir bölüm ile oldukça gelişmiş aykırı filtre yöntemini nasıl oluşturulacağını açıklarpoint_metrics()

v3.1.0'da classify_noise ()

Bu bilgiyi gelecekteki okuyucular için buraya koyuyorum. Başlangıçta birkaç olası algoritmaya sahip v3.1.0 lidRbir işleve classify_noise()sahip olacak (veya okuduğunuz zamana bağlı olarak 'zaten vardır') .