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

发布于 2024-10-10 22:45:13 字数 97 浏览 6 评论 0原文

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

这些特征可以是点、线或多边形本身。

谢谢。

How do i write a SQL query (using Oracle Spatial) to find the number of features available inside a polygon (geofence);

The features could be either points, lines or a polygon itself.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

雨巷深深 2024-10-17 22:45:13

试试这个语句:

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

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

Try that statement:

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

It is mandetory that the first parameter of SDO_RELATE is the geometry column with a spatial index.

半岛未凉 2024-10-17 22:45:13

更新:完全无视这个建议,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' 

问候,克里斯

Update: Disregard this suggestion completely, Albert Godfrind said it is repeating what is already being done internally. So it is inefficient and slow:

To add to Tims answer, it is good practice to combine SDO_FILTER and SDO_RELATE for performance reasons. SDO_FILTER is fast but returns too many geometries, it will give you all geometries whose minimum bounding rectangle (MBR) intersects with your fence's geometry. SDO_RELATE is exact but slow.
So combine both:

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

Regards, Chris

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文