首先说以shape字段在oracle中会被自动解析为5个子字段,分别是shape.sdo_gtype,类型分为点,线,面等,点是指只有一组坐标代号为2001,线就是两个点了也就是有两组坐标2002后面的应该都知道了,然后就是shape.sdo_srid,shape.sdo_point.x,shape.sdo_point.y,sdo_point.z
操作空间字段主要用的就是mdsys.sdo_geometry()这个函数,有兴趣的小伙伴可以详细了解一下
维护线设备的空间字段:
insert into tableName(shape) values( mdsys.sdo_geometry( 2002,--线 null, --srid根据公司规定来填 null, mdsys.sdo_elem_info_array(1, 2, 1), mdsys.sdo_ordinate_array(数据集合)--两组坐标x1,y1,x2,y2 ) );
维护点设备的空间字段:
insert into tableName(shape) values( mdsys.sdo_geometry(2001,--点 null,--srid mdsys.sdo_point_type(x坐标, y坐标, z坐标),--没有z就填null null, null) );
后面给出获取shape字段的坐标值代码
//参数是一个实体对象,也就是数据库里的一条数据 public double[] getShapeXY(Map map) throws Exception{ //获取shape字段 STRUCT shape =(STRUCT)map.get("SHAPE"); JGeometry geom=JGeometry.load(shape); int dimensions=geom.getDimensions(); double[] geomxy=geom.getFirstPoint(); double x1=geomxy[0]; double y1=geomxy[1]; double[] array={x1,y1}; return array; }