ST_Transform 和 ST_SetSRID:投影还是不投影?
人们经常将 ST_Transform 和 ST_SetSRID 函数混淆。
-
ST_SetSRID
不会更改坐标,但会添加元数据来声明坐标实际所在的地理参考系统。如果您将 WGS 84 长度纬度数据标记为基于米的投影。猜猜看?它仍然是长度纬度。任何其他名称的铁锹仍然是铁锹,所以不要使用 ST_SetSRID 并期望神奇地获得米坐标。 -
ST_Transform
用于将底层坐标从已知的地理参考系统更改为另一个已知的地理参考系统。
使用标准 ALTER TABLE 命令更正 SRID 错误非常容易。以下是一些场景。
您忘记指定数据的空间参考系统或指定错误,但您知道它的 WGS 84 长度纬度
ALTER TABLE mytable
ALTER COLUMN geom TYPE geometry(MultiPolygon, 4326)
USING ST_SetSRID(geom, 4326);
您的数据是 WGS 84 长度纬度,并且您正确标记了它,但您希望它以美国国家地图集米为单位
ALTER TABLE mytable
ALTER COLUMN geom
TYPE geometry(MultiPolygon, 2163)
USING ST_Transform(geom, 2163);
您将数据作为未知数据引入,您知道它的 wgs 84 长度纬度,但您希望将其转换为美国国家地图集米
ALTER TABLE mytable
ALTER COLUMN geom
TYPE geometry(MultiPolygon, 2163)
USING ST_Transform(ST_SetSRID(geom, 4326), 2163);