Geo Fence: как определить, находится ли точка или фигура внутри многоугольника, используя оракула - PullRequest
4 голосов
/ 05 января 2011

Как узнать, находится ли точка или многоугольник внутри другого многоугольника, с помощью пространственного SQL-запроса оракула

Вот сценарий;

У меня есть таблица (STATE_TABLE), которая содержит пространственный тип (sdo_geometry), который является многоугольником (скажем, состояние), у меня есть другая таблица (UNIVERSITY_TABLE), которая содержит пространственные данные (sdo_geometry) (точка / многоугольник), которая содержит Университеты;

Теперь, как мне узнать, находятся ли выбранные университеты в данном состоянии с помощью оператора выбора SQL.

Прежде всего, я хочу найти существование данного объекта (объектов) в геозоне.

Спасибо.

1 Ответ

6 голосов
/ 05 января 2011

Вам понадобится использовать либо SDO_CONTAINS, либо SDO_RELATE с маской 'CONTAINS'

. См. Документацию, расположенную по адресу

SDO_CONTAINS http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_operat.htm#sthref1064 для

или

SDO_RELATE http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11830/sdo_operat.htm#i78531

Любое из этих действий вы сделаете примерно так (если ваша пространственная информация содержится в столбце с именем «GEOM», который пространственно проиндексирован)):

select 
    ST.NAME, UT.UNIVERSITY_NAME
from
    STATE_TABLE ST
    INNER JOIN UNIVERSITY_TABLE UT
      ON SDO_CONTAINS(ST.GEOM, UT.GEOM) = 'TRUE'

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...