【问题标题】:How to create STRUCT object for rotated point for preparedStatement in JDBC?如何在 JDBC 中为preparedStatement 的旋转点创建STRUCT 对象?
【发布时间】:2017-10-16 18:22:47
【问题描述】:

我正在使用 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)

【问题讨论】:

    标签: java oracle11g


    【解决方案1】:

    使用 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 将设置为空 转换成 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);
    

    【讨论】:

      猜你喜欢
      • 2021-06-25
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      相关资源
      最近更新 更多