2016-03-15 1 views
0

У меня есть тролль, используя функцию SDO_GEOM.RELATE Oracle Spatial. Я использую Oracle 11.2.0.3 и Срим 8307.Неоднозначный ответ от Oracle SDO_GEOM.RELATE

Я е полилинию и точку и соотнесения их с помощью следующего запроса я какой-то странный ответ:

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;

«вхождений», «COVEREDBY», «COVER», «DISJOINT», «EQUAL», «INSIDE», «ON _», «OVERLAPBDYDISJOINT», «OVERLAPBDYINTERSECT», «TOUCH», «WHAT» «СОДЕРЖИТ», «FALSE», «FALSE» «FALSE», «FALSE», «FALSE», «FALSE», «DISAOINT»

Из запроса кажется, что геометрия не пересекается, но также и первая содержит второе ... Тебя расстраивают на самом деле, но если я попрошу любую ссылку, я поправлюсь, и это неправильно.

Это похоже на ошибку, но, возможно, я делаю что-то неправильно.

Заранее спасибо, Samuel

ответ

0

я узнал, что SDO_GEMOETRY имел некоторые избыточные точки. После того, как я удалил их, функция RELATE работала должным образом. Функция SDO_UTIL.REMOVE_DUPLICATE_VERTICES сделала трюк.

Надеюсь, это может быть полезно для кого-то в будущем.

Samuel