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.* 安裝升級到 PostGIS 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 擴充套件而非安裝腳本。