地理围栏:使用oracle Spatial查找多边形内部的要素(点/线/多边形)数量

时间:2011-01-06 05:11:21

标签: geolocation oracle-spatial

如何编写SQL查询(使用Oracle Spatial)查找多边形内可用的要素数量(地理围栏);

要素可以是点,线或多边形本身。

感谢。

2 个答案:

答案 0 :(得分:2)

试试这句话:

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

SDO_RELATE的第一个参数必须是具有空间索引的几何列。

答案 1 :(得分:-1)

更新:完全忽略这个建议,Albert Godfrind说它正在重复内部已经完成的工作。因此效率低且速度慢:

要添加到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' 

问候,克里斯