溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle Spatial基本操作是怎樣的

發(fā)布時間:2021-10-18 09:33:12 來源:億速云 閱讀:122 作者:柒染 欄目:數(shù)據(jù)庫

Oracle Spatial基本操作是怎樣的,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。


Spatial主要通過元數(shù)據(jù)表、空間數(shù)據(jù)字段(即sdo_Geometry字段)和空間索引來管理空間數(shù)據(jù),并在此基礎(chǔ)上提供一系列空間查詢和空間分析的程序包,讓用戶進(jìn)行更深層次的GIS應(yīng)用開發(fā)。Oracle
Spatial使用空間字段sdo_Geometry存儲空間數(shù)據(jù),用元數(shù)據(jù)表來管理具有sdo_Geometry字段的空間數(shù)據(jù)表,并采用R樹索引和四叉樹索引技術(shù)來提高空間查詢和空間分析的速度。

  1、元數(shù)據(jù)表說明

  Oracle
Spatial的元數(shù)據(jù)表存儲了有空間數(shù)據(jù)的數(shù)據(jù)表名稱、空間字段名稱、空間數(shù)據(jù)的坐標(biāo)范圍、坐標(biāo)系以及坐標(biāo)維數(shù)說明等信息。用戶必須通過元數(shù)據(jù)表才能知道Oracle數(shù)據(jù)庫中是否有Oracle
Spatial的空間數(shù)據(jù)信息。通過元數(shù)據(jù)視圖(USER_SDO_GEOM_METADATA)訪問元數(shù)據(jù)表。元數(shù)據(jù)視圖的基本定義為:

       Oracle Spatial基本操作是怎樣的

  2、空間字段解析

  Oracle
Spatial的空間數(shù)據(jù)都存儲在空間字段sdo_Geometry中,理解sdo_Geometry是編寫Oracle
Spatial程序的關(guān)鍵。sdo_Geometry是按照Open GIS規(guī)范定義的一個對象,其原始的創(chuàng)建方式如下所示。

       Oracle Spatial基本操作是怎樣的  

 ?、?br/>sdo_Gtype

  是一個NUMBER型的數(shù)值,用來定義存儲幾何對象的類型。sdo_Gtype是一個4個數(shù)字的整數(shù),其格式為dltt,其中d表示幾何對象的維數(shù);l表示三維線性參考系統(tǒng)中的線性參考值,當(dāng)d為3維或者4維時需要設(shè)置該值,一般情況下為空;tt為幾何對象的類型,Oracle
Spatial定義了7種類型的幾何類型,目前,tt使用了00到07,其中08到99是Oracle
Spatial保留的數(shù)字,以備將來幾何對象擴(kuò)展所用。

        Oracle Spatial基本操作是怎樣的

   ②
sdo_Srid

  sdo_Srid也是一個NUMBER型的數(shù)值,它用于標(biāo)識與幾何對象相關(guān)的空間坐標(biāo)系。如果sdo_Srid為空(null),則表示沒有坐標(biāo)系與該幾何對象相關(guān);如果該值不為空,則該值必須為MDSYS.CS_SRS表中SRID字段的一個值,在創(chuàng)建含有幾何對象的表時,這個值必須加入到描述空間數(shù)據(jù)表元數(shù)據(jù)的USER_SDO_GEOM_METADATA視圖的SRID字段中。對于我們通常使用國際標(biāo)準(zhǔn)的Longitude/Latitude(8307),Oracle
Spatial規(guī)定,一個幾何字段中的所有幾何對象都必須為相同的sdo_Srid值。

  ③ sdo_Point

  
sdo_Point是一個包含三維坐標(biāo)X,Y,Z數(shù)值信息的對象,用于表示幾何類型為點的幾何對象。如果sdo_Elem_Info和SDO_ORDINATES數(shù)組都為空,則sdo_Point中的X,Y,Z為點對象的坐標(biāo)值,否則,sdo_Point的值將被忽略(用NULL表示)。Oracle
Spatial強(qiáng)烈要求用sdo_Point存儲空間實體為點類型空間數(shù)據(jù),這樣可以極大的優(yōu)化Oracle
Spatial的存儲性能和查詢效率。

 ?、?br/>sdo_Elem_Info

  sdo_Elem_Info是一個可變長度的數(shù)組,每3個數(shù)作為一個元素單位,用于表示坐標(biāo)是如何存儲在SDO_ORDINATES數(shù)組中的。本文把組成一個元素的3個數(shù)稱為3元組。一個3元組包含以下3部分的內(nèi)容:
  
  ◇
SDO_STARTING_OFFSET

  SDO_STARTING_OFFSET
表明每個幾何元素的第一個坐標(biāo)在SDO_ORDINATES數(shù)組中的存儲位置。它的值從1開始,逐漸增加。

  ◇
SDO_ETYPE

  SDO_ETYPE 用于表示幾何對象中每個組成元素的幾何類型。當(dāng)它的值為1, 2,
1003和2003時,表明這個幾何元素為簡單元素。如果SDO_ETYPE為1003,表明該多邊形為外環(huán)(第一個數(shù)為1表示外環(huán)),坐標(biāo)值以逆時針存儲;如果SDO_ETYPE為2003,表明該多邊形為內(nèi)環(huán)(第一個數(shù)為2表示內(nèi)環(huán)),坐標(biāo)值以順時針存儲。當(dāng)SDO_ETYPE為4,
1005和2005時,表明這個幾何元素為復(fù)雜元素。它至少包含一個3元組用以說明該復(fù)雜元素具有多少個幾何簡單元素。同樣,1005表示多邊形為外環(huán),坐標(biāo)值以逆時針存儲;2005表示多邊形為內(nèi)環(huán),坐標(biāo)值以順時針存儲。

  ◇
SDO_INTERPRETATION

  SDO_INTERPRETATION具有兩層含義,具體的作用由SDO_ETYPE是否為復(fù)雜元素決定。如果SDO_ETYPE是復(fù)雜元素(4,
1005和2005),則SDO_INTERPRETATION表示它后面有幾個子3元組屬于這個復(fù)雜元素。如果SDO_ETYPE是簡單元素(1, 2,
1003和2003),則SDO_INTERPRETATION表示該元素的坐標(biāo)值在SDO_ORDINATES中是如何排列的。

  需要注意的是,對于復(fù)雜元素來說,組成它的子元素是連續(xù)的,一個子元素的最后一個點是下一個子元素的起點。最后一個子元素的最后一個坐標(biāo)要么與下一個元素的SDO_STARTING_OFFSET值減1所對應(yīng)的坐標(biāo)相同,要么是整個SDO_ORDINATES數(shù)組的最后一個坐標(biāo)。
                                                 
Oracle Spatial基本操作是怎樣的        

  ⑤
sdo_Ordinates

  SDO_ORDINATES是一個可變長度的數(shù)組,用于存儲幾何對象的實際坐標(biāo),是一個最大長度為1048576,類型為Number的數(shù)組。
 
  SDO_ORDINATES必須與sdo_Elem_Info數(shù)組配合使用,才具有實際意義。SDO_ORDINATES的坐標(biāo)存儲方式由幾何對象的維數(shù)決定,如果幾何對象為二維,則SDO_ORDINATES的坐標(biāo)以{
x1, y1, x2, y2, …}順序排列,如果幾何對象為三維,則SDO_ORDINATES的坐標(biāo)以{x1, y1, z1, x2, y2, z2,
…}的順序排列。

  3、空間索引技術(shù):

  Oracle
Spatial提供R樹索引和四叉樹索引兩種索引機(jī)制來提高空間查詢和空間分析的速度。用戶需要根據(jù)不同空間數(shù)據(jù)類型創(chuàng)建不同的索引,當(dāng)空間數(shù)據(jù)類型比較復(fù)雜時,如果選擇索引類型不當(dāng),將使Oracle
Spatial創(chuàng)建索引的過程變得非常慢。

三、將經(jīng)緯度轉(zhuǎn)化成地名

  目前各類位置服務(wù)LBS最終返回的都是誤差允許范圍內(nèi)的經(jīng)緯度,如GPS車載終端,手機(jī)定位等移動設(shè)備,系統(tǒng)通過一定的技術(shù)算法可以將其轉(zhuǎn)化成具體的地名或附近的地標(biāo)。或根據(jù)需要返回當(dāng)前位置用戶關(guān)心的周邊信息:如醫(yī)院、賓館、加油站、公交車站等內(nèi)容。

  1、空間數(shù)據(jù)到Oracle
Spatial的導(dǎo)入

  當(dāng)前專題空間數(shù)據(jù)庫建立的過程包括技術(shù)設(shè)計、資料準(zhǔn)備、數(shù)據(jù)獲取和數(shù)據(jù)入庫等內(nèi)容。數(shù)據(jù)的獲取??衫矛F(xiàn)有的GIS
專業(yè)軟件如GeoStar、MAPGIS、SUPERMAP、ARCGIS 等來實現(xiàn),獲得的數(shù)據(jù)通過某一空間數(shù)據(jù)引擎(如Easyloader)上載到Oracle
數(shù)據(jù)庫中,實現(xiàn)利用Oracle Spatial 存儲、管理空間數(shù)據(jù)。MAPORA 引擎是把MAPGIS 的明碼格式通過編程實現(xiàn)空間數(shù)據(jù)上載Oracle
Spatial 的一種方法。

  2、定位服務(wù)的整個流程

Oracle Spatial基本操作是怎樣的        

  3、Oracle
Spatial關(guān)聯(lián)用到的程序包:

  ◆ sdo_Geom.Relate(sdo_Geometry1, ‘MASK’,
sod_Geometry2, tolerance
):用于判斷一個幾何體與另一個幾何體的關(guān)系,我們用于判斷當(dāng)前點是否在某一個面(省份面、縣市面、鄉(xiāng)鎮(zhèn)面)上。

  ◇
sdo_Geometry1,sdo_Geometry2為空間數(shù)據(jù)對應(yīng)的幾何對象。

  ◇ Tolerance:
容許的精度范圍;

  ◇
MASK=Anyinteract/Contains/Coveredby/Covers/Disjoint/

    ○ Anyinteract:
sdo_Geometry2落在sdo_Geometry1面上包括在邊上。

    ○ Contains:
sdo_Geometry2完全包含在sdo_Geometry1幾何對象中,并且兩個幾何對象的邊沒有交叉。

    ○ Coveredby:
sdo_Geometry1完全包含在sdo_Geometry2中,并且這兩個幾何對象的邊有一個或多個點相互重疊。

    ○ Covers:
sdo_Geometry2完全包含在sdo_Geometry1中,并且這兩個幾何對象的邊有一個或多個點相互重疊。

    ○ Disjoint:
兩個幾何沒有重疊交叉點,也沒有共同的邊。

    ○ Equal: 兩個幾何是相等的。

    ○ Inside:
sdo_Geometry1完全包含在sdo_Geometry2幾何對象中,并且兩個幾何對象的邊沒有交叉。

    ○ On:
sdo_Geometry1的邊和內(nèi)部的線完全在sdo_Geometry2上。

    ○ Overlapbdydisjoint:
兩個幾何對象交迭,但是邊沒有交叉。

    ○ Overlapbdyintersect:
兩個幾何對象交迭,并且邊有部分交叉。

    ○ Touch: 兩個幾何對象有共同的邊,但沒有交叉。

  ◆ sdo_nn(
sdo_Geometry1, sdo_Geometry2, ‘sdo_num_res’, Tolerance
):用于返回幾何體sdo_Geometry2周邊附近有什么其他幾何體集。

  ◇
sdo_Geometry1,sdo_Geometry2為空間數(shù)據(jù)對應(yīng)的幾何對象。

  ◇ Tolerance:
容許的精度范圍;

  ◇ sdo_num_res=n: 表示返回n個幾何體,=1表示只返回一個。

  ◆
sdo_Geom.Within_Distance(sdo_Geometry1, Distance, sdo_Geometry2, Tolerance,
'unit' )用于判斷幾何體sdo_Geometry2在指定的距離Distance內(nèi)周邊附近有什么其他幾何體集。

  ◇
sdo_Geometry1,sdo_Geometry2為空間數(shù)據(jù)對應(yīng)的幾何對象。

  ◇ Tolerance:
容許的精度范圍;

  ◇ Distance: 指定的距離;

  ◇ Unit: 用于表示距離的單位,可能是Unit=M/
Unit=KM等長度單位,但必須是SDO_DIST_UNITS表中列舉出來的單位之一。

  4、返回的信息:

  返回的信息根據(jù)業(yè)務(wù)需要可以返回空間信息關(guān)聯(lián)到的所有信息,然后用三段論方式組合成一段話,通過SMS等方式返回到移動終端。

  ◆
可以是當(dāng)前位置的地名、城市地標(biāo)、自定義地標(biāo)、道路名稱等位置信息;

  ◆
可以是當(dāng)前位置的周邊信息:醫(yī)院、賓館、加油站、公交車站等;

四、結(jié)束語

   采用Oracle
Spatial
存儲、管理空間數(shù)據(jù),易于解決數(shù)據(jù)共享、分布式處理、網(wǎng)絡(luò)通信、開放式開發(fā)、并發(fā)控制、網(wǎng)絡(luò)化集成、跨平臺運行及數(shù)據(jù)安全恢復(fù)機(jī)制等方面的難題。

  可以直接通過Oracle
Spatial 具有強(qiáng)大空間分析
進(jìn)行空間分析:最短路徑分析、連通性分析、交通系統(tǒng)中最少換乘算法及其實現(xiàn)等。

  LBS業(yè)務(wù)具有廣闊的發(fā)展前景,目前商用的LBS業(yè)爭也達(dá)到了相當(dāng)程度的滲透率。LBS業(yè)務(wù)涉及的領(lǐng)域很多,需要移動通信領(lǐng)域與GIS領(lǐng)域相結(jié)合來共同實現(xiàn)。我國目前很重視GIS領(lǐng)域的發(fā)展,國內(nèi)已經(jīng)有相當(dāng)多具有一定實力和發(fā)展?jié)摿Φ腉IS廠商。相信隨著今后LBS業(yè)務(wù)需求的不斷增長,以及我國GIS領(lǐng)域的不斷發(fā)展完善,LBS業(yè)務(wù)將得到更廣泛的應(yīng)用。

看完上述內(nèi)容,你們掌握Oracle Spatial基本操作是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI