PostGIS: функция ST_AsRaster не существует. Даже используя примеры из документов

#postgresql #postgis #postgresql-12

Вопрос:

Я пытаюсь преобразовать геометрию в изображения, а функций для этого, похоже, не существует.

Следующий пример взят из документов ST_AsRaster, в которых указаны следующие требования Availability: 2.0.0 - requires GDAL >= 1.6.0.

 SELECT ST_AsPNG(ST_AsRaster(ST_Buffer(ST_Point(1,5),10),150, 150));
 

Это приводит к:

ОШИБКА: функция st_asraster(геометрия, целое число, целое число) не существует

СТРОКА 1: ВЫБЕРИТЕ ST_AsPNG(ST_AsRaster(ST_Buffer(ST_Point(1,5),10),150,…

Я нашел некоторую информацию, которая указывает на необходимость драйверов GDAL, однако, когда я пытаюсь:

 SELECT short_name, long_name FROM ST_GdalDrivers();
 

Я получаю:

ОШИБКА: функция st_gdaldrivers() не существует

СТРОКА 1: ВЫБЕРИТЕ короткое имя, длинное имя ИЗ ST_GdalDrivers();


Я понятия не имею, куда даже пойти, чтобы попытаться решить эту проблему, почему не существует функций, была ли какая-то конфигурация, которую мне нужно было добавить, какой-то документ, который я не читал?

Даже в https://postgis.net/docs/RT_reference.html кажется, это наводит на мысль, что это должно «просто работать»?


Это устанавливается из диспетчера пакетов в Ubuntu 20.0.4.

Информация о версии SELECT PostGIS_Full_Version(); :

 POSTGIS="3.0.0 r17983" [EXTENSION] 
PGSQL="120" 
GEOS="3.8.0-CAPI-1.13.1 " 
PROJ="6.3.1" 
LIBXML="2.9.4" 
LIBJSON="0.13.1" 
LIBPROTOBUF="1.3.3" 
WAGYU="0.4.3 (Internal)"
 

Ответ №1:

Должно быть, вы забыли установить postgis_raster расширение:

 CREATE EXTENSION postgis_raster;
 

Это расширение является новым в PostGIS 3.0; до этого его объекты были частью postgis расширения.

В документации упоминается, что:

После установки postgis его необходимо включить в каждой отдельной базе данных, в которой вы хотите его использовать.

 psql -d yourdatabase -c "CREATE EXTENSION postgis;"

-- if you built with raster support and want to install it --
psql -d yourdatabase -c "CREATE EXTENSION postgis_raster;"
 

Комментарии:

1. Это было оно. Упоминают ли об этом где-нибудь документы, например, в списке расширений? Первый раз использовал Postgres или postgis, и это было…. менее чем очевидно.

2. Я добавил ссылку.