sql&postgres函数中检查表的几何类型和srid的有效方法

wvt8vs2t  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(380)

我正在写一个postgres函数来执行一些空间计算。
我需要从作为函数参数的两个表中错误地捕获不正确的几何图形和不匹配的srid
下面的代码工作,但似乎是一个糟糕的方式来实现这一点。

-- check the geometries in each table
EXECUTE format('SELECT DISTINCT ST_GeometryType(geom) FROM %s', master_table)
INTO master_type_holder;

IF master_type_holder != 'ST_Polygon' THEN
   RAISE EXCEPTION 'master table geometries must be type ST_Polygon';
END IF;

EXECUTE format('SELECT DISTINCT ST_GeometryType(geom) FROM %s', ref_table)
INTO ref_type_holder;

IF ref_type_holder != 'ST_Polygon' THEN
   RAISE EXCEPTION 'Reference table geometries must be type ST_Polygon';
END IF;

谢谢你的建议

drkbr07n

drkbr07n1#

因为您希望所有记录都是同一类型的,所以最快和最安全的方法是将列限制为正确的类型,并简单地确保列是正确的类型

CREATE TABLE test (id integer, geom geometry(polygon,4326));

SELECT * 
FROM geometry_columns 
WHERE f_table_name = 'test'
AND type = 'POLYGON' and srid = 4326;

相关问题