无效的 POLYGON bigQuery

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

我有一列包含 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
2个回答
9
投票

使用前缀

SAFE
:

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

null     bad

3
投票

现在有一种方法可以在大多数情况下解决此问题,即使用

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
© www.soinside.com 2019 - 2024. All rights reserved.