WebGIS中一种根据网格索引判断点面关系的方法
文章版權(quán)由作者李曉暉和博客園共有,若轉(zhuǎn)載請于明顯處標(biāo)明出處:http://www.cnblogs.com/naaoveGIS/。
1.背景
判斷點(diǎn)面關(guān)系的算法有很多,在我之前的博文中有一篇專門對其進(jìn)行了描述:判斷點(diǎn)是否落在面中的Oracle存儲過程描述。其中提到了三種常見判斷點(diǎn)面關(guān)系的算法:
a差乘判別法(只針對凸多邊形)
b.面積判別法(只針對凸多邊形)
c.角度和判別法等(任意多邊形均可)
但是以上直接判斷點(diǎn)面關(guān)系的算法,其時(shí)間復(fù)雜度是相對很高的。假設(shè)一個(gè)面有N個(gè)點(diǎn),那么判斷1個(gè)點(diǎn)與該面的關(guān)系所需要花費(fèi)的時(shí)間為:N*N。
這里,我要跟大家討論的是一種以數(shù)學(xué)公式為內(nèi)核,通過建立高效的空間索引來快速提高點(diǎn)面關(guān)系判斷的算法。
2.算法模型
2.1命題
? ? ? ? ? ? ? ? ? ? ? ?
如圖,有AB兩個(gè)多邊形,需要判斷P點(diǎn)是落在哪個(gè)多邊形?
2.2思路
建立覆蓋了A、B多邊形的格網(wǎng),每個(gè)格網(wǎng)中包含了其屬于哪些多邊形的具體信息。判斷點(diǎn)與面的關(guān)系時(shí),首先獲得這個(gè)點(diǎn)落在哪個(gè)格網(wǎng),然后獲取該格網(wǎng)隸屬于哪幾個(gè)多變形。比如以上的P點(diǎn),我們獲取到P點(diǎn)所在的格網(wǎng)隸屬于兩個(gè)多邊形A和B。最后調(diào)用點(diǎn)面關(guān)系算法,判斷點(diǎn)P和面A、B之間的關(guān)系。
?
2.3建模流程圖
?
? ?? ??? ??
?
3.索引生成具體方法
生成的索引分為多邊形信息索引和網(wǎng)格索引兩個(gè),下面分別描述。
3.1生成多邊形信息索引
多邊形信息索引中包含了三部分信息:屬性信息、幾何信息、信息大小。具體實(shí)現(xiàn)流程如下:
?
?
3.2生成網(wǎng)格索引
網(wǎng)格索引中包含這樣兩類信息:網(wǎng)格編號、網(wǎng)格隸屬于的多邊形具體信息(多邊形編號、多邊形標(biāo)識)。具體實(shí)現(xiàn)流程如下:
?
4.利用索引判斷點(diǎn)面關(guān)系具體方法
這里直接給出實(shí)現(xiàn)流程圖:
?
?
?
5.優(yōu)點(diǎn)
a.該算法避免了判斷點(diǎn)屬于哪個(gè)多邊形時(shí),要將所有多邊形都遍歷一遍,提高了效率。
b.當(dāng)點(diǎn)所在網(wǎng)格只包含于一個(gè)多邊形時(shí),此時(shí)連點(diǎn)面具體關(guān)系判斷都能避免,進(jìn)一步提高了效率。
c.多邊形信息索引文件中可以包含該多邊形的屬性信息,在點(diǎn)面關(guān)系判斷成功后,還能提取到該多邊形的屬性信息,避免了對地理服務(wù)器的依賴。
?
????????????????????????????????????????????????????????????? ????? ?? ?-----歡迎轉(zhuǎn)載,但保留版權(quán),請于明顯處標(biāo)明出處:http://www.cnblogs.com/naaoveGIS/
?????????????????????????????????????????????????????????????????????????? 如果您覺得本文確實(shí)幫助了您,可以微信掃一掃,進(jìn)行小額的打賞和鼓勵,謝謝 ^_^
?
轉(zhuǎn)載于:https://www.cnblogs.com/naaoveGIS/p/5148185.html
總結(jié)
以上是生活随笔為你收集整理的WebGIS中一种根据网格索引判断点面关系的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到小孩是什么意思
- 下一篇: HDU4349--Xiao Ming's