PostGIS
切换深色/浅色/自动模式 - PostGIS 空间数据库 切换深色/浅色/自动模式 - PostGIS 空间数据库 切换深色/浅色/自动模式 - PostGIS 空间数据库 返回主页 - PostGIS 空间数据库

将栅格从 2.* 升级到 3.*

从 PostGIS 3.0 开始,PostGIS 栅格支持不再是 postgis 扩展的一部分,而是分离到一个新的 PostGIS 扩展中,称为 postgis_raster

造成这种中断的两个主要原因是

  • PostGIS 中的栅格功能很庞大,包含超过 150 个函数和多种类型。对于那些不需要栅格的人来说,浏览这些额外的函数会让他们感到沮丧。

  • 栅格 gdal 依赖关系非常大,许多人梦想拥有没有大栅格依赖关系的 postgis 扩展。

虽然将栅格重新打包为其自己的扩展解决了众多投诉,但这意味着从 PostGIS 2.something 升级到 3.something 的过程稍微复杂了一些,即使是经验丰富的 PostGIS 用户也可能搞砸。

我将详细说明从 PostGIS 2.* 安装升级到 3.* 安装的 PostGIS 栅格的正确方法。

你可以使用 psql 或 pgAdmin 或任何其他你想要的 PostgreSQL 工具运行这些步骤。

无论你来自哪个版本的 PostGIS,你都应该首先安装 PostGIS 3.* 二进制文件。

-- this step only needed for PostGIS < 2.5.4
ALTER EXTENSION postgis UPDATE;

-- Do for all PostGIS 2.*
SELECT postgis_extensions_upgrade();
SELECT postgis_extensions_upgrade();

如果你不需要栅格支持,并且当前没有包含栅格的表,那么你可以按如下方式删除扩展

DROP EXTENSION postgis_raster;

所以你可能想知道,两次运行的奇怪之处

SELECT postgis_extensions_upgrade();

这是因为,第一次运行从 postgis 扩展中解除了栅格支持,使其成为松散的函数和类型包。

第二次调用将松散的位重新打包到一个新的扩展 postgis_raster 中。不幸的是,我们无法通过一次函数调用实现此功能。我忘记了原因。类似于扩展升级/安装无法在同一事务中生成新扩展。

在 PostgreSQL 13 中,PostgreSQL 删除了对 CREATE EXTENSION ... FROM unpackaged 的支持,这增加了一些复杂性。因此,你应该在升级到 PostgreSQL 13 或更高版本之前尝试升级到 PostGIS 3.*,并且在尝试 PostgreSQL 13+ 升级之前,你绝对应该切换到使用 PostGIS 扩展而不是安装脚本。