由于最近在作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中具体的数据类型,就这些。