การแยกพื้นที่ของแผนภูมิต้นไม้ออกจากข้อมูลการสำรวจระยะไกล (ภาพที่มองเห็นและ LiDAR)


13

ฉันกำลังมองหาวิธีการประมวลผลภาพระยะไกลและแยกพื้นที่มงกุฎของต้นไม้แต่ละต้นออกจากภาพ

ฉันมีทั้งภาพที่มีความยาวคลื่นเป็นภาพและมีข้อมูล Lidar จากพื้นที่ สถานที่ที่สงสัยคือพื้นที่ทะเลทรายดังนั้นต้นไม้จึงไม่หนาแน่นเท่ากับพื้นที่ป่า ความละเอียดของภาพถ่ายทางอากาศคือ 0.5 ฟุตคูณ 0.5 ฟุต ความละเอียด LIDAR อยู่ที่ประมาณ 1 x 1 ฟุต ทั้งข้อมูลภาพและ lidar มาจากชุดข้อมูล Pima County, Arizona ตัวอย่างประเภทภาพถ่ายทางอากาศที่ฉันมีอยู่ที่ส่วนท้ายของโพสต์นี้

คำถามนี้การตรวจสอบต้นไม้แบบเดี่ยวใน ArcMap? ดูเหมือนจะเป็นปัญหาเดียวกัน แต่ดูเหมือนจะไม่มีคำตอบที่ดี

ฉันสามารถรับการจำแนกประเภทพืชพรรณที่สมเหตุสมผล (และข้อมูลเกี่ยวกับการครอบคลุมเปอร์เซ็นต์โดยรวม) ในพื้นที่โดยใช้การจัดหมวดหมู่ Iso Cluster ใน Arcmap แต่จะให้ข้อมูลเล็กน้อยเกี่ยวกับต้นไม้แต่ละต้น ที่ใกล้เคียงที่สุดกับสิ่งที่ฉันต้องการคือผลลัพธ์ของการส่งผ่านการจัดหมวดหมู่ isocluster ผ่านคุณสมบัติ Raster to Polygon ใน Arcmap ปัญหาคือว่าวิธีนี้ผสานต้นไม้เข้าด้วยกันเป็นรูปหลายเหลี่ยมเดียว

แก้ไข: ฉันควรจะมีรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่ฉันมี ชุดข้อมูลดิบที่ฉันมีคือ:

  • ข้อมูลเลเซอร์เต็มรูปแบบและรูปแบบแรสเตอร์ที่สร้างขึ้นจากมัน
  • ภาพที่มองเห็น (เช่นภาพตัวอย่างที่แสดง แต่ครอบคลุมพื้นที่กว้างกว่ามาก)
  • การวัดโดยตรงด้วยตนเองของส่วนย่อยของต้นไม้ในพื้นที่

จากสิ่งเหล่านี้ฉันได้สร้าง:

  1. การจำแนกดิน / พืชพรรณ
  2. The DEM / DSM rasters

ตัวอย่างภาพถ่ายทางอากาศ


คุณมีข้อมูลมากกว่าลิงก์ คุณมีไฟล์ las ที่จัดไว้หรือเพียงแค่ DEM / DSM raster (อันไหน?)? มันไม่ง่ายเลยที่จะทำสิ่งนี้ด้วยความยาวคลื่นที่มองเห็นด้วยความแม่นยำระดับใดก็ได้
Michael Stimson

ฉันน่าจะรวมรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่ฉันมี ชุดข้อมูลดิบที่ฉันมีคือ: 1. ข้อมูลเลเซอร์เต็มรูปแบบและภาพแรสเตอร์ tiff ที่สร้างขึ้นจากมัน 2. ภาพจากภาพ (เช่นภาพตัวอย่างที่แสดง แต่ครอบคลุมพื้นที่กว้างกว่ามาก) 3. การวัดโดยตรงด้วยตนเองของชุดย่อยของต้นไม้ใน พื้นที่. จากสิ่งเหล่านี้ฉันได้สร้าง: 1. การจำแนกประเภทพื้นดิน / พืช 2. แรสเตอร์ DEM / DSM
Theodore Jones

คุณมีสิทธิ์เข้าถึง eCognition หรือไม่ ถ้าไม่คุณมีซอฟต์แวร์การประมวลผลภาพหรือภาษาการเขียนโปรแกรมใดบ้าง
แอรอน

ฉันไม่มีสำเนา eCognition แต่ฉันจะตรวจสอบว่ามีใครที่ฉันรู้จักในแล็บ / มหาวิทยาลัยของฉันหรือไม่เพราะมันดูเหมือนเป็นที่นิยมสำหรับสิ่งประเภทนี้ ฉันมีความรู้ใน Python, C และ Java ฉันมีสำเนาของ Matlab แต่ฉันก็ไม่ค่อยชอบ ฉันสามารถเข้าถึงซอฟต์แวร์ใด ๆ ในรายการนี้softwarelicense.arizona.edu/นักเรียนรวมถึง ArcGIS แน่นอน
Theodore Jones

รายละเอียดเพิ่มเติมเล็กน้อยในแอปพลิเคชันเชิงพาณิชย์ที่ฉันมี บางรายการในรายการซอฟต์แวร์ที่ฉันเชื่อมโยงคือ Matlab, Mathematica, JMP และเครื่องมือสถิติอื่น ๆ และเครื่องมือพัฒนาซอฟต์แวร์เช่น Visual Studio
Theodore Jones

คำตอบ:


10

มีงานวรรณกรรมจำนวนมากในการตรวจจับมงกุฎบุคคลในข้อมูลสเปกตรัมและ lidar วิธีการที่ชาญฉลาดอาจเริ่มด้วย:

Falkowski, MJ, AMS Smith, PE Gessler, AT Hudak, LA Vierling และ JS Evans (2008) อิทธิพลของฝาครอบหลังคาป่าสนในความแม่นยำของอัลกอริทึมการวัดต้นไม้สองต้นโดยใช้ข้อมูล lidar วารสารการสำรวจระยะไกลของแคนาดา 34 (2): 338-350

Smith AMS, EK Strand, CM Steele, DB Hann, SR Garrity, MJ Falkowski, JS Evans (2008) การผลิตแผนที่โครงสร้างเชิงพื้นที่ของพืชผักโดยการวิเคราะห์แบบจูนิเปอร์ต่อการบุกรุกของวัตถุในรูปถ่ายทางอากาศหลายมิติ การสำรวจระยะไกลของแคนาดาวารสาร 34 (2): 268-285

หากคุณมีความสนใจในวิธีการเวฟเล็ต (Smith และคณะ, 2008) ฉันมีรหัสใน Python แต่มันช้ามาก หากคุณมีประสบการณ์ Matlab นี่คือที่ที่มันถูกนำไปใช้ในโหมดการผลิต เรามีเอกสารสองฉบับที่เราระบุการบุกรุกจูนิเปอร์ ~ 6 ล้านเอเคอร์ในโอเรกอนตะวันออกโดยใช้วิธีเวฟเล็ตด้วยภาพ NAIP RGB-NIR ดังนั้นจึงได้รับการพิสูจน์แล้ว

Baruch-Mordo, S. , JS Evans, J. Severson, JD Naugle, J. Kiesecker, J. Maestas, และ MJ Falkowski (2013) การประหยัดนักปราชญ์บ่นจากต้นไม้: ทางออกเชิงรุกเพื่อลดภัยคุกคามที่สำคัญสำหรับผู้สมัคร การอนุรักษ์ทางชีวภาพชนิด 167: 233-241

Poznanovic, AJ, MJ Falkowski, AL Maclean และ JS Evans (2014) การประเมินความแม่นยำของอัลกอริทึมการตรวจจับต้นไม้ในจูนิเปอร์วู้ดแลนด์ วิศวกรรมการสะท้อนแสงและการสำรวจระยะไกล 80 (5): 627–637

มีวิธีการที่น่าสนใจบางอย่างในการสลายตัวของวัตถุโดยทั่วไปจากวรรณกรรมอวกาศของรัฐคณิตศาสตร์ประยุกต์โดยใช้กระบวนการ Gaussian แบบหลายจุดเพื่อแยกย่อยลักษณะของวัตถุในสเกล ฉันใช้แบบจำลองเหล่านี้เพื่ออธิบายกระบวนการหลายขนาดในแบบจำลองทางนิเวศวิทยา แต่สามารถปรับให้ย่อยสลายคุณลักษณะวัตถุภาพได้ สนุก แต่ลึกลับเล็กน้อย

Gramacy, RB และ HKH Lee (2008) Bayesian ปฏิบัติตามกระบวนการแบบเกาส์ด้วยแอปพลิเคชันสำหรับการสร้างแบบจำลองคอมพิวเตอร์ วารสารสมาคมสถิติอเมริกัน 103 (483): 1119–1130

Kim, HM, BK Mallick และ CC Holmes (2005) การวิเคราะห์ข้อมูลอวกาศโดยใช้กระบวนการ Gaussian ทีละน้อย วารสารสมาคมสถิติอเมริกัน, 100 (470): 653–668


+1 โดยเฉพาะอย่างยิ่งสำหรับตัวเลือก 4; เนื่องจาก OP มีข้อมูล lidar มันจะคุ้มค่าที่จะใช้วิธี wavelet บนแบบจำลองพื้นผิวทรงพุ่ม แม้ว่าอย่างที่คุณรู้วิธีการเวฟเล็ตยังไม่เป็นกระแสหลัก (หรืออาจจะเคย)
แอรอน

ในบทกวีที่เหมาะกับทุกขนาดฉันจะเริ่มอ้างถึงซอฟต์แวร์เชิงพาณิชย์ (เช่น ESRI, ERDAS) เป็นซอฟต์แวร์แบบกล่องใหญ่ บ่อยครั้งทางออกที่ดีที่สุดหรืออื่น ๆ ไม่สามารถใช้ได้ใน "ซอฟต์แวร์กล่องใหญ่" บ่อยครั้งที่เราต้องมองไปที่การพัฒนาหรือชุมชนวิชาการเพื่อหาคำตอบสำหรับปัญหาการวิเคราะห์เชิงพื้นที่ที่ซับซ้อน นี่จะนำคุณออกจากกระแสหลักอย่างรวดเร็ว โชคดีที่ชุมชนเหล่านี้ต้องการแบ่งปัน นี่คือเหตุผลที่มันเป็นสิ่งสำคัญสำหรับนักวิเคราะห์ที่จะไม่พึ่งพาโซลูชั่นปุ่มกด
Jeffrey Evans

2
ฉันมักจะเห็นด้วยกับ BBS สำหรับปัญหาเชิงพื้นที่ที่ซับซ้อน อย่างไรก็ตามการแยกพืชประเภทเดียวในสภาพแวดล้อมที่แห้งแล้งโดยเฉพาะอย่างยิ่งหากคุณสามารถเข้าถึงข้อมูล lidar ได้นั้นเป็นสิ่งที่สำคัญมาก ในกรณีนี้ไม่จำเป็นต้องคิดค้นล้ออีกครั้งโดยพัฒนาวิธีการใหม่ในการระบุต้นไม้อย่างง่าย ความคิดของฉันเป็นเพราะเหตุใดจึงไม่ใช้วิธีการกดปุ่มที่สร้างไว้ล่วงหน้าโดยเฉพาะในแพ็คเกจเช่น eCognition ซึ่งเหมาะอย่างยิ่งสำหรับระบบอัตโนมัติ
แอรอน

1
ฉันควรเพิ่มว่า eCognition มีความสามารถสำหรับรหัสมงกุฎบุคคล ตัวอย่างเช่นคุณสามารถค้นหาชุดกฎตัวอย่างได้ที่ชุมชน eCog ที่ใช้วิธีการปลูกเมล็ด - ค้นหา "ชุดกฎการสุ่มตัวอย่างตัวอย่างน้ำมันปาล์ม" การรวมอัลกอริทึมการจับคู่แม่แบบใหม่ของ eCog เข้ากับวิธีการเพาะเมล็ดนี้อาจเป็นวิธีที่ทรงพลังมาก
แอรอน

1
ฉันสนใจโค้ดไพ ธ อนที่คุณพูดถึงสำหรับวิธีการเวฟเล็ตของสมิ ธ (2008) ใช้ได้ทุกที่หรือไม่
Alpheus

3

เพื่อสร้าง DHM ลบ DEM จาก DEM ที่นี้สามารถทำได้ใน Esri Raster คำนวณหรือGDAL_CALC สิ่งนี้จะทำให้เอนไซม์ไลทั้งหมดของคุณอยู่ใน 'สนามเด็กเล่นระดับ'

ไวยากรณ์ (ทดแทนเส้นทางแบบเต็มสำหรับ DEM, DSM & DHM):

GDAL_CALC.py -A DSM -B DEM --outfile=DHM --CALC "A-B"

DHM ส่วนใหญ่จะเป็น 0 (หรือใกล้เคียงพอ) ซึ่งคุณจะทำให้มูลค่าของคุณ ด้วย Raster Calculator หรือ GDAL_CALC คุณสามารถแยกค่าได้มากกว่าค่าที่กำหนดเองตามจำนวนเสียงที่คุณสังเกตเห็นใน DHM วัตถุประสงค์ของการทำเช่นนี้คือเพื่อลดเสียงรบกวนและไฮไลต์เพียงครอบฟันของพืช - ในกรณีที่ 'ต้นไม้' สองต้นติดกันควรแยกออกเป็นสอง blobs ที่แตกต่างกัน

ไวยากรณ์ (แทนที่พา ธ เต็มสำหรับ Binary & DHM และค่าที่สังเกตได้สำหรับค่า):

GDAL_CALC.py -A DHM --outfile=Binary --calc "A*(A>Value)"

ขณะนี้มีทั้ง GDAL_CALC หรือ Esri IsNullสร้าง raster ไบนารีซึ่งสามารถโพลิกอนกับGDAL_Polygonizeหรือ Esri Raster ไปเป็นรูปหลายเหลี่ยม

หากต้องการปรับแต่งรูปหลายเหลี่ยมลบรูปหลายเหลี่ยมขนาดเล็กมากเกินไปแล้วเปรียบเทียบกับแถบสี RGB ที่มองหาลายเซ็นในเครื่องมือ Esri Zonal Statisticsจะช่วย จากนั้นคุณสามารถละทิ้งรูปหลายเหลี่ยมที่ไม่มีสถิติที่เหมาะสม (จากการทดลองและข้อมูลของคุณฉันไม่สามารถให้คุณค่าแก่คุณได้)

สิ่งนี้จะช่วยให้คุณมีความแม่นยำประมาณ 80% ในการวางแผนครอบฟันแต่ละอัน


ขอบคุณ ฉันจะดูว่าฉันได้ผลลัพธ์ที่ดีจากวิธีนี้หรือไม่
Theodore Jones

คุณจะต้องทำการทดลองบางอย่างเพื่อให้ได้ค่าที่เหมาะสมฉันขอแนะนำให้ตัดพื้นที่ขนาดเล็กเป็นตัวอย่างที่บ่งบอกถึง (คล้ายกับ) พื้นที่ที่ดีที่สุด / แย่ที่สุดในข้อมูลของคุณ อาจใช้เวลาประมาณครึ่งโหลเพื่อให้ได้พารามิเตอร์ของคุณ แต่นั่นก็ยังดีกว่าการวางแผนด้วยตนเอง
Michael Stimson

3

eCognition เป็นซอฟต์แวร์ที่ดีที่สุดสำหรับสิ่งนั้นฉันทำโดยใช้ซอฟต์แวร์อื่น แต่ eCognition นั้นดีกว่า นี่คือการอ้างอิงถึงวรรณกรรมในเรื่อง:

Karlson, M. , Reese, H. , & Ostwald, M. (2014) การทำแผนที่ต้นไม้ในป่าที่มีการจัดการ (Parklands) ของกึ่งแห้งแล้งในแอฟริกาตะวันตกโดยใช้การถ่ายภาพ WorldView-2 และการวิเคราะห์ภาพตามวัตถุทางภูมิศาสตร์ เซ็นเซอร์, 14 (12), 22643-22669

เช่นhttp://www.mdpi.com/1424-8220/14/12/22643

นอกจากนี้:

Zagalikis, G. , Cameron, AD, & Miller, DR (2005) การประยุกต์ใช้โฟโตแกรมเมทรีแบบดิจิทัลและเทคนิคการวิเคราะห์ภาพเพื่อให้ได้ลักษณะต้นไม้และขาตั้ง วารสารวิจัยป่าไม้ของแคนาดา, 35 (5), 1224-1237

เช่นhttp://www.nrcresearchpress.com/doi/abs/10.1139/x05-030#.VJmMb14gAA


คุณช่วยอธิบายเพิ่มเติมได้ไหมว่าทำไม eCognition ถึงดีกว่า ลิงก์คำตอบเท่านั้นมีแนวโน้มที่จะหมดอายุเมื่อลิงก์หายไป
แอรอน

1
eCognition เป็นซอฟต์แวร์วิเคราะห์รูปภาพที่ใช้วัตถุอื่น ๆ ที่ไม่ใช่ตั้งแต่ฉันตอนนี้ ฉันใช้วิธีการที่คล้ายกัน การประยุกต์ใช้ photogrammetry ดิจิตอลและเทคนิคการวิเคราะห์ภาพเพื่อให้ได้ลักษณะต้นไม้และขาตั้ง G Zagalikis, AD Cameron, DR Miller วารสารการวิจัยป่าไม้แคนาดา, 2005, 35 (5): 1224-1237, 10.1139 / x05-030 nrcresearchpress.com/doi /abs/10.1139/x05-030#.VJmMb14gAA
Giorgos Zagalikis

1
ขอบคุณสำหรับการอ้างอิง Giorgos ฉันคิดว่าความคิดเห็นเหล่านี้จะทำงานได้ดีเช่นเดียวกับการแก้ไขคำตอบของคุณ
แอรอน

3

ฉันมีปัญหาเดียวกันสองสามปีที่ผ่านมา ฉันมีวิธีแก้ไขที่ไม่ต้องการข้อมูล LAS ที่ถูกกรองหรือข้อมูลเสริมอื่น ๆ หากคุณสามารถเข้าถึงข้อมูล LiDAR และสามารถสร้าง DEMs / DSMs / DHMs (DEM ต่อไปนี้ฉันไม่ได้อภิปรายความหมายของการตั้งชื่อแบบจำลองพื้นผิว) จากผลตอบแทนที่แตกต่างกันสคริปต์ต่อไปนี้อาจมีประโยชน์

สคริปต์ arcpy จะกลืนเข้าไป 3 DEMs และแยกรูปหลายเหลี่ยมของฟอเรสต์และรูปร่างของจุดต้นไม้ 3 DEMs ควรมีความละเอียดเชิงพื้นที่ (เช่น 1 เมตร) และขอบเขตและเป็นตัวแทนของผลตอบแทนแรกผลตอบแทนล่าสุดและโลกเปลือย ฉันมีพารามิเตอร์ที่เฉพาะเจาะจงมากสำหรับการสกัด veg แต่พารามิเตอร์สามารถเปลี่ยนแปลงได้เพื่อให้เหมาะกับความต้องการอื่น ๆ ฉันแน่ใจว่ากระบวนการสามารถปรับปรุงได้เช่นนี้เป็นความพยายามครั้งแรกของฉันในการเขียนสคริปต์หลาม

# Name:         Veg_Extractor.py
# Date:         2013-07-16
# Usage:        ArcMap 10.0; Spatial Analyst
# Input:        1 meter DEMs for first returns (DEM1), last returns (DEM2), and bare earth (BE)
# Output:       forest polygon (veg with height > 4m) shapefile with holes > 500m removed;
#               tree point (veg with height > 4m, crown radius of 9 cells) shapefile
# Notes:        Raises error if input raster cell sizes differ

import arcpy, os
from arcpy import env
from arcpy.sa import *

# Check out any necessary licenses
arcpy.CheckOutExtension("spatial")

# Script arguments
dem1 = arcpy.GetParameterAsText(0) #input Raster Layer, First Return DEM
dem2 = arcpy.GetParameterAsText(1) #input Raster Layer, Last Return DEM
bare_earth = arcpy.GetParameterAsText(2) #input Raster Layer, Bare Earth DEM
outForest = arcpy.GetParameterAsText(3) #shapefile
outTree = arcpy.GetParameterAsText(4) #shapefile

# Make sure cell size of input rasters are same
arcpy.AddMessage("Checking cell sizes...")
dem1Xresult = arcpy.GetRasterProperties_management(dem1, "CELLSIZEX")
dem1Yresult = arcpy.GetRasterProperties_management(dem1, "CELLSIZEY")
dem2Xresult = arcpy.GetRasterProperties_management(dem2, "CELLSIZEX")
dem2Yresult = arcpy.GetRasterProperties_management(dem2, "CELLSIZEY")
beXresult = arcpy.GetRasterProperties_management(bare_earth, "CELLSIZEX")
beYresult = arcpy.GetRasterProperties_management(bare_earth, "CELLSIZEY")
dem1X = round(float(dem1Xresult.getOutput(0)),4)
dem1Y = round(float(dem1Yresult.getOutput(0)),4)
dem2X = round(float(dem2Xresult.getOutput(0)),4)
dem2Y = round(float(dem2Yresult.getOutput(0)),4)
beX = round(float(beXresult.getOutput(0)),4)
beY = round(float(beYresult.getOutput(0)),4)
if (dem1X == dem1Y == dem2X == dem2Y == beX == beY) == True:
    arcpy.AddMessage("Cell sizes match.")
else:
    arcpy.AddMessage("Input Raster Cell Sizes:")
    arcpy.AddMessage("DEM1: (" + str(dem1X) + "," + str(dem1Y) + ")")
    arcpy.AddMessage("DEM2: (" + str(dem2X) + "," + str(dem2Y) + ")")
    arcpy.AddMessage("  BE: (" + str(beX) + "," + str(beY) + ")")
    raise Exception("Cell sizes do not match.")

# Check map units
dem1_spatial_ref = arcpy.Describe(dem1).spatialReference
dem1_units = dem1_spatial_ref.linearUnitName
dem2_spatial_ref = arcpy.Describe(dem2).spatialReference
dem2_units = dem2_spatial_ref.linearUnitName
bare_earth_spatial_ref = arcpy.Describe(bare_earth).spatialReference
bare_earth_units = bare_earth_spatial_ref.linearUnitName
if (dem1_units == dem2_units == bare_earth_units) == True:
    if dem1_units == "Meter":
        area = "500 SquareMeters" #Area variable for meter
        unit = 1 #meter
    elif (dem1_units == "Foot_US") or (dem1_units == "Foot"):
        area = "5382 SquareFeet" #Area variable for feet
        unit = 3.28084 #feet in meter
    else:
        raise Exception("Units are not 'Meter', 'Foot_US', or 'Foot'.")
else:
    raise Exception("Linear units do not match.  Check spatial reference.")

# Local variables:
(workspace, filename) = os.path.split(outForest)
arcpy.env.workspace = workspace
arcpy.env.overwriteOutput = True
dem1 = Raster(dem1)
dem2 = Raster(dem2)
bare_earth = Raster(bare_earth)
nbr1 = NbrRectangle(3, 3, "CELL")
nbr2 = NbrRectangle(5, 5, "CELL")
nbr3 = NbrCircle(5, "CELL")

# Give units and multiplier
arcpy.AddMessage("Linear units are " + dem1_units + ". Using multiplier of " + str(unit) + "...")

arcpy.AddMessage("Processing DEMs...")
# Process: Raster Calculator (DEM1 - BE)
ndsm_dem1 = dem1 - bare_earth

# Process: Raster Calculator (DEM1 - DEM2)
d1_d2 = dem1 - dem2

# Process: Raster Calculator
threshold_d1d2 = (d1_d2 > (0.1 * unit))  &  (ndsm_dem1 >= (4.0 * unit))

# Process: Focal Statistics (max 3x3)
focal_max1 = FocalStatistics(threshold_d1d2, nbr1, "MAXIMUM", "DATA")

# Process: Focal Statistics (majority 5x5)
focal_majority = FocalStatistics(focal_max1, nbr2, "MAJORITY", "DATA")

# Process: Con
con_ndsm_dem1 = Con(ndsm_dem1 >= (4.0 * unit), focal_majority, focal_max1)
focal_majority = None
focal_max1 = None

# Process: Focal Statistics (min 3x3)
focal_min1 = FocalStatistics(con_ndsm_dem1, nbr1, "MINIMUM", "DATA")
con_ndsm_dem1 = None

# Process: Focal Statistics (min 3x3)
veg_mask = FocalStatistics(focal_min1, nbr1, "MINIMUM", "DATA")

# Process: Focal Statistics (max R5)
focal_max2 = FocalStatistics(ndsm_dem1, nbr3, "MAXIMUM", "DATA")

arcpy.AddMessage("Calculating tree points...")
# Process: Raster Calculator
tree_points = (veg_mask == 1) & (ndsm_dem1 == focal_max2) & (ndsm_dem1 >= (4.0 * unit))
ndsm_dem1 = None
focal_max2 = None

# Process: Raster Calculator
tree_pick = Pick(tree_points == 1, 1)
tree_points = None

# Process: Raster to Polygon
arcpy.RasterToPolygon_conversion(tree_pick, workspace + "\\tree_poly.shp", "SIMPLIFY", "Value")
tree_pick = None

# Process: Feature To Point
arcpy.AddMessage("Writing tree points...")
arcpy.env.workspace = workspace #reset workspace
arcpy.env.overwriteOutput = True #reset overwrite permission
arcpy.FeatureToPoint_management(workspace + "\\tree_poly.shp", outTree, "CENTROID")

arcpy.AddMessage("Calculating forest polygons...")
# Process: Focal Statistics (max 3x3)
forests = FocalStatistics(veg_mask, nbr1, "MAXIMUM", "DATA")
veg_mask = None

# Process: Raster Calculator
forest_pick = Pick(forests == 1, 1)

# Process: Raster to Polygon
arcpy.RasterToPolygon_conversion(forest_pick, workspace + "\\forest_poly.shp", "SIMPLIFY", "Value")

# Process: Eliminate Holes > 500 sq m (5382 sq ft)
arcpy.AddMessage("Writing forest polygons...")
arcpy.EliminatePolygonPart_management(workspace + "\\forest_poly.shp", outForest, "AREA", area, "0", "CONTAINED_ONLY")

# Clean up
arcpy.AddMessage("Cleaing up...")
arcpy.Delete_management(workspace + "\\tree_poly.shp")
arcpy.Delete_management(workspace + "\\forest_poly.shp")

2

ฉันโพสต์สิ่งนี้เป็นคำตอบเนื่องจากข้อจำกัดความยาวในความคิดเห็นไม่มีความหวังสำหรับเครดิต :) แปรงที่กว้างมากช่วยให้คุณมี DEM

  1. แยก DEM สำหรับรูปหลายเหลี่ยมแต่ละอันเพื่อ dem
  2. กำหนดระดับความสูงสุดของ dem
  3. ตั้งค่า zCur + = - zStep ขั้นตอนที่จะพบได้ซ้ำก่อนเช่นลดลงอย่างเหมาะสมระหว่างการยกระดับ 'เซลล์บนสุดของต้นไม้' และเพื่อนบ้าน
  4. ด้านล่าง = Con (dem => zCur, int (1))
  5. กลุ่มภูมิภาคด้านล่าง นับใหญ่พอนั่นคือ 'ต้นไม้' ต้องการคำจำกัดความที่นี่โดยการตรวจสอบด้วยภาพการวิจัยเบื้องต้น?
  6. ไปที่ขั้นตอนที่ 3 หาก zCur> zMin ขั้นตอนที่ 1 เป็นอย่างอื่น

จำนวนกลุ่มสูงสุดในกระบวนการ = ต้นไม้นับภายในรูปหลายเหลี่ยมแต่ละรายการ เกณฑ์เพิ่มเติมเช่นระยะห่างระหว่าง 'trees' ภายในรูปหลายเหลี่ยมอาจช่วย ... DEM ปรับให้เรียบโดยใช้เคอร์เนลเป็นตัวเลือกเช่นกัน


ฉันเชื่อว่าคุณกำลังอ้างถึง DSM และไม่ใช่ DEM ... โดยทั่วไปต้นไม้โครงสร้างและขยะอื่น ๆ ไม่ได้ทำให้เป็น DEM แต่มีคุณสมบัติใน DSM (ลบเสียงรบกวน) DSM - DEM = DHM (รุ่นความสูง) สิ่งเหล่านี้สามารถสกัดได้อย่างสมเหตุสมผลจากข้อมูล LiDAR แม้ว่าจะเป็นข้อมูลลับเฉพาะ / พื้นดินเท่านั้น แต่ถ้าคุณมี DEM และไม่ใช่ LAS คุณจะเห็นลำธารโดยไม่มีไม้พายเนื่องจากคุณสมบัติที่คุณไม่ได้ทำ นั่น !
Michael Stimson

Yeap, DHM ตามที่คุณอธิบายจะทำ ฉันรู้เรื่องไลดาร์เล็กน้อย
FelixIP
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.