Geo Fence: найдите количество объектов (точек / линий / многоугольников) внутри многоугольника, используя пространственный оракул
Как написать SQL-запрос (с использованием Oracle Spatial), чтобы найти количество функций, доступных внутри многоугольника (геозона);
Объектами могут быть либо точки, линии или сам многоугольник.
Благодарю.
2 ответа
Попробуйте это утверждение:
select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
/
Мандерио, что первый параметр SDO_RELATE
столбец геометрии с пространственным индексом.
Обновление: не обращая внимания на это предложение, Альберт Годфринд сказал, что оно повторяет то, что уже делается внутри страны. Так что это неэффективно и медленно
Чтобы добавить ответ 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'
С уважением, Крис