วิธีการแยกรูปหลายเหลี่ยมเว้าเป็นรูปหลายเหลี่ยมนูนใน Arcpy


20

ฉันกำลังมองหาเครื่องมือหรืออัลกอริทึมเพื่อตรวจจับรูปหลายเหลี่ยมเว้าและแบ่งออกเป็นรูปหลายเหลี่ยมนูน เช่นเดียวกับที่อธิบายในรูปภาพรูปหลายเหลี่ยมสีน้ำเงินแบ่งออกเป็นรูปหลายเหลี่ยม A และ B

ฉันใช้ Arcpy ภายใต้ Arcgis 10.1

รูปหลายเหลี่ยมแยก


15
บางทีคุณอาจอธิบายได้อย่างละเอียดว่าทำไมคุณถึงทำเช่นนี้? ท้ายที่สุดการตรวจจับ (a) นั้นง่าย: รูปหลายเหลี่ยมเว้าจะมีพื้นที่น้อยกว่าตัวเรือนูน และ (b) การหารูปหลายเหลี่ยมของรูปหลายเหลี่ยมนั้นแยกออกเป็นรูปหลายเหลี่ยมโดยอัตโนมัติเพราะรูปสามเหลี่ยมทั้งหมดเป็นรูปนูน นี่แสดงให้เห็นว่าคุณมีความยืดหยุ่นในการเลือกโซลูชันที่เป็นไปได้มากมาย
whuber

2
ชุดเครื่องมือนี้จะช่วยให้คุณเห็นสิ่งที่ Bill กำลังพูดถึงเกี่ยวกับ resources.arcgis.com/gallery/file/geoprocessing/… แปลงรูปหลายเหลี่ยมเป็นคะแนนจากนั้นเรียกใช้ตัวเลือก Delaunay

1
มีคำตอบสำหรับเรื่องนี้ในสแต็คโอเวอร์โฟลว์: stackoverflow.com/a/6686842/1300519อัลกอริทึมที่อธิบายไม่ควรยากเกินกว่าจะเขียนโดยใช้อาร์คpy
Snorfalorpagus

1
@snorf ดูเหมือนว่าจะตอบคำถามที่แตกต่างกันเล็กน้อย แต่ที่สำคัญคือ วิธีแก้ปัญหานั้นเกี่ยวข้องกับการรวมกันของ "รูปหลายเหลี่ยม" และ"หลุม"ซึ่งไม่ใช่สิ่งที่มักจะหมายถึงโดย "แยก" อย่างน้อยคำตอบนั้นต้องการรายละเอียดเพิ่มเติมเพื่อให้เป็นประโยชน์ที่นี่ (BTW คำตอบของคุณถูกเปลี่ยนเป็นความคิดเห็นเพราะการอ้างอิงข้ามไปยังโซลูชันอื่น ๆ ที่อื่นบนเว็บโดยไม่มีคำอธิบายเพิ่มเติมใด ๆ จะไม่ถือว่าคำตอบใน SE)
whuber

2
ตัดสินจากความคิดเห็นที่นี่และไม่มีคำตอบเกิดขึ้นคำแนะนำของฉันคือการแก้ไขคำถามของคุณเพื่อรวมข้อเสนอแนะนั้นและพิจารณาเสนอเงินรางวัล
PolyGeo

คำตอบ:


1

นี่คือไม่กี่ขั้นตอนในการระบุจุดยอดจากส่วนเว้า:

ด้วยพัสดุ: เรขาคณิตขอบเขตต่ำสุด (ฮัลล์) -> parcelHull

พร้อมพัสดุ: FeatureVerticesToPoint -> parcelPoints

ด้วย parcelHull: FeatureVerticesToPoint -> parcelHullPoints

ด้วย parcelPoint และ parcelHullPoint: Diff symmetrical -> concavePoints

ขึ้นอยู่กับจุดเหล่านั้นคุณสามารถวาดเส้นแบ่งเพื่อตัดรูปหลายเหลี่ยมของคุณ (ระยะแบริ่งไปยังเส้น) เลือกขอบของสามเหลี่ยมVoronoïที่ตัดจุดของคุณ แต่ไม่แบ่งส่วนกับขอบเขตพัสดุของคุณ (เลือกตามตำแหน่งหลังจากแยกสามเหลี่ยม เส้นที่จุดยอด) เลือกจุดสุดยอดในเว็บไซต์ตรงข้ามและสร้างเส้น (จุดหนึ่งบรรทัด) เลือกจุดที่ใกล้ที่สุดบนขอบตรงข้ามและสร้างเส้น (จุดหนึ่งถึงเส้น) ...

ในตอนท้ายให้ใช้บรรทัดที่คุณต้องการและพัสดุต้นฉบับพร้อมกับ "คุณสมบัติ to polygon" เพื่อแบ่งรูปหลายเหลี่ยม

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