oracle空间字段shape维护

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

 

posted @ 2020-04-15 11:33  pengchengcheng  阅读(1608)  评论(0编辑  收藏  举报