Posted on 2005-02-03 21:16
海天一鷗 閱讀(327)
評論(0) 編輯 收藏 所屬分類:
Java數據庫技術
如果你已經在Oracle中存儲了幾何數據,你就可以直接從瀏覽器中瀏覽它,而不需要任何其它的軟件。
Oracle Spatial無論從功能,數據結構,還是幫助用戶存儲或重新找回空間數據的表格來說,都算得上是一種完備的設置。該數據以二維空間,三維空間,或四維空間的形式來描述形狀以及它們的幾何關聯。
有了Oracle Spatial,你就可以定義一組有特色的形狀(諸如點,線,矩形,多邊形,或者);你可以將數據存儲注冊于Oracle Spatial數據詞典中,并可從中重新找回;還可以對該數據提出質疑,以重新找回關于范圍,交叉點,親密關系,以及其它一些以內插值置換的信息。
Oracle Spatial數據最初是從一些很難閱讀的存儲物諸如SDO-POINT、SDO_ORDINATES中得來的。能夠直接解壓,直接使用而不需要額外的軟件,這對用戶來說無疑很有益處。SVG(可變動的矢量繪圖檔)是從數據庫中產生的,只要你的機器上安裝了SVG瀏覽器,它就可以幫你毫不費力地完成這一任務,。
這篇文章里,我將要向你展示一個PL/SQL包裹,當用戶通過modplsql界面下達指令時,這一包裹會產生出足夠的SVG,讓你用它們來瀏覽那些數據,這些在Oracle Spatial使用說明的第二章中用一個簡單的例子作了介紹。(在Oracle Technology Network上,你可以在線看到每一個主要數據庫版本的HTML版本,在該網絡上,你可能需要注冊)。這個例子中定義了四個圖形――一個矩形,兩個多邊形,以及一個圓,以此來幫助一個軟件制造商確定在哪里可以獲得更多的銷售利潤。為了節省空間,我只支持這個例子中所涉及的三種形狀。我不支持單元轉換(公尺置換成像素),但是我支持將那些圖象卷起來并放大。我還假設所有的數據現在都是二維的。
在將數據轉換成SVG所期望的形式的過程中遭遇到的最大挑戰是,描述那些形狀有許多不同的方法。比如說,Oracle Spatial對“圓”的定義是:三個點沿著其圓周而成。這對于描述一個二維的圓很有用,而在三維或四維空間中,從特定的方向看,它則可能是歪斜的。SVG期望中點與半徑相匹配。在數學中只要求那些三點不在同一條直線上,這樣的可能性則大多了。還有一個小難題就是這樣一個事實,那就是Oracle Spatial更傾向于按照數學圖表來描述數據,以Y軸為縱軸,而在SVG中則以Y軸為橫軸,因此要把整個圖形翻轉成垂直狀。
如果你安裝了Oracle Spatial,并運行Oracle Spatial用戶指導第二章中的聲明,就可以從modplsql中編輯并運行以下腳本了。我發現“m=20”是一個很好的放大倍率,與圖表很相符。