กำหนดจำนวนรูปหลายเหลี่ยมขั้นต่ำจาก shapefile เพื่อครอบคลุมพื้นที่ที่สนใจ


10

ฉันมีไฟล์รูปร่างเป็นจำนวนมากที่แสดงถึงพื้นที่ที่น่าสนใจสำหรับการวิเคราะห์ที่จะดำเนินการโดยใช้แหล่งที่มาของภาพถ่ายดาวเทียม (IKONOS, RapidEye ฯลฯ ) น่าเสียดายที่ภาพไม่ได้ใช้ระบบ Pathrow เช่น Landsat เป็นต้นขอบเขตจึงแตกต่างกันอย่างมาก

ฉันมีรูปร่างที่ตัดกับ AOI แต่ละตัวซึ่งแสดงถึงขอบเขตของการได้รับภาพที่แตกต่างกันซึ่งทั้งหมดนี้ได้รับการยอมรับแล้ว บางรูปร่างเหล่านี้มีรูปหลายเหลี่ยมมากกว่า 500 รูป

ฉันต้องการค้นหาวิธีที่ควรเป็นแบบอัตโนมัติ (Python และ ArcInfo 10 โดยเฉพาะอย่างยิ่ง FOSS ก็เป็นที่ยอมรับเช่นกัน) เพื่อกำหนดรูปหลายเหลี่ยมจำนวนน้อยที่สุดเพื่อครอบคลุมพื้นที่ที่ฉันสนใจแต่ละแห่ง


3
โดยทั่วไปแล้วนี่เป็นปัญหาที่ยากลำบากของ NP ดังนั้นจึงอาจต้องใช้ซอฟต์แวร์ที่ทรงพลัง วิธีหนึ่งคือการวางกรอบให้เป็นโปรแกรมเชิงเส้นจำนวนเต็ม: รูปหลายเหลี่ยมแบ่ง AOI เป็นรูปหลายเหลี่ยม "อะตอม" และแต่ละรูปหลายเหลี่ยมต้นฉบับแต่ละครอบคลุมอย่างเต็มที่หรือไม่ครอบคลุมแต่ละรูปหลายเหลี่ยมอะตอม ข้อมูลนี้สามารถเข้ารหัสในเวกเตอร์ไบนารี คุณพยายามที่จะลดจำนวนของเวกเตอร์ดังกล่าวที่มีผลรวมเป็น 1 หรือมากกว่าในแต่ละองค์ประกอบ ตัวอย่างการทำงานของวิธีการในการแก้ปัญหาที่คล้ายกันอยู่ที่mathematica.stackexchange.com/a/6888และgis.stackexchange.com/a/27678
whuber

คำตอบ:


3

ตามที่ระบุไว้โดย whuber generalizing ปัญหาประเภทนี้เพื่อค้นหาวิธีแก้ไขปัญหาคุณภาพสูงจะยุ่งยาก แต่วิธีนี้อาจทำให้คุณปิดพอโดยไม่ต้องทำงานมาก นี่คือรหัสหลอกบางส่วนตามสมมติฐานต่อไปนี้:

  1. พื้นที่ที่น่าสนใจ
  2. ชุดรูปหลายเหลี่ยม Y ที่ครอบคลุม A

    Start loop
     Iterate through Y
       Select the polygon x from Y that has greatest area of intersection with A
    
     Clip A with polygon x
     Remove x from Y 
     If A is null then end program

แนวคิดก็คือคุณกำลังลดพื้นที่สนใจลงซ้ำซากด้วยขอบเขตดาวเทียมที่มีการทับซ้อนกันมากที่สุดกับพื้นที่สนใจที่เหลือ AOI มีขนาดเล็กลงในการทำซ้ำทุกครั้งจนกว่าจะไม่มีอะไรเหลืออยู่ นี่อาจจะไม่ใช่ทางออกที่ดีที่สุด แต่ก็ควรจะสมเหตุสมผลและควรรันได้อย่างรวดเร็ว


0

ตกลงดังนั้นคุณมีพื้นที่ A ที่เป็นตัวแทนของบางพื้นที่และขอบเขตภาพจำนวนมากซึ่งสามารถกำหนดเป็นชุด Y ได้

ถ้าฉันถูกต้องคุณสามารถทำฟังก์ชั่นต่าง ๆ ได้:

  1. การตัดขอบเขตภาพตามพื้นที่ A
  2. ทำการเลือกตามสถานที่โดยใช้รูปหลายเหลี่ยม Extent และตัวเลือกบรรจุอย่างสมบูรณ์

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

หวังว่าความช่วยเหลือนี้


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