文章版權由作者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
1.背景
在前一篇中,我們探討了如何求凸多邊形中的似最大圓,但是針對實際情況需求,我們並沒有完全解決問題。實際情況中,凹凸多邊形同時存在,並且在行政區划應用上,凹多邊形更多。所以這里我們依然得探討如何在任意多邊形中得出其內部的似最大矩形或者似最大圓。
這里,我們將方向優先選擇為求似最大矩形,原因有二:矩形的判斷不涉及運算,效率更高;更重要的原因是,之后我們構建R樹索引,基於矩形會更加便捷。
2.算法詳解
在我之前的文章《網格索引判斷點面關系的方法》(http://www.cnblogs.com/naaoveGIS/p/5148185.html),提到了GIS中常用的網格方法。同樣,這里我將把該網格法的思路引入至算法中。
具體描述為:
a.獲取任意多邊形的四角坐標,通過四角坐標構造矩形,將該矩形划分成N*M個規則格網。
b.遍歷所有格網,判斷每個格網和多邊形的包含關系。格網在多邊形中,則標記為1,否則為0。
c.計算由0和1組成的矩形中,由1組成的最大矩形。
d.求得所得最大矩形代表的四角坐標,構造成真實地理矩形。
3.算法探討
a.該算法最大的難點在於計算由0和1組成的矩形中,由1組成的最大矩形:
b.該算法獲取的矩形是否為最大取決於網格的划分粒度,實際項目中,要進行綜合考慮。實際上,只要能夠逼近,是否最大不重要。
4.算法實現
5.問題擴展
昨天一個朋友問了一個相似的問題,項目背景為土地利用分析,需要提取任意規划土地內一平方公里的樣本。
利用網格的思想,該問題同樣能很好的解決。
-----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/
如果您覺得本文確實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^