我有一列包含 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
有没有办法处理不正确的多边形,或者至少识别哪一行返回问题?
使用前缀
SAFE
:
SELECT SAFE.st_geogfromtext(x), x
FROM (SELECT "bad" x)
null bad
现在有一种方法可以在大多数情况下解决此问题,即使用
make_valid
参数:
这是一个识别无效多边形的查询,并尝试修复它们:
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