由於最近在作GIS項目,中間涉及存取Oracle Spatial的SDO_Geometry信息,因爲當初的設計緣由,如今增長一個功能,要從庫中取出地理信息的數據——這個功能可真是折騰人啊。。java
我也是剛接觸GIS不久,對於SDO_Geometry和JGeometry之間的轉換並不熟悉,並且不會將其轉換爲字符串,因而就杯具了。sql
SDO_Geometry信息存儲進數據庫是分紅這樣的幾個部分的:數據庫
一、SDO_GTYPE :表示要存儲的幾何類型,如點線面。它是經過 NUMBER類型來表達的;數組
二、SDO_SRID :幾何的空間參考座標系,類型也爲 NUMBER;oracle
三、SDO_POINT :若是幾何類型點類型的話,就是存儲點座標,不然爲空。oracle自定義的SDO_POINT_TYPE類型;學習
四、SDO_ELEM_INFO :定義要如何理解SDO_ORDINATES中的座標串的;設計
五、SDO_ORDINATES :存儲實際座標的,以X、Y以及不一樣點之間都是逗號隔開;code
其中SDO_ELEM_INFO和SDO_ORDINATES都是sql.Array對象,而不是正常的java中的對象——這麼說是否是不太專業⊙﹏⊙b汗對象
如何從sql.Array 中取值呢?ci
ResultSet rs=。。。。 java.sql.Array arr=rs.getArray(3);//假定第三列是Array類型的 Object obj=arr.getArray();//經過getArray方法,會返還一個Object對象 java.math.BigDecimal[] bd_Array=(java.math.BigDecimal)obj;//將obj強轉爲最終類型的數組
這是IBM的幫助系統給的寫法,學習一下——固然這須要前提是知道這個sql.Array中具體的數據類型,就這些。