我正在使用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)
答案 0 :(得分:0)
使用JGeometry构造函数(适用于所有几何,也适用于复合几何,弧,带孔和多边形的多边形):
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);