Usar ST_Contains
en la where
cláusula a veces me da mensajes de error como
ERROR: GEOSContains: TopologyException: side location conflict at 37.3706 55.7882
Por ahora no puedo garantizar la validez de cada geometría en DB, usando herramientas de importación de terceros, así que solo capturo cada excepción:
CREATE OR REPLACE FUNCTION safe_st_contains(geom1 geometry, geom2 geometry)
RETURNS BOOL AS
$$
BEGIN
RETURN ST_Contains($1, $2);
EXCEPTION WHEN others THEN
RAISE NOTICE 'TopologyException'; -- this is a guess
RETURN FALSE;
END;
$$
LANGUAGE plpgsql;
Me gustaría saber dónde pertenecen realmente excepciones como TopologyException y qué condiciones de excepción debo usar en lugar de OTHERS
.
fuente