我有一列包含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
有没有办法处理不正确的多边形,或者至少确定哪一行返回了问题?
答案 0 :(得分:3)
使用前缀SAFE
:
SELECT SAFE.st_geogfromtext(x), x
FROM (SELECT "bad" x)
null bad
答案 1 :(得分:0)
现在可以通过使用 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