วิธีกรองสิ่งผิดปกติจาก point cloud ใน lidr?

Aug 18 2020

ฉันมี ALS point cloud ฉันสามารถปรับความสูงให้เป็นปกติได้สำเร็จ แต่ฉันสงสัยว่ามีวิธีใดบ้างที่จะลบ / กรองบางจุดที่เห็นได้ชัดว่ามีข้อผิดพลาด / ค่าผิดปกติ (คะแนนต่ำกว่า 0 และจำนวนหนึ่งที่สูง 30-50 เมตรหรือสูงกว่า 100 เมตรจากต้นไม้ที่สูงที่สุด) ข้อมูลที่ฉันใช้ถูกดาวน์โหลดจาก USGS National Map ซึ่งมีเฉพาะจุดพื้นดินที่ถูกจัดประเภทไว้แล้ว

ถ้าฉันทำให้ปกติด้วยtin()อัลกอริทึมและสร้าง chm ของฉันโดยตรงจากคลาวด์จุดปกติค่า chm min / max ของฉันคือ:

values     : -5.23, 129.98  (min, max)

และถ้าฉันทำให้ปกติด้วย dtm:

values     : -14.65, 129.91  (min, max)

ในที่สุดฉันกำลังพยายามแบ่งกลุ่มต้นไม้และสร้างผลผลิตจากความสูงของต้นไม้ไม้คลุมหลังคาความหนาแน่นของต้นไม้ ฯลฯ แต่ฉันไม่สามารถทำการวิเคราะห์ของฉันได้เมื่อฉันรู้ว่าความสูงสูงสุดของต้นไม้จะอยู่ที่ <30 เมตรในพื้นที่ศึกษาของฉัน

ถ้าฉันพยายามจัดประเภทพื้นใหม่จะช่วยให้มีคะแนนต่ำกว่า 0 หรือไม่ แต่นั่นจะไม่กล่าวถึงสูงสุด 129m ...

ฉันคิดว่าฉันอาจจะทำให้ chm ของฉันเรียบและใช้ chm / top top เพื่อแบ่งส่วนต้นไม้ได้ดีกว่าเพราะฉันมีปัญหาในการหาวิธีที่ดีในการใช้li2012()อัลกอริทึม

คำตอบ

3 JRR Aug 18 2020 at 19:55

ไม่มี 'ขั้นสูง' ขอบเขตการกรองในเลยlidR แต่สำหรับกรณีง่ายๆคุณสามารถสร้างวิธีง่ายๆด้วยตัวคุณเอง คำแนะนำบางประการและคุณสามารถปรับเปลี่ยนตัวอย่างให้เหมาะกับความต้องการของคุณได้

กรองจุดสนใจโดยใช้เกณฑ์

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

กรองค่าผิดปกติที่สูงโดยใช้ CHM เปอร์เซ็นไทล์ที่ 95

นี่คือตัวอย่างที่นำมาจากบทความสั้น ๆนี้ สร้างแรสเตอร์ที่มีเปอร์เซ็นไทล์ที่ 95 และลบสิ่งที่ค่อนข้างสูงเกินไปสำหรับแผนที่ความสูงนี้

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)

กรองสิ่งผิดปกติโดยใช้เมตริกตามจุด

ไม่มีตัวอย่างให้ แต่ในตอนท้ายของบทนี้มีส่วนที่อธิบายถึงวิธีการสร้างวิธีการกรองค่าผิดปกติขั้นสูงด้วยpoint_metrics()

classify_noise () ใน v3.1.0

ฉันใส่ข้อมูลนี้ไว้ที่นี่สำหรับผู้อ่านในอนาคต เริ่มจากv3.1.0 lidRจะมี (หรือ 'มีแล้ว' ขึ้นอยู่กับเวลาที่คุณกำลังอ่าน) ฟังก์ชันที่classify_noise()มีอัลกอริทึมที่เป็นไปได้หลายอย่าง