資源描述:
《利用Spatial處理空間數(shù)據(jù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、第23卷第4期佳木斯大學(xué)學(xué)報(bào)(自然科學(xué)版)Vol.23No.42005年10月JournalofJiamusiUniversity(NaturalScienceEdition)Oct.2005文寒編號(hào):1008一1402(2005)04一0538一06利用Spatial處理空間數(shù)據(jù)周虹,刁樹(shù)民(佳木斯大學(xué)公共計(jì)算機(jī)教研部,黑龍江佳木斯154007摘要:主要解釋OracleSpatial的核心概念,尤其是它在存儲(chǔ)和分析空間數(shù)據(jù)方面的作用.首先介紹了數(shù)據(jù)模型的概念,然后通過(guò)實(shí)例解釋了如何把一個(gè)復(fù)雜的空間圖形輸入到數(shù)據(jù)庫(kù)中,最
2、后對(duì)如何高效地查詢(xún)指定內(nèi)容進(jìn)行了詳細(xì)的描述.關(guān)鍵詞:空間數(shù)據(jù);多邊形;容忍誤差;過(guò)濾中圖分類(lèi)號(hào):Mil文獻(xiàn)標(biāo)識(shí)碼:A隨著無(wú)線定位技術(shù)的發(fā)展和電子地圖的廣泛應(yīng)用,現(xiàn)在對(duì)空間數(shù)據(jù)存儲(chǔ)、映射和分析的需求越來(lái)越大.傳統(tǒng)的數(shù)據(jù)庫(kù)技術(shù)是把空間數(shù)據(jù)按X坐標(biāo)和Y坐標(biāo)存人數(shù)據(jù)庫(kù)中,構(gòu)成一個(gè)笛卡兒坐標(biāo)系.但這種技術(shù)只能進(jìn)行很有限的索引和查詢(xún),無(wú)法對(duì)電子地圖等進(jìn)行無(wú)極縮放,且效率低下,遠(yuǎn)遠(yuǎn)不能滿(mǎn)足現(xiàn)在的實(shí)時(shí)定位要求.OracleSpatial通過(guò)使用多種數(shù)據(jù)模型、索引和查詢(xún),彌補(bǔ)了這些不足.本文主要解釋OracleSpatial的核心概念,尤
3、其是它在存儲(chǔ)和分析空間數(shù)據(jù)方面的作用.1數(shù)據(jù)模型OracleSpatial可以存儲(chǔ)四維數(shù)據(jù),但為了說(shuō)明的方便,本文只討元素}名稱(chēng)}坐標(biāo)(頂點(diǎn)序列)點(diǎn)(1,2)論二維數(shù)據(jù).OracleSpatial有這樣幾種基本圖素:點(diǎn)、線、多邊形,每一.個(gè)元素都用它的頂點(diǎn)序列來(lái)描述.對(duì)于二維的元素,用序列(Xl,Yl,線么2,5,1,3,0)卜X2,Y2,X3,Y3,?)表示,如右側(cè)元素一坐標(biāo)所示:多邊形(0,0,1,0,1,1,0,1,0,0在多邊形元素的坐標(biāo)中,有一個(gè)頂點(diǎn)的坐標(biāo)重復(fù)出現(xiàn),Oracle口Spatial就知道該元素是多邊
4、形.如果沒(méi)有這個(gè)重復(fù)出現(xiàn)的頂點(diǎn)坐標(biāo),(10,0)則OracleSpatial無(wú)法知道該元素是多邊形還是線.這些元素的有序排列就構(gòu)成了幾何數(shù)據(jù).多條線連接起來(lái)可以描述線路,兩個(gè)多邊形組合起來(lái)可以描述一個(gè)中間帶有小島的湖泊,這個(gè)湖泊的坐標(biāo)是{0,0,0,10,10,10,10,0,0,0},小島的坐標(biāo)是14,4,6,4,6,6,4,6,4,4!.其中要注意三點(diǎn):(1)內(nèi)含的多邊形不可以嵌套,即如果該小島上還有一個(gè)更小的湖,則要另外定義,不能嵌套;(2)對(duì)于單個(gè)的多崖邊形,其坐標(biāo)序列按逆時(shí)針?lè)较蚺帕校绻麅?nèi)含另一個(gè)多邊形,則里
5、面的多邊形的坐標(biāo)序列按順時(shí)針?lè)较蚺帕?(3)最后一個(gè)頂點(diǎn)和第一錫(10.10)個(gè)頂點(diǎn)重合,以關(guān)閉該多邊形.中間帶有小島的湖泊然而僅有這些坐標(biāo)還不足以來(lái)描述這個(gè)中間帶有小島的湖泊,因?yàn)檫€缺少坐標(biāo)系(或稱(chēng)為空間參照系)和容忍誤差.比如,我們無(wú)法知道這個(gè)湖泊是10米還是10海里寬,也無(wú)法知道這個(gè)湖泊是在平原上還是在崎嶇的山向.OracleSpatial默認(rèn)的坐標(biāo)系是笛卡兒坐標(biāo)系,并且使用的是無(wú)量綱的單位.對(duì)于大型的測(cè)量數(shù)據(jù)集(比如地球表面的地圖).經(jīng)常使用測(cè)量坐標(biāo)系,比如NAD83等等.這種坐標(biāo)系使用經(jīng)度和緯度來(lái)①收稿日期:2
6、005-07-21作者簡(jiǎn)介:周虹(1967一),女.黑龍江佳木斯人,教授,主要研究方向:數(shù)據(jù)挖掘與數(shù)據(jù)庫(kù)技術(shù).第4期周虹,等:利用Spatial處理空間數(shù)據(jù)539表示坐標(biāo),并能自動(dòng)考慮地球表面曲率因素.當(dāng)然,對(duì)于一個(gè)小的湖泊,用笛卡兒坐標(biāo)系就足夠了.另一個(gè)要考慮的問(wèn)題是坐標(biāo)的精確度,幾乎所有的坐標(biāo)都有一定的誤差容忍度,但OracleSpatial默認(rèn)的容忍誤差為零.給定一個(gè)坐標(biāo)系和容忍誤差,系統(tǒng)就能正確地查詢(xún)和繪制空間數(shù)據(jù).2將數(shù)據(jù)存入表中創(chuàng)建一個(gè)名為mylake的表,并對(duì)空間字段建立索引,可以執(zhí)行如下哭L語(yǔ)句:CREA
7、TETABLEmylake(featze_idNUMBERPRIMARYKEY,二VARCHAR2(32),shapeMDSYS.SDO_GEOMETRY);INSERTINTOuser_sdo_geom-metadafaVALUES('州eke',,山ape',MDSYS.SDO-DIM-ARRAY(MDSYS.SDO_DIM_EIEIVIEhIT('X'0,100,0.05),MDSYS.SDODIMELEMENT('Y'0,100,0.05))NULL);CREATEINDEXmylake_idxONmylake(
8、shape)INDEXTYPEISMDSYS.SPATIAL_INDEX;第一句創(chuàng)建了一個(gè)想要建立的表,并包含一個(gè)shape字段以存儲(chǔ)空間數(shù)據(jù),至于MDSYS.SDO_GEOM-ETRY數(shù)據(jù)類(lèi)型,我們以后再討論;第二句告訴OracleSpatial在表mylake中的空間數(shù)據(jù),表user_sdogeom._metad