无效的POLYGON bigQuery

时间:2018-12-06 22:02:18

标签: sql google-bigquery geospatial

我有一列包含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

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

2 个答案:

答案 0 :(得分:3)

使用前缀SAFE

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

null     bad

答案 1 :(得分:0)

现在可以通过使用 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