我如何编写 SQL 查询(使用 Oracle Spatial)来查找多边形(地理围栏)内可用的特征数量;
要素可以是点、线或多边形本身。
谢谢。
我如何编写 SQL 查询(使用 Oracle Spatial)来查找多边形(地理围栏)内可用的特征数量;
要素可以是点、线或多边形本身。
谢谢。
试试这个说法:
select count(*) from geometry_table t where SDO_RELATE(t.geom_column, geofence, 'mask=INSIDE') = 'TRUE'
/
第一个参数必须SDO_RELATE
是带有空间索引的几何列。
更新:完全无视这个建议,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'
问候,克里斯