Bir İçbükey Çokgeni Arcpy'de Dışbükey Çokgenlere Nasıl Bölünür


20

İçbükey çokgenleri tespit etmek ve dışbükey çokgenlere bölmek için bir araç veya algoritma arıyorum. Resimde açıklandığı gibi, mavi çokgen A ve B çokgenlerine ayrılmıştır

Arcgis 10.1 altında Arcpy kullanıyorum

bölünmüş çokgenler


15
Belki de bunu neden yaptığınız hakkında ayrıntılı bilgi verebilirsiniz? Sonuçta, (a) algılama kolaydır: içbükey bir çokgen dışbükey gövdesinden daha az alana sahip olacaktır; ve (b) bir çokgenin üçgenlenmesi otomatik olarak onu dışbükey çokgenlere ayırır, çünkü tüm üçgenler dışbükeydir. Bu, olası birçok çözüm arasından seçim yapma konusunda esnekliğiniz olduğunu gösterir.
whuber

2
Bu araç seti, Bill'in kaynaklar hakkında ne

1
Stack Overflow'da buna bir cevap var: stackoverflow.com/a/6686842/1300519 Açıklanan algoritmaların arcpy kullanılarak yazılması çok zor olmamalıdır.
Snorfalorpagus

1
@snorf Bu biraz ama önemli bir şekilde farklı bir soruya cevap veriyor gibi görünüyor. Çözüm, görünüşe göre, "yarma" ile kastedilen "poligon" ve "deliklerin" bir kombinasyonunu içermektedir . En azından bu cevabın burada yararlı olması için daha fazla özen gösterilmesi gerekiyor. (BTW, cevabınız bir yorum olarak değiştirildi, çünkü web üzerinde başka bir yerde başka çözümlere çapraz referanslar, başka bir açıklama yapmadan, burada SE'de cevap olarak kabul edilmez.)
whuber

2
Buradaki yorumlardan ve ortaya çıkan yanıtlardan yola çıkarak tavsiyem, bu geri bildirimi dahil etmek ve bir ödül sunmayı düşünmek için sorunuzu düzenlemek olacaktır.
PolyGeo

Yanıtlar:


1

içbükey kısımlardaki köşeleri tanımlamak için birkaç adım:

parselli: minimum sınırlayıcı geometri (gövde) -> parsel

parselli: FeatureVerticesToPoint -> parcelPoints

ile parcelHull: FeatureVerticesToPoint -> parcelHullPoints

hullPoint: simetrik Diff -> concavePoints ile

bu noktalara dayanarak, çokgeninizi kesmek için bissectrice çizebilir (çizgiye olan mesafe), Voronoï üçgeninin noktanızı kesen ancak parsel sınırınızla bir segment paylaşmayan kenarlarını seçebilirsiniz (üçgeni böldükten sonra konuma göre seçin) çizgileri), karşı sitedeki tepe noktasını seçin ve bir çizgi (noktadan çizgiye) yapın, karşı kenardaki en yakın noktayı seçin ve bir çizgi (çizgiden noktaya) yapın ...

Sonunda, çokgenleri bölmek için tercih ettiğiniz satırları ve "çokgen özelliği" olan orijinal parselleri kullanın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.