【问题标题】:How to convert error to null in postgres (postgis) query?如何在postgres(postgis)查询中将错误转换为null?
【发布时间】:2018-11-14 01:03:10
【问题描述】:

我有以下 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

查看几何图形,我明白为什么会失败。这是一个糟糕的多边形。

我也愿意

  1. 忽略该行(从结果集中过滤它);或
  2. 忽略该列(将其转换为null 并返回其他列)。

我怎样才能得到这些结果?

【问题讨论】:

    标签: postgresql postgis


    【解决方案1】:

    此函数将“尝试/捕获”该函数,在任何异常时返回 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 $$;
    

    【讨论】:

      猜你喜欢
      • 2023-03-04
      • 2018-01-22
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-24
      • 2015-08-06
      • 2021-11-15
      相关资源
      最近更新 更多