Гео забора: как найти, если точка или форма находится внутри многоугольника, используя Oracle Spatial
-
25-09-2019 - |
Вопрос
Как найти, если точка или многоугольник внутри другого многоугольника, используя Oracle Spatial SQL Query
Вот сценарий;
У меня есть таблица (STATE_TABLE), которая содержит пространственный тип (SDO_Geometry), который представляет собой многоугольник (из SELE_GEOMEOMETRY), у меня другая таблица (University_Table), которая содержит пространственные данные (SDO_GEEOMEOMETRY) (точка / полигон), которая содержит университеты;
Теперь, как я могу найти, если выбранный университет ('ы) находятся в заданном состоянии с использованием оператора SQL SELECT.
В первую очередь я хочу найти существование данного объекта в геофоре.
Спасибо.
Решение
Вам нужно будет использовать SDO_Contains, либо SDO_relate с маской «Содержит»
Пожалуйста, смотрите документацию, расположенные в
Sdo_contains.http://download.orcle.com/docs/cd/e11882_01/Appdev.112/e11830/sdo_operat.htm#sthref1064. для
или
Sdo_relate.http://download.orcle.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'
Вам придется простить меня, поскольку я специально помню правильный синтаксис для этого, и я не знаю, если вышеупомянутое присоединение будет работать должным образом. Это должно быть достаточно, чтобы указать вам в правильном направлении.