WebGIS中一種根據網格索引判斷點面關係的方法

文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/html

1.背景

判斷點面關係的算法有不少,在我以前的博文中有一篇專門對其進行了描述:判斷點是否落在面中的Oracle存儲過程描述。其中提到了三種常見判斷點面關係的算法:算法

a差乘判別法(只針對凸多邊形)服務器

b.面積判別法(只針對凸多邊形)微信

c.角度和判別法等(任意多邊形都可)htm

可是以上直接判斷點面關係的算法,其時間複雜度是相對很高的。假設一個面有N個點,那麼判斷1個點與該面的關係所須要花費的時間爲:N*N。blog

這裏,我要跟你們討論的是一種以數學公式爲內核,經過創建高效的空間索引來快速提升點面關係判斷的算法。索引

2.算法模型

2.1命題

                       

如圖,有AB兩個多邊形,須要判斷P點是落在哪一個多邊形?get

2.2思路

創建覆蓋了A、B多邊形的格網,每一個格網中包含了其屬於哪些多邊形的具體信息。判斷點與面的關係時,首先得到這個點落在哪一個格網,而後獲取該格網隸屬於哪幾個多變形。好比以上的P點,咱們獲取到P點所在的格網隸屬於兩個多邊形A和B。最後調用點面關係算法,判斷點P和麪A、B之間的關係。博客

 

2.3建模流程圖

 

           

 

3.索引生成具體方法

生成的索引分爲多邊形信息索引和網格索引兩個,下面分別描述。數學

3.1生成多邊形信息索引

多邊形信息索引中包含了三部分信息:屬性信息、幾何信息、信息大小。具體實現流程以下:

 

 

3.2生成網格索引

網格索引中包含這樣兩類信息:網格編號、網格隸屬於的多邊形具體信息(多邊形編號、多邊形標識)。具體實現流程以下:

 

4.利用索引判斷點面關係具體方法

這裏直接給出實現流程圖:

 

 

 

5.優勢

a.該算法避免了判斷點屬於哪一個多邊形時,要將全部多邊形都遍歷一遍,提升了效率。

b.當點所在網格只包含於一個多邊形時,此時連點面具體關係判斷都能避免,進一步提升了效率。

c.多邊形信息索引文件中能夠包含該多邊形的屬性信息,在點面關係判斷成功後,還能提取到該多邊形的屬性信息,避免了對地理服務器的依賴。

 

                                                                        -----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

                                                                           若是您以爲本文確實幫助了您,能夠微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^

                                                

相關文章
相關標籤/搜索