Geo Fence: найдите количество объектов (точек / линий / многоугольников) внутри многоугольника, используя пространственный оракул - PullRequest
0 голосов
/ 06 января 2011

Как написать SQL-запрос (с использованием Oracle Spatial), чтобы найти количество объектов, доступных внутри многоугольника (геозона);

Объектами могут быть либо точки, линии или сам многоугольник.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 06 января 2011

Попробуйте это утверждение:

select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
/

Условно, что первый параметр SDO_RELATE является столбцом геометрии с пространственным индексом.

0 голосов
/ 13 января 2012

Обновление: не обращая внимания на это предложение, Альберт Годфринд сказал, что оно повторяет то, что уже делается внутри страны.Так что это неэффективно и медленно:

Чтобы добавить к ответу Tims, рекомендуется объединять SDO_FILTER и SDO_RELATE из соображений производительности.SDO_FILTER быстрый, но возвращает слишком много геометрий, он даст вам все геометрии, чей минимальный ограничивающий прямоугольник (MBR) пересекается с геометрией вашего забора.SDO_RELATE является точным, но медленным.Так что объедините оба:

select count(*) 
from geometry_table t 
where SDO_FILTER(t.geom_column, geofence) = 'TRUE' and SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE' 

С уважением, Крис

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