Name

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

Synopsis

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-index。

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

示例

将几何图形插入道路表,其中 SRID 集已使用 EWKT 格式

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

这会将路表更改为 4326,无论它以前是什么 SRID:

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) ;