首先說以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; }
