在 Snowflake 中使用 ST_Intersects 与点和多面体有技巧吗?

Posted

技术标签:

【中文标题】在 Snowflake 中使用 ST_Intersects 与点和多面体有技巧吗?【英文标题】:Is there a trick to using ST_Intersects in Snowflake with a point and a multipolygon? 【发布时间】:2020-11-03 17:21:22 【问题描述】:

我可以让 ST_Intersects 处理一个点和一个多边形,但不能处理一个点和一个多边形。有没有一种简单的方法可以将多面体分割成单独的多边形并在每个多边形上运行 ST_Intersects?

【问题讨论】:

【参考方案1】:

我认为交叉点和多面体没有问题:

with a as (
select to_geography('POLYGON((0.0 0.0, 1.0 0.0, 1.0 2.0, 0.0 2.0, 0.0 0.0))') as polygon
union all select to_geography('MULTIPOLYGON(((-124.20 42.00, -120.01 41.99, -121.1 42.01, -124.20 42.0)),  ((0.0 0.0, 1.0 0.0, 1.0 2.0, 0.0 2.0, 0.0 0.0)))')
), b as (
  select to_geography('POINT(0.1 0.1)') point
  union all select to_geography('POINT(3.3 3.3)')
  union all select to_geography('POINT(-124.20 42.00)')
)


select ST_ASWKT(point), ST_ASWKT(polygon), st_intersects(polygon, point) intersects
from a, b

结果完全符合我的预期:

【讨论】:

谢谢!我的问题实际上是由 Snowflake 认为无效的 WKT 引起的,所以我需要深入研究一下。我没有意识到这一点,因为我使用的是 TRY_TO_GEOGRAPHY 而不是 TO_GEOGRAPHY。 哦,我明白了 - 我们可以在另一个问题中探索那个“无效”的 WKT 吗? 那太好了,因为我看不出它为什么无效。我会尽快发布链接。 ***.com/questions/64671879/…

以上是关于在 Snowflake 中使用 ST_Intersects 与点和多面体有技巧吗?的主要内容,如果未能解决你的问题,请参考以下文章

Snowflake 是不是支持索引?

在 Snowflake 中灵活命名表

在 Snowflake 中使用 SQL 进行漏斗分析

无法在 Snowflake 中使用混合数据类型的字段内连接两个简单的 CTE

我们如何在 Snowflake 中使用子查询,从 (select....) 中选择列失败

在 Snowflake 中使用 Count Distinct 和 Pivot