BigQuery-ST_MAKEPOLYGON()失败,出现无效的多边形循环

问题描述 投票:0回答:1

我关注了精彩的帖子How to Catch ST_MAKEPOLYGON Error in BigQuery这消除了大多数问题,但是我仍然遇到一种边缘情况,其中ST_MAKEPOLYGONS()失败,原因是:

无效的多边形循环。

enter image description here

我的问题是双重的。

  • 错误消息的含义是什么。
  • 为了避免此类错误,我如何检测到这种情况。

我遵循了所引用文章中的建议,并介绍了另一种预防措施,但仍然遇到问题。

-- remove invalid ratio
    SELECT * 
    FROM(SELECT *,
         SAFE_DIVIDE(ST_DISTANCE(centroid, anchor) , ST_DISTANCE(centroid, location)) AS ratio 
         FROM X4) 
         WHERE ratio BETWEEN -1 AND 1
google-bigquery gis
1个回答
0
投票
您有重复的顶点,因此在循环中有自相交。这通常意味着8字形循环。这不是有效的多边形,此类形状应改为由两个多边形来描述,其中一个单独的多边形代表“ 8”中的每个圆圈。
POLYGON((0 0, 1 1, 2 0, 2 2, 1 1, 0 2, 0 0))不正确,但是MULTIPOLYGON(((0 0, 1 1, 0 2, 0 0)), ((1 1, 2 0, 2 2, 1 1)))是正确的,即使某些工具可能会显示它们相同。

在实践中,如何修复此输入取决于数据来自何处以及如何生成。如果只想检测并绕过几行错误,请使用SAFE.ST_MakePolygon-它返回NULL而不是失败,因此至少其他行是可以的。

© www.soinside.com 2019 - 2024. All rights reserved.