如何在JDBC中为preparedStatement创建旋转点的STRUCT对象?

时间:2017-07-11 05:49:53

标签: java oracle11g

我正在使用java中的PreparedStatement处理批量插入到oracle数据库:

INSERT INTO table (id, geometry) VALUES (?, ?);

要创建一个点我使用JGeometry并将其存储到STRUCT:

double[] pos = {x, y};
JGeometry sdoGeometry = JGeometry.createPoint(pos, 2, srid);
Struct sgeo = JGeometry.store(sdoGeometry , connection);

然后我为预备语句设置对象:

ps.setInteger(id);
ps.setObject(sgeo);

最后我在数据库中使用了几何体:

SDO_GEOMETRY(2001, srid, MDSYS.SDO_POINT_TYPE(x, y, NULL), NULL, NULL)

我想知道是否有某种方法可以像下面那样插入旋转点?也许使用除JGeometry之外的其他类?

SDO_GEOMETRY(2001, srid, NULL, SDO_ELEM_INFO_ARRAY(1,1,1,3,1,0), SDO_ORDINATE_ARRAY(x, y, rotX, rotY)

1 个答案:

答案 0 :(得分:0)

使用JGeometry构造函数(适用于所有几何,也适用于复合几何,弧,带孔和多边形的多边形):

https://docs.oracle.com/database/122/SPAJV/oracle/spatial/geometry/JGeometry.html#JGeometry_int_int_int_A_double_A_

  

JGeometry public JGeometry(double x,                        双y,                        int srid)

     

构造一个点

的2D JGeometry实例      

参数:

     
      
  • x - x标签点的纵坐标

  •   
  • y - y标签点srid的纵坐标 - SRS id;如果使用0,那么MDSYS.SDO_GEOMETRY.SDO_SRID将被设置为null   转换为DB格式。

  •   
  • elemInfo - 几何元素信息数组

  •   
  • 纵坐标 - 几何坐标数组

  •   

创建一个旋转点:

int[] elems = {1, 1, 1, 3, 1, 0};
double[] coords = {x, y, rotX, rotY};
JGeometry sdoGeometry = new JGeometry(JGeometry.GTYPE_POINT, srid, elems, coords);