Geo Proke: найдите количество функций (точек / линий / многоугольников) внутри многоугольника с использованием Oracle Spatial

StackOverflow https://stackoverflow.com/questions/4611944

  •  26-09-2019
  •  | 
  •  

Вопрос

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

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

Спасибо.

Это было полезно?

Решение

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

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' 

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top