如何编写SQL查询(使用Oracle Spatial)查找多边形内可用的要素数量(地理围栏);
要素可以是点,线或多边形本身。
感谢。
答案 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'
问候,克里斯