PostGIS调用ST_AsRaster函数不存在 官方示例运行报错问题咨询
PostGIS栅格函数不存在问题排查解决步骤
- 核心原因说明:PostGIS 3.0+版本已将栅格相关功能从主
postgis扩展中拆分为独立的postgis_raster扩展,默认不会随基础PostGIS安装自动启用,这是找不到ST_AsRaster、ST_GdalDrivers等函数的核心诱因。
步骤1:安装系统层面依赖包
执行以下命令安装缺失的栅格相关组件:
sudo apt update sudo apt install postgresql-12-postgis-3 postgresql-12-postgis-3-scripts gdal-bin libgdal-dev
步骤2:启用数据库级别的栅格扩展
连接到你使用的PostgreSQL目标数据库,执行以下SQL语句启用扩展:
CREATE EXTENSION IF NOT EXISTS postgis_raster;
步骤3:验证基础功能是否正常
执行以下语句验证栅格扩展已正确加载:
SELECT PostGIS_Full_Version();
正常返回结果中会新增RASTER相关的版本标识,接下来可测试原报错的两个函数:
- 测试GDAL驱动查询:
SELECT short_name, long_name FROM ST_GdalDrivers() LIMIT 5;
- 测试几何转栅格功能:
SELECT ST_AsPNG(ST_AsRaster(ST_Buffer(ST_Point(1,5),10),150, 150));
可选:GDAL驱动异常修复
如果启用扩展后仍提示GDAL相关错误,可修改PostgreSQL配置文件放开GDAL驱动限制:
- 打开配置文件(Ubuntu 20.04默认路径):
sudo nano /etc/postgresql/12/main/postgresql.conf
- 在文件末尾添加以下配置:
postgis.gdal_enabled_drivers = 'ENABLE_ALL' postgis.enable_outdb_rasters = on
- 重启PostgreSQL服务生效:
sudo systemctl restart postgresql
内容的提问来源于stack exchange,提问作者Douglas Gaskell
相关产品推荐
相关产品推荐

