名称

UpdateGeometrySRID — 更新几何列中所有要素的 SRID,以及表元数据。

概要

text UpdateGeometrySRID(varchar table_name, varchar column_name, integer srid);

text UpdateGeometrySRID(varchar schema_name, varchar table_name, varchar column_name, integer srid);

text UpdateGeometrySRID(varchar catalog_name, varchar schema_name, varchar table_name, varchar column_name, integer srid);

描述

更新几何列中所有要素的 SRID,更新 geometry_columns 中的约束和引用。如果该列由类型定义强制执行,则类型定义将被更改。注意:如果未提供模式,则在支持模式的 pgsql 安装中使用 current_schema()。

此函数支持 3d 并且不会删除 z 索引。

此方法支持圆形字符串和曲线。

示例

使用 EWKT 格式 将几何图形插入到 roads 表中,并设置 SRID。

COPY roads (geom) FROM STDIN;
SRID=4326;LINESTRING(0 0, 10 10)
SRID=4326;LINESTRING(10 10, 15 0)
\.
		

这将把 roads 表的 srid 从之前的任何值更改为 4326。

SELECT UpdateGeometrySRID('roads','geom',4326);

前面的示例等效于以下 DDL 语句

ALTER TABLE roads
  ALTER COLUMN geom TYPE geometry(MULTILINESTRING, 4326)
    USING ST_SetSRID(geom,4326);

如果您在加载时将投影弄错了(或将其作为未知投影引入),并且您想将所有内容一次性转换为 web 墨卡托投影,您可以使用 DDL 来完成,但没有等效的 PostGIS 管理函数可以一次性完成。

ALTER TABLE roads
 ALTER COLUMN geom TYPE geometry(MULTILINESTRING, 3857) USING ST_Transform(ST_SetSRID(geom,4326),3857) ;

另请参阅

UpdateRasterSRIDST_SetSRIDST_TransformST_GeomFromEWKT