我有以下postgis查询:
select st_pointonsurface(geometry), geometry, other, important, columns
from my_polygons;
在〜2.5m的结果之后,有一条记录记录了该函数失败的地方。
ERROR: GEOSPoint OnSurface: TopologyException:
Input geom 1 is invalid: Self-intersection at or near
point -9083598.0378282126 3646413.3039207752 at -9083598.0378282126 3646413.3039207752
看看几何图形,我明白为什么它失败了。这是一个不好的多边形。
我想
null
并返回其他列)。如何获得这些结果中的任何一个?
答案 0 :(得分:0)
此函数将“尝试/捕获”该函数,并在发生任何异常时返回null
。
CREATE OR replace FUNCTION polylabel(arg geometry)
RETURNS geometry LANGUAGE plpgsql
AS $$
BEGIN
BEGIN
RETURN st_pointonsurface(arg);
EXCEPTION WHEN OTHERS THEN
RETURN null;
end;
END $$;