[英]Efficient way to check Geometry type and SRID of Table in Postgres Function
我正在写一个 postgres function 来执行一些空间计算。
我需要错误地从 arguments 到 function 这两个表中捕获不正确的几何形状和不匹配的 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;
感谢您的任何建议
由于您希望所有记录都属于同一类型,因此最快和最安全的方法是将列限制为正确的类型,并简单地确保该列的类型正确
CREATE TABLE test (id integer, geom geometry(polygon,4326));
SELECT *
FROM geometry_columns
WHERE f_table_name = 'test'
AND type = 'POLYGON' and srid = 4326;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.