• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Oracle Spatial三維模型存儲(chǔ)與可視化

    2014-06-27 05:47:29王熙宇楊東興
    測(cè)繪通報(bào) 2014年11期
    關(guān)鍵詞:三維空間面向?qū)ο?/a>空間數(shù)據(jù)

    韋 波,王熙宇,楊東興

    (1.桂林理工大學(xué)廣西礦冶與環(huán)境科學(xué)實(shí)驗(yàn)中心,廣西 桂林 541004;2.桂林理工大學(xué)測(cè)繪地理信息學(xué)院,廣西 桂林 541004)

    Oracle Spatial三維模型存儲(chǔ)與可視化

    韋 波1,2,王熙宇1,2,楊東興2

    (1.桂林理工大學(xué)廣西礦冶與環(huán)境科學(xué)實(shí)驗(yàn)中心,廣西 桂林 541004;2.桂林理工大學(xué)測(cè)繪地理信息學(xué)院,廣西 桂林 541004)

    論述Oracle Spatial三維空間數(shù)據(jù)模型,以存儲(chǔ)表面的方式設(shè)計(jì)了三維模型的數(shù)據(jù)庫(kù)存儲(chǔ)方案,同時(shí)引入Hibernate對(duì)象持久化技術(shù)并自行設(shè)計(jì)開(kāi)發(fā)了SDO_GEOMETRY映射類(lèi),結(jié)合Java 3D實(shí)現(xiàn)了三維模型的可視化。結(jié)果表明構(gòu)建的存儲(chǔ)與可視化方案可行。

    Oracle Spatial;三維空間數(shù)據(jù)存儲(chǔ);可視化

    一、引 言

    Oracle Spatial作為對(duì)象-關(guān)系型數(shù)據(jù)庫(kù)的典型代表,一直是地理信息系統(tǒng)(GIS)研究與應(yīng)用的主要對(duì)象之一。王云帆探討了Oracle Spatial的特點(diǎn),并應(yīng)用數(shù)據(jù)庫(kù)技術(shù)實(shí)現(xiàn)了空間數(shù)據(jù)管理與操作[1];盧廷軍等以O(shè)racle Spatial為工具,建立了海量柵格數(shù)據(jù)的空間索引[2];Bianca等提出了Oracle Spatial 3D點(diǎn)云數(shù)據(jù)的四叉樹(shù)索引方法[3];馬奎等在.NET環(huán)境下,基于OO4O核心實(shí)現(xiàn)了對(duì)Oracle Spatial空間數(shù)據(jù)的互操作[4];鄔群勇等使用Oracle Spatial SDO_GEOMETRY抽象幾何數(shù)據(jù)類(lèi)型存儲(chǔ)環(huán)境空間數(shù)據(jù),實(shí)現(xiàn)了OLAP和GIS的完全集成[5];錢(qián)華明、戴建旺、高光大、馮興杰等分別應(yīng)用Oracle Spatial建立了WebGIS車(chē)輛監(jiān)控系統(tǒng)[6]、土地調(diào)查國(guó)家級(jí)數(shù)據(jù)庫(kù)[7]、鐵礦資源潛力數(shù)據(jù)庫(kù)[8]、航油公司EAM系統(tǒng)[9]。

    雖然目前對(duì)Oracle Spatial的研究與應(yīng)用取得了較多的成果,但主要集中于二維空間數(shù)據(jù)方面。Oracle從11g版本開(kāi)始支持對(duì)三維空間數(shù)據(jù)的存儲(chǔ)與管理,因此,本文結(jié)合Hibernate對(duì)象持久化和Java 3D,討論Oracle Spatial的三維空間數(shù)據(jù)存儲(chǔ)與可視化技術(shù)。

    二、Oracle Spatial三維空間數(shù)據(jù)模型

    1.三維存儲(chǔ)模型

    如圖1所示,表面、形體和組合類(lèi)型是三維存儲(chǔ)模型中所特有的,在二維存儲(chǔ)模型中不支持。表面和構(gòu)成形體的表面目前只能是三維平面,不能是三維曲面。組合類(lèi)型不同于二維的復(fù)合線串、復(fù)合多邊形等復(fù)合類(lèi)型[1],組合類(lèi)型只能是表面、形體等同類(lèi)型三維對(duì)象間的組合,復(fù)合類(lèi)型在三維存儲(chǔ)模型中不支持。多邊形類(lèi)型包括含洞的多邊形。集合可以是點(diǎn)、線、多邊形的集合,也可以是表面、形體的集合,包括由同類(lèi)型對(duì)象構(gòu)成的(同質(zhì))集合和由不同類(lèi)型對(duì)象構(gòu)成的(異質(zhì))集合。

    圖1 Oracle Spatial三維存儲(chǔ)模型

    2.SDO_GEOMETRY三維對(duì)象存儲(chǔ)

    SDO_GEOMETRY在Oracle Spatial中被定義為一個(gè)對(duì)象類(lèi)型,共包含5個(gè)屬性:

    與二維版本相比,SDO_GEOMETRY及其5個(gè)屬性的定義形式均沒(méi)有發(fā)生變化,只是將它們擴(kuò)展到三維的應(yīng)用環(huán)境。

    圖2中多邊形的SDO_GEOMETRY二維、三維空間存儲(chǔ)表示如下,可對(duì)比看出二者的明顯異同。

    圖2 多邊形示例

    三、三維模型存儲(chǔ)與可視化實(shí)例

    圖3為Google Earth上的兩個(gè)建筑物三維模型,其中一個(gè)為教堂(右下角),而另一個(gè)為辦公大樓。

    圖3 3D模型實(shí)例

    1.總體框架

    總體分為3層:數(shù)據(jù)庫(kù)層、持久化層、可視化層,如圖4所示。數(shù)據(jù)庫(kù)層使用Oracle Spatial存儲(chǔ)三維模型數(shù)據(jù)。持久化層通過(guò)對(duì)象-關(guān)系映射(object-relation mapping,ORM),處理面向?qū)ο蠛兔嫦蜿P(guān)系二者之間的映射,實(shí)現(xiàn)模型的面向?qū)ο蟛僮?,采用Hibernate技術(shù)實(shí)現(xiàn)??梢暬瘜佑蒍ava 3D構(gòu)建虛擬場(chǎng)景,完成三維模型的顯示。

    引入Hibernate的原因在于當(dāng)將空間對(duì)象從數(shù)據(jù)庫(kù)重新加載至內(nèi)存時(shí),由于Java、C++、C#等高級(jí)程序設(shè)計(jì)語(yǔ)言缺乏與SDO_GEOMETRY直接映射的數(shù)據(jù)類(lèi)型,不能直接構(gòu)建空間對(duì)象對(duì)應(yīng)的類(lèi),進(jìn)而不能直接實(shí)現(xiàn)面向?qū)ο蟮牟僮?;而Hibernate則能夠方便而快速地建立持久化層和ORM[10],解決對(duì)象持久化問(wèn)題,實(shí)現(xiàn)對(duì)空間對(duì)象的面向?qū)ο蟛僮鳌?/p>

    圖4 三維模型可視化總體框架

    2.數(shù)據(jù)庫(kù)表設(shè)計(jì)與數(shù)據(jù)導(dǎo)入

    從Google Earth位置工具欄可以看出,教堂模型共包括15個(gè)屋頂和48個(gè)墻面,而辦公大樓模型共包括14個(gè)屋頂和131個(gè)墻面。如果將模型整體存儲(chǔ),會(huì)造成SDO_GEOMETRY的坐標(biāo)數(shù)據(jù)太長(zhǎng),不方便模型的解析。因此采用分解策略,設(shè)計(jì)兩個(gè)數(shù)據(jù)庫(kù)表分別用于存儲(chǔ)模型的屋頂和墻面的表面數(shù)據(jù)。表1為屋頂?shù)谋斫Y(jié)構(gòu),表2為墻面的表結(jié)構(gòu)。

    表1 屋頂表(BUILDING_ROOF_3D)結(jié)構(gòu)

    表2 墻面表(BUILDING_FACADE_3D)結(jié)構(gòu)

    由于三維模型數(shù)據(jù)量大,采用SDO_GEOMETRY構(gòu)造函數(shù)導(dǎo)入數(shù)據(jù)的方法并不可行。本文首先利用Google Earth將兩個(gè)建筑物的墻面和屋頂?shù)谋砻嬷鹨晦D(zhuǎn)換成KML文件,然后利用Oracle Spatial的FROM_KMLGEOMETRY函數(shù)編程將KML格式的三維數(shù)據(jù)導(dǎo)入到兩個(gè)數(shù)據(jù)庫(kù)表中。

    3.三維模型Hibernate POJO

    POJO(plain old java objects,簡(jiǎn)單的Java對(duì)象),是Hibernate的一種持久化類(lèi)。通常,一個(gè)持久化類(lèi)和一個(gè)表對(duì)應(yīng),POJO的字段和屬性則分別與表的字段和記錄相對(duì)應(yīng)。因此,需要?jiǎng)?chuàng)建兩個(gè)POJO:BuildingRoof3d和BuildingFacade3d類(lèi),分別與表BUILDING_ROOF_3D和BUILDING_FACADE_3D相對(duì)應(yīng)。

    以表BUILDING_ROOF_3D為例,根據(jù)其表結(jié)構(gòu)(限于篇幅,以字段ROOF_ID、GEOM為例,下同),創(chuàng)建的BuildingRoof3d類(lèi)為:

    4.Hibernate POJO ORM文件

    將Oracle表數(shù)據(jù)類(lèi)型映射為Java數(shù)據(jù)類(lèi)型,如NUMBER映射為L(zhǎng)ong,需要建立它們之間的映射關(guān)系。Hibernate的ORM文件為一個(gè)XML文件,一個(gè)POJO對(duì)應(yīng)一個(gè)ORM文件。BuildingRoof3d類(lèi)的ORM文件(BuildingRoof3d.hbm.xml)為:

    5.SDO_GEOMETRY映射類(lèi)

    Hibernate POJO和ORM文件都使用了一個(gè)J3D_ GeometryType類(lèi)作為SDO_GEOMETRY的映射類(lèi)型,J3D_GeometryType類(lèi)并不是Java定義的,而需要自行設(shè)計(jì)和開(kāi)發(fā)。本文基于Oracle Spatial提供的JGeometry和J3D_Geometry類(lèi),實(shí)現(xiàn)了該類(lèi),創(chuàng)建的主要步驟如下。

    (1)定義Hibernate方言類(lèi)

    該方言類(lèi)為Hibernate Oracle10gDialect方言類(lèi)的子類(lèi),在其構(gòu)造函數(shù)中注冊(cè)SDO_GEOMETRY為

    (2)定義Java映射類(lèi)

    即J3D_GeometryType類(lèi)。Hibernate提供了UserType接口用于用戶實(shí)現(xiàn)自定義的Java映射類(lèi)。自定義的Java映射類(lèi)包含一個(gè)Oracle Spatial J3D_ Geometry類(lèi)實(shí)例,并且還必須實(shí)現(xiàn)UserType接口中的11個(gè)方法。其中的nullSafeGet()方法、nullSafe-Set()方法實(shí)現(xiàn)的關(guān)鍵語(yǔ)句如下:

    nullSafeGet()方法負(fù)責(zé)從SDO_GEOMETRY讀取數(shù)據(jù)存儲(chǔ)到J3D_Geometry實(shí)例中,nullSafeSet()方法則負(fù)責(zé)將J3D_Geometry實(shí)例存儲(chǔ)到SDO_GEOMETRY中,具體實(shí)現(xiàn)借助了Oracle Spatial JGeometry類(lèi)實(shí)例作為SDO_GEOMETRY和J3D_Geometry實(shí)例數(shù)據(jù)轉(zhuǎn)換的中間對(duì)象。

    6.模型Java 3D可視化

    可視化大致分兩步:首先從數(shù)據(jù)庫(kù)中獲取三維模型的數(shù)據(jù),然后生成模型的Java 3D對(duì)象。

    獲取三維模型數(shù)據(jù),以面向?qū)ο蟮姆绞竭M(jìn)行。如獲取紋理、坐標(biāo)的程序?yàn)?event為BuildingRoof3d或BuildingFacade3d類(lèi)對(duì)象):

    坐標(biāo)獲取后需要先利用SDO_GEOMETRY的SDO_ELEM_INFO屬性對(duì)其進(jìn)行解析,然后將其傳遞給Java 3D。

    構(gòu)建Java 3D對(duì)象,即創(chuàng)建三維形體Shape3D對(duì)象,包括定義它的幾何信息和外觀。幾何信息使用GeometryInfo類(lèi)設(shè)置,外觀主要是設(shè)置紋理貼圖,使用Appearance類(lèi)實(shí)現(xiàn)。Shape3D對(duì)象創(chuàng)建后,將其加入到Java 3D的TransformGroup節(jié)點(diǎn)中。

    圖5為可視化后的效果圖,與圖3模型三維效果一致,表明構(gòu)建的存儲(chǔ)與可視化方案可行。

    圖5 Java 3D模型可視化效果

    四、結(jié)束語(yǔ)

    Oracle Spatial通過(guò)增加對(duì)表面、形體等三維空間對(duì)象類(lèi)型的支持,從對(duì)二維空間數(shù)據(jù)的存儲(chǔ)擴(kuò)展到對(duì)三維空間數(shù)據(jù)的存儲(chǔ)。本文通過(guò)存儲(chǔ)兩個(gè)三維模型表面的方式設(shè)計(jì)和實(shí)踐了Oracle Spatial的三維存儲(chǔ);同時(shí)引入Hibernate對(duì)象持久化技術(shù),結(jié)合Java 3D實(shí)現(xiàn)了三維模型的可視化,結(jié)果表明構(gòu)建的存儲(chǔ)與可視化方案可行。通過(guò)自行設(shè)計(jì)開(kāi)發(fā)的SDO_ GEOMETRY映射類(lèi),實(shí)現(xiàn)了對(duì)包含SDO_GEOMETRY數(shù)據(jù)類(lèi)型字段的Oracle數(shù)據(jù)庫(kù)表的對(duì)象-關(guān)系映射,解決了其建立對(duì)應(yīng)Hibernate POJO的問(wèn)題,從而實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫(kù)中三維模型的面向?qū)ο蟛僮?,也為?shí)現(xiàn)對(duì)Oracle Spatial中二維或三維空間對(duì)象的面向?qū)ο蟛僮?加載、保存、更新、刪除、查詢等)提供了一種可行的思路。

    [1] 王云帆.Oracle Spatial空間數(shù)據(jù)存儲(chǔ)管理技術(shù)的應(yīng)用研究[J].測(cè)繪通報(bào),2011(6):76-79.

    [2] 盧廷軍,黃明.海量柵格數(shù)據(jù)空間索引與存儲(chǔ)的研究[J].測(cè)繪通報(bào),2010(10):24-26.

    [3] BIANCA S,MO HAMMAD M,DEBRA F L,et al.Octree-based Indexing for 3D Pointclouds within an Oracle Spatial DBMS[J].Computers&Geosciences,2013(51):430-438.

    [4] 馬奎,李宏偉,李勤超,等..NET下基于OO4O核心的Oracle Spatial空間數(shù)據(jù)互操作[J].計(jì)算機(jī)應(yīng)用,2009,29(S1):205-208.

    [5] 鄔群勇,劉夢(mèng)鑫,李細(xì)杰,等.面向環(huán)境數(shù)據(jù)集的Spatial OLAP系統(tǒng)集成[J].地球信息科學(xué)學(xué)報(bào),2013,15(1):90-96.

    [6] 錢(qián)華明,施麗娟,王雯升.WebGIS車(chē)輛監(jiān)控系統(tǒng)的空間數(shù)據(jù)存儲(chǔ)技術(shù)研究[J].計(jì)算機(jī)工程與科學(xué),2009,31(4):124-129.

    [7] 戴建旺,白曉飛.第二次全國(guó)土地調(diào)查國(guó)家級(jí)數(shù)據(jù)庫(kù)管理系統(tǒng)關(guān)鍵技術(shù)研究[J].中國(guó)土地科學(xué),2010,24(6):74-80.

    [8] 高光大,王永志,張道勇,等.基于GIS和SOA的我國(guó)鐵礦資源潛力數(shù)據(jù)庫(kù)開(kāi)發(fā)與應(yīng)用[J].吉林大學(xué)學(xué)報(bào):地球科學(xué)版,2010,40(6):1515-1520.

    [9] 馮興杰,許亞娟,王輝.基于Oracle Spatial技術(shù)的地理信息管理與優(yōu)化[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(5):1706-1709.

    [10] 王海濤,賈宗璞.基于Struts和Hibernate的Web應(yīng)用開(kāi)發(fā)[J].計(jì)算機(jī)工程,2011,37(9):112-114.

    《數(shù)字測(cè)圖原理與技術(shù)》(第二版)內(nèi)容簡(jiǎn)介

    本書(shū)由楊曉明等編著,系統(tǒng)地介紹了數(shù)字測(cè)圖的理論、技術(shù)和方法。其主要內(nèi)容包括:數(shù)字測(cè)圖概論、數(shù)字測(cè)圖的數(shù)學(xué)基礎(chǔ)、硬件設(shè)備、圖根控制測(cè)量、野外數(shù)據(jù)采集、計(jì)算機(jī)繪圖原理、數(shù)字測(cè)圖內(nèi)業(yè)、地圖數(shù)字化、數(shù)字測(cè)圖質(zhì)量控制、數(shù)字測(cè)圖成果的應(yīng)用、數(shù)字地籍測(cè)繪、數(shù)字地下管線圖測(cè)繪等。

    本書(shū)為高等學(xué)校測(cè)繪工程、GIS及相關(guān)專(zhuān)業(yè)的教材,亦可供相關(guān)技術(shù)人員學(xué)習(xí)參考。

    本書(shū)為16開(kāi)本,240頁(yè),定價(jià)34.00元。測(cè)繪出版社2014年10月出版。

    Storage and Visualization of 3D Model in Oracle Spatial

    WEI Bo,WANG Xiyu,YANG Dongxing

    P208

    B

    0494-0911(2014)11-0088-04

    2013-11-18

    廣西自然科學(xué)基金(2012GXNSFGA060001;桂科自0991248);桂林理工大學(xué)博士基金(GUT1996015)

    韋 波(1974—),男,瑤族,廣西荔浦人,博士,副教授,主要研究方向?yàn)榭臻g信息處理理論與方法。

    韋波,王熙宇,楊東興.Oracle Spatial三維模型存儲(chǔ)與可視化[J].測(cè)繪通報(bào),2014(11):88-91.

    10.13474/j.cnki.11-2246.2014.0371

    猜你喜歡
    三維空間面向?qū)ο?/a>空間數(shù)據(jù)
    面向?qū)ο蟮挠?jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)軟件系統(tǒng)的開(kāi)發(fā)
    三維空間的二維圖形
    面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
    元數(shù)據(jù)驅(qū)動(dòng)的多中心空間數(shù)據(jù)同步方法研究
    白紙的三維空間
    面向?qū)ο骔eb開(kāi)發(fā)編程語(yǔ)言的的評(píng)估方法
    三維空間中次線性Schr(o)dinger-Kirchhoff型方程的無(wú)窮多個(gè)負(fù)能量解
    面向?qū)ο笮畔⑻崛≈杏跋穹指顓?shù)的選擇
    河南科技(2014年10期)2014-02-27 14:09:03
    基于文件系統(tǒng)的分布式海量空間數(shù)據(jù)高效存儲(chǔ)與組織研究
    客戶端空間數(shù)據(jù)緩存策略
    奇台县| 新源县| 昌乐县| 屏东县| 沙雅县| 小金县| 宁安市| 原平市| 涟源市| 东丽区| 井研县| 三门县| 桐柏县| 页游| 郧西县| 乌审旗| 蓬溪县| 凤庆县| 隆化县| 泸定县| 开封县| 商水县| 拉萨市| 兴隆县| 聂拉木县| 洞头县| 元谋县| 广东省| 江孜县| 新疆| 昭通市| 城市| 广河县| 琼中| 临猗县| 南澳县| 和田市| 米泉市| 丹东市| 乌海市| 马公市|