การแบ่งรูปหลายเหลี่ยมเป็นขนาดเฉพาะโดยใช้ ArcGIS Desktop หรือไม่


26

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

ฉันจะทำสิ่งนี้ได้อย่างไร มีอัลกอริทึมมาตรฐานที่มีอยู่ที่ฉันสามารถใช้ได้หรือไม่?


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

คำตอบ:


34

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

นี่คืออัลกอริทึมพื้นฐาน การป้อนข้อมูลที่ประกอบด้วยทิศทางเครื่องบินกวาดใด ๆ รูปหลายเหลี่ยมPพื้นที่ภัณฑ์ซึ่งเป็นพื้นที่เป้าหมายระหว่างศูนย์และพื้นที่รูปหลายเหลี่ยมที่ไม่ติดลบและเกณฑ์ที (ในหน่วยของพื้นที่) จุดประสงค์ของมันคือการแบ่งPด้วยเส้นตั้งฉากกับทิศทางการกวาดเป็นสองส่วนส่วนหนึ่งอยู่ทางขวาของบรรทัดและอีกส่วนอยู่ทางซ้ายของเส้นดังกล่าวซึ่งความแตกต่างระหว่างพื้นที่ด้านขวาและพื้นที่เป้าหมายaไม่มี มากกว่าเสื้อ

ให้Lเป็นเส้นแนวตั้งฉากกับทิศทางการกวาด กำหนด f (L) จะเป็นพื้นที่ของ P พบที่ด้านขวาของ L, ลบ เหล่านี้ในแง่ของงานคือการหาศูนย์ของ เพราะไม่น่าจะเป็นอนุพันธ์ แต่อย่างต่อเนื่องทั้งการใช้วิธีการ bisection วิธี secantหรือ - ฉัน favorite- วิธี -Brent ของ ทั้งหมดนั้นเรียบง่ายและรับประกันว่าจะมาบรรจบกัน ใช้tสำหรับค่าเผื่อการลู่เข้าสำหรับอาร์กิวเมนต์

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

1.  Splitting the polygon by a line.
2.  Computing the area of the piece(s) to the right of the line.

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

1'. Clip the polygon to the rectangle.

นั่นเป็นการดำเนินการขั้นพื้นฐานจริงๆ

การเริ่มต้นด้วยการหารากที่คุณต้องพบช่วงเวลาที่ศูนย์รับประกันว่าจะโกหก ทำได้ง่าย: ฉายซองจดหมายของรูปหลายเหลี่ยม ("กล่อง จำกัด ") ไปในทิศทางของการกวาดเส้น การฉายเป็นช่วงเวลาที่คุณต้องการ

คำถามนี้มีประวัติยาวนาน ฉันใช้อัลกอริทึมนี้สำหรับ ArcView 3.x นานแล้วและอธิบายมันหลายครั้งในฟอรัมผู้ใช้ ESRI เก่า Google

เว็บไซต์รูปหลายเหลี่ยมแบ่งฮับ: forums.esri.com

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

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

ข้อความแสดงแทน


6

มีเครื่องมือสำเร็จรูปที่เรียกว่า "GeoTools" ของ ET Spatial ที่ซึ่งมีเครื่องมือที่เรียกว่า "ET Miscellaneous" ในเครื่องมือนี้มีวิธีแบ่งเป็นสองประเภทคือรูปหลายเหลี่ยม ตามเปอร์เซ็นต์และตามพื้นที่ (หลายหน่วยเช่นตารางเมตร, เฮกตาร์ ฯลฯ ) เครื่องมือนี้แยกรูปหลายเหลี่ยมจากด้านใดด้านหนึ่งเช่น NESW ตามที่แสดงในรูปภาพ ฉันใช้วิธี "ขึ้นลง" เช่นเหนือจรดใต้

แยก


0

มีเครื่องมือใหม่ใน ArcGIS Pro 2.3 เรียกว่าแบ่งรูปหลายเหลี่ยม

จะช่วยให้หนึ่งที่จะแบ่ง / แบ่งรูปหลายเหลี่ยมที่กำหนดจำนวนชิ้นส่วนหรือพื้นที่ส่วนที่ต้องการ

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