有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java对于解决方案的几何体类,Oracle的ANYINTERACT+TOUCH空间操作符的等价物是什么?

我正在用Java编写一个旧的Oracle PL/SQL过程,其中一个查询包含以下where子句:

WHERE SDO_RELATE(shape, v_retrv_geo,'MASK=ANYINTERACT+TOUCH') = 'TRUE'

shapev_retrv_geo都是类型SDO_GEOMETRY。具体地说shape是由边界定义的区域v_retrv_geo是从lat/lon对创建的点

Oracle's docsANYINTERACT表示对象不相交(不相交定义为边界和内部不相交),而TOUCH表示边界相交但内部不相交。我认为掩码的+TOUCH部分是多余的,但是现有查询根据业务人员返回正确的结果

使用Java流的同一查询的我的版本如下所示:

.filter(area -> area.getShape().intersects(p) || area.getShape().touches(p))

其中parea.getShape()的结果都是com.vividsolutions.jts.geom.Geometryp是表示v_retrv_geo的点,area.getShape()是从旧查询中使用的shape列创建的Geometry对象

Vividsolution's docsintersects表示两个几何体至少有一个公共点,touches表示几何体至少有一个公共点,但它们的内部不相交

在某些情况下,Java版本在使用相同表中的数据时返回的区域比旧的PL/SQL版本多


共 (0) 个答案