【问题标题】:Invalid POLYGON bigQueryPOLYGON bigQuery 无效
【发布时间】:2021-08-08 14:56:38
【问题描述】:

我有一列包含 POLYGON 字符串,在处理地理数据之前,我需要使用 ST_GEOGFROMTEXT 转换它们。 但是,我可能有一些包含无效多边形的行,并且出现以下错误

Error: ST_GeogFromText failed: Invalid polygon loop: Edge 0 has duplicate vertex with edge 4025

这是我的查询

SELECT st_geogfromtext(string_field_1)
FROM t

有没有办法处理不正确的多边形,或者至少确定哪一行返回了问题?

【问题讨论】:

    标签: sql google-bigquery geospatial


    【解决方案1】:

    使用前缀SAFE:

    SELECT SAFE.st_geogfromtext(x), x
    FROM (SELECT "bad" x)
    
    null     bad
    

    【讨论】:

    • 这会处理不正确的多边形,但不能确定哪一行会返回问题。
    • 如果您想为您的问题提供具体答案,请发布一个新问题。这个问题询问“有没有办法处理不正确的多边形”,我们已经为他们提供了解决方案。
    【解决方案2】:

    现在有一种方法可以在大多数情况下解决这个问题,通过使用make_valid 参数:

    https://cloud.google.com/bigquery/docs/reference/standard-sql/geography_functions#st_geogfromtext_signature2

    这是一个查找无效多边形并尝试修复它的查询:

    SELECT 
      st_geogfromtext(string_field_1, make_valid => TRUE) as geog,
      SAFE.st_geogfromtext(string_field_1) IS NULL as geog_needed_fix
    FROM t
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      相关资源
      最近更新 更多