【发布时间】:2023-04-10 09:18:01
【问题描述】:
我在使用 SDO_GEOM.RELATE Oracle Spatial 函数时遇到了一些问题。我正在使用 Oracle 11.2.0.3 和 SRIM 8307。
我有折线和点并将它们与以下查询相关联我有一些奇怪的答案:
select SDO_GEOM.RELATE((select georoute from t_georoute where id_georoute = 2196), 'CONTAINS', pk_spatial.get_geo_point(43856030232), 20) CONTAINS,
SDO_GEOM.RELATE((select georoute from t_georoute where id_georoute = 2196), 'COVEREDBY', pk_spatial.get_geo_point(43856030232), 20) COVEREDBY,
SDO_GEOM.RELATE((select georoute from t_georoute where id_georoute = 2196), 'COVERS', pk_spatial.get_geo_point(43856030232), 20) COVERS,
SDO_GEOM.RELATE((select georoute from t_georoute where id_georoute = 2196), 'DISJOINT', pk_spatial.get_geo_point(43856030232), 20) DISJOINT,
SDO_GEOM.RELATE((select georoute from t_georoute where id_georoute = 2196), 'EQUAL', pk_spatial.get_geo_point(43856030232), 20) EQUAL,
SDO_GEOM.RELATE((select georoute from t_georoute where id_georoute = 2196), 'INSIDE', pk_spatial.get_geo_point(43856030232), 20) INSIDE,
SDO_GEOM.RELATE((select georoute from t_georoute where id_georoute = 2196), 'ON', pk_spatial.get_geo_point(43856030232), 20) ON_,
SDO_GEOM.RELATE((select georoute from t_georoute where id_georoute = 2196), 'OVERLAPBDYDISJOINT', pk_spatial.get_geo_point(43856030232), 20) OVERLAPBDYDISJOINT,
SDO_GEOM.RELATE((select georoute from t_georoute where id_georoute = 2196), 'OVERLAPBDYINTERSECT', pk_spatial.get_geo_point(43856030232), 20) OVERLAPBDYINTERSECT,
SDO_GEOM.RELATE((select georoute from t_georoute where id_georoute = 2196), 'TOUCH', pk_spatial.get_geo_point(43856030232), 20) TOUCH,
SDO_GEOM.RELATE((select georoute from t_georoute where id_georoute = 2196), 'determine', pk_spatial.get_geo_point(43856030232), 20) what
from dual;
"CONTAINS","COVEREDBY","COVERS","DISJOINT","EQUAL","INSIDE","ON_","OVERLAPBDYDISJOINT","OVERLAPBDYINTERSECT","TOUCH","WHAT" "CONTAINS","FALSE","FALSE","DISJOINT","FALSE","FALSE","FALSE","FALSE","FALSE","FALSE","DISJOINT"
从查询看来,几何图形是不相交的,但第一个包含第二个... 他们实际上很不高兴,但如果我要求任何相关我得到了真实的,那是错误的。
它看起来像一个错误,但也许我做错了什么。
提前致谢, 塞缪尔
【问题讨论】: