как вызвать функцию postgres с геометрией в качестве параметра?

#postgresql

#postgresql

Вопрос:

У меня есть функция, которая принимает геометрию в качестве параметра

 CREATE OR REPLACE FUNCTION rings(geometry, DOUBLE PRECISION)
  RETURNS geometry AS
$BODY$
...
 

и способ, которым я вызываю

 select rings(POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)), 6000)
 

или с кавычками и другими способами, но, похоже, не работает.

Ответ №1:

Вопрос, который следует задать, заключается в том, как создать геометрию. Я предполагаю, что вы используете PostGIS.

Быстрое и грязное решение — использовать автоматическое преобразование текста в геометрию. Обратите внимание, что входные данные заключены в кавычки.

'POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'::geometry

Более чистым способом было бы использовать функцию для построения геометрии из текста

ST_GEOMFROMTEXT('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')