İki kesişen çokgen, paylaşılan alanın ortalama çizgisine göre nasıl bölünür (QGIS / python düzgün)


9

İki çokgenim var,

POLİGON ((- 5-5, -5 5,5 5,5 -5, -5-5)) POLİGON ((1 1, 1 7, 7 7, 7 1, 1 1))

ve onları eşit olarak bölmek dileğiyle. Sonuç, kırmızı işaretli çizgi boyunca bölünmelidir.

Ben qgis / python düzgün kullanıyorum ve python kullanarak yapmak istiyorum.

KUMAŞ (1 5,5 1)


4
Sorununuz ne kadar genel? Belli ki bu iki çokgenden daha fazlasına uygulanacak bir çözüm istiyorsunuz. Ne tür çokgenler tasarlıyorsunuz? "Eşit" ile tam olarak ne demek istiyorsun? Bölünme bir çizgi parçası boyunca olmalı mı yoksa doğrusal olmayan bir yay boyunca mı olmalı? Çokgen kesişiminin birden çok bileşenden oluşması veya basit bir şekilde bağlanmamış olması durumunda ne olmalıdır? Çıktı ne biçim almalıdır - kesişimi mi yoksa çokgenlerin her birini mi bölmeli, yoksa sadece bölme çizgisi mi olmalıdır?
whuber

1
Düzensiz çokgenlerle çalışıyorum ve kesişmeyen iki çokgen olmasını istiyorum. bu durumda, söz konusu orijinal poligonlar ve istenen sonuç POLYGON ((- 5 -5, -5 5,1 5,5 1,5 -5, -5-5)) POLYGON ((1 5, 1 7, 7 7, 7 1,5 1,1 5))
OLS

1
Çokgenlerden birinin veya her ikisinin halkaları olduğunda (yani, basitçe bağlı olmayan) sorun zordur.
whuber

Yanıtlar:


5

Bir keresinde voronoi çokgenleriyle bir yaklaşım kullandım. Bunu elimden yaptım ve düzgün bir şekilde nasıl yapabileceğiniz konusunda belirsiz bir fikrim var, ama işte böyle gidiyor.

İlk olarak, üst üste binen çokgenlerin köşelerini çıkarır ve onlardan Voronoi çokgenleri yaratırsınız (vektör> geometri araçları> düğümleri çıkar & vektör> geometri araçları> vononoi). Ortaya çıkan şekil ile, çakışan alanınızı tam olarak ikiye ayıran çizgiyi çizebilirsiniz. (Parlak yeşil çizgi) voronoi

Voronoi katmanını üst üste binen çokgenle kırpın ve örtüşmeyi orijinal şekillerden çıkarın ve kırpılmış voronoi çokgeni orijinal şekillerinizle geri yapıştırın. Seçin, birleştirin, voilà!

Şimdi, biraz kaba görünüyor, çünkü benimki gerçekten basit şekiller. Ancak, yoğunlaştırırsınız (Vektör> Geometri araçları> Yoğunluk geometrileri) ve mevcut her tepe noktasına 20 düğüm gibi ekler, buna sahip olabilirsiniz:

densigy_voronoi

Hangisi daha iyi. Değiştirilecek az sayıda şeklin varsa kolay.


Bu iyi bir fikir. Fakat bu parlak yeşil çizgi nereden geliyor ve bölgeyi iki eşit parçaya böldüğünü nasıl biliyorsunuz?
whuber

bu işlem `` SELECT astext (kavşak (geomFromText ('POLYGON ((- 5 -5, -5 5,5 5,5 -5, -5 -5))', 4326), geomFromText ('POLYGON ( (1 1, 1 7, 7 7, 7 1, 1)) ', 4326))); astext -------------------------------- POLİGON ((1 5,5 5,5 1,1 1,1 5 )?
OLS

Voronoi poligonunun uygunluğundan gelir. Alanı noktalar arasında eşit olarak böler. Bu yüzden çokgenlerinizi yoğunlaştırmanız gerekir, aksi takdirde "orta" çizgi sınırlara uymaz. Parlak çizgiye gelince, ortanın nerede olduğunu göstermek için manuel olarak çiziyorum ... PostGIS komutuna gelince (PostGIS'te bir acemi oldum), bölmek değil sadece kesişen alanı seçeceğini düşünüyorum.
fgcartographix

1
Bunu söyledikten sonra, bunun eşit bir parça olacağını söylemedim. Bu yöntem nehir merkez hattını bulmak için kullanılır. Nehirde bir koy varsa, orta çizgi ona doğru çekilecektir. ancak girmeyecek, buna rağmen "merkezlenmiş" olacak.
fgcartographix
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.