一、案例概述
主要為解決監(jiān)測(cè)物體是否在指定區(qū)域內(nèi),可實(shí)現(xiàn)離開(kāi)區(qū)域報(bào)警,或在內(nèi)部區(qū)域中不聽(tīng)從指令等,可解決多種利用空間控制載體的方案。算法要求計(jì)算速度要快,并且計(jì)算精準(zhǔn)。配套區(qū)域規(guī)劃軟件,可實(shí)現(xiàn)空間數(shù)據(jù)提取,規(guī)劃等。與區(qū)域識(shí)別算法形成閉環(huán)產(chǎn)品。
二、技術(shù)特色
區(qū)域搜索算法進(jìn)行自主研發(fā),不依賴(lài)與第三方軟件,算法采用標(biāo)準(zhǔn)C語(yǔ)言自主編寫(xiě),算法的編寫(xiě)共分為兩個(gè)部分,一個(gè)是建立索引,一個(gè)是點(diǎn)與多邊形的比較。
空間索引是對(duì)存儲(chǔ)在介質(zhì)上的數(shù)據(jù)位置信息的描述,因此系統(tǒng)的設(shè)計(jì)者必須將數(shù)據(jù)在磁盤(pán)上的位置加以 記錄和組織,通過(guò)在內(nèi)存中的一些計(jì)算來(lái)取代對(duì)磁盤(pán)漫無(wú)目的的訪問(wèn),才能提高系統(tǒng)的效率 ,尤其是GIS涉及的是各種海量的復(fù)雜數(shù)據(jù),索引對(duì)于處理的效率是至關(guān)重要的,用來(lái)提高系統(tǒng)對(duì)數(shù)據(jù)獲取的效率。
空間數(shù)據(jù)索引就是指依據(jù)空間對(duì)象的位置和形狀或空間對(duì)象 之間的某種空間關(guān)系,按一定順序排列的一種數(shù)據(jù)結(jié)構(gòu),其中包含空間對(duì)象的概要信息,如對(duì)象的標(biāo)識(shí)、外接矩形及指向空間對(duì)象實(shí)體的指針。作為一種輔助性的空間數(shù)據(jù)結(jié)構(gòu),空間索引介于空間操作算法和空間對(duì)象之間,它通過(guò)篩選作用,大量與特定空間操作無(wú)關(guān)的空間對(duì)象被排除,從而提高空間操作的速度和效率??臻g索引性能的優(yōu)劣直接影響空間數(shù)據(jù)庫(kù)和地理信息系統(tǒng)的 整體性能,它是空間數(shù)據(jù)庫(kù)和地理信息系統(tǒng)的一項(xiàng)關(guān)鍵技術(shù)。
空間索引一般是自頂向下、逐級(jí)劃分空間的各種數(shù)據(jù)結(jié)構(gòu),早期的空間數(shù)據(jù)管理軟件,大多采用文件系統(tǒng)存儲(chǔ)空間信息,屬性則存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中??臻g數(shù)據(jù)索引一般采用網(wǎng)格索引。網(wǎng)格索引主要用來(lái)對(duì)點(diǎn)的集合進(jìn)行索引(盡管它們也能用來(lái)處理區(qū)域),可擴(kuò)展哈希形式目錄用于對(duì)空間數(shù)據(jù)進(jìn)行索引。許多索引結(jié)構(gòu) (Bang文件、Buddy樹(shù)和多級(jí)別網(wǎng)格文件)的提出都是對(duì)這個(gè)基本思想進(jìn)行深化而得的。
對(duì)一些非常自然地處理區(qū)域數(shù)據(jù),應(yīng)用最廣泛的是R樹(shù),已經(jīng)可以在商用的DBMS中看到R樹(shù)索引。這是由于R樹(shù)相對(duì)簡(jiǎn)單,能同時(shí)處理點(diǎn)和區(qū)域數(shù)據(jù),而且它的性能至少不比那些更復(fù)雜的索引結(jié)構(gòu)差。R樹(shù)是多維空間的遞歸子劃分。與區(qū)域四叉樹(shù)相比 (區(qū)域四叉樹(shù)是基于多維空間的遞歸子分解并獨(dú)立于實(shí)際數(shù)據(jù)集合這樣的索引方法),R樹(shù)中的空間分解依賴(lài)于索引的數(shù)據(jù)集??梢园裄樹(shù)想像成是B+樹(shù)的思想應(yīng)用到空間數(shù)據(jù)上,R樹(shù)的許多變形包括BSP樹(shù)、K-D-B樹(shù)、Cell樹(shù)、HilbertR樹(shù)、Packed樹(shù)、R * 樹(shù)、R+樹(shù)、TV樹(shù)和X樹(shù)同時(shí)處理區(qū)域數(shù)據(jù)和點(diǎn)數(shù)據(jù)的索引。
索引一般以文件形式存在磁盤(pán)中(也可以存于內(nèi)存中),存儲(chǔ)的索引的原理大致概括為以空間換時(shí)間,數(shù)據(jù)庫(kù)在未添加索引的時(shí)候進(jìn)行查詢(xún)默認(rèn)的是進(jìn)行全量搜索,也就是進(jìn)行全局掃描,有多少條數(shù)據(jù)就要進(jìn)行多少次查詢(xún),然后找到相匹配的數(shù)據(jù)就把他放到結(jié)果集中,直到全表掃描完。而建立索引之后,會(huì)將建立索引的KEY值放在一個(gè)n叉樹(shù)上(BTree)。因?yàn)锽樹(shù)的特點(diǎn)就是適合在磁盤(pán)等直接存儲(chǔ)設(shè)備上組織動(dòng)態(tài)查找表,每次以索引進(jìn)行條件查詢(xún)時(shí),會(huì)去樹(shù)上根據(jù)key值直接進(jìn)行搜索。
建立索引的目的是加快對(duì)表中記錄的查找或排序。
① 建立索引的列可以保證行的唯一性,生成唯一的rowId
② 建立索引可以有效縮短數(shù)據(jù)的檢索時(shí)間
③ 建立索引可以加快表與表之間的連接
④ 為用來(lái)排序或者是分組的字段添加索引可以加快分組和排序順序 區(qū)域搜索算法索引部分主要采用四叉樹(shù)索引、網(wǎng)格索引、R樹(shù)索引。
整體算法邏輯為為預(yù)先對(duì)多邊形進(jìn)行三角剖分,建立多邊形的索引。當(dāng)進(jìn)行點(diǎn)判斷時(shí),首先通過(guò)索引篩選出需要判斷的多邊形,然后使用射線法、角度和判別法、三角剖分法判斷是否在多邊形內(nèi)。