繁体   English   中英

在 Postgres 中检查表的几何类型和 SRID 的有效方法 Function

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM