從 PostGIS 3.0 開始,對于柵格資料的支持就從 postgis 擴展中分離了,叫做 postgis_raster.
主要有兩個原因:
- PostGIS 插件的柵格功能很多,有超過 150 多個函式和多個資料型別,對于沒用到這些的用戶可能會有些迷茫;
- gdal 庫的占體積很大,很多只用
postgis擴展的開發者希望減少它
雖然分離出柵格的部分讓一部分開發者滿意了,但是意味著從 2.x 升級到 3.x 的 PostGIS 就變得有點麻煩了,即使是有經驗的用戶也有可能搞砸,
本文將介紹 PostGIS 柵格模塊升級的正確方法,即升級 2.x 的 PostGIS 到 3.x.
你可以用 psql 或 pgAdmin 或者任意一種 PostgreSQL 工具來運行下面的步驟,
無論你現在是什么版本的 PostGIS,你都應該先把 3.x 的 PostGIS 插件安裝了,也無論你怎么安裝的,
如果你是 2.4 或以下版本的
-- 這一步僅版本< 2.5.4
alter extension postgis update;
-- 其它 2.x 的都要做如下步驟:注意,要運行兩次
select postgis_extensions_upgrade();
select postgis_extensions_upgrade();
隨后,若你的資料庫沒有用到柵格相關的功能,沒有包含柵格資料的表,那么可以用下面的陳述句洗掉柵格擴展:
drop extension postgis_raster;
你可能想問,為什么 select postgis_extensions_upgrade(); 這一條陳述句要跑兩次,原因是跑第一潭訓將柵格部分從 postgis 擴展中分離出來,分離出函式和型別;跑第二條時,就能把這些函式和型別重新系結至 postgis_raster 擴展中,
很遺憾,官方沒能通過單個 pg 函式完成這一個程序,因為官方的作者忘記了具體是為什么就沒寫,貌似是因為 PostgreSQL 的擴展升級、安裝以及創建一個新的擴展這些操作不能在同一個事務中進行,
PostgreSQL 13 移除了 create extension ... from unpackaged 的支持,增加了一些復雜性,因此,升級 13 或者更高版本的 PostgreSQL 之前最好就升級 PostGIS 3.x.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413052.html
標籤:其他
