Напишите необработанный SQL для PostGIS

Я пытаюсь ввести некоторые данные в базу данных PostgreSQL 8.4 с помощью шаблона PostGIS. Я не могу UPDATE полигонов:

> UPDATE my_table SET coords = POINT(1, 1)
UPDATE 0 1

> UPDATE my_table SET box = POLYGON(((1, 1), (2, 3), (3, 3), (1, 1)))
ERROR:  function polygon(record) does not exist

> UPDATE my_table SET box = POLYGON((1, 1), (2, 3), (3, 3), (1, 1))
ERROR:  function polygon(record, record, record, record) does not exist

> UPDATE my_table SET box = POLYGON(1, 1, 2, 3, 3, 3, 1, 1)
ERROR:  function polygon(numeric, numeric, numeric, numeric, numeric, numeric, numeric, numeric) does not exist

> UPDATE my_table SET box = ((1, 1), (2, 3), (3, 3), (1, 1))
ERROR:  column "box" is of type polygon but expression is of type record

Как вставить полигон? Обратите внимание, что данные уже существуют в таблице с NULL полями вместо пространственных данных. Мне нужно UPDATE, а не INSERT, но это не должно иметь значения.


person Attila O.    schedule 02.08.2010    source источник
comment
Дополнительные ответы экспертов на вопросы, связанные с ГИС, можно найти на специальном сайте gis.stackexchange.com.   -  person amercader    schedule 02.08.2010
comment
@amercader, спасибо! Я не знал о gis.meta.stackexchange.com...   -  person Attila O.    schedule 03.08.2010


Ответы (2)


Используйте конструкторы геометрии для загрузки таблица, в частности функция St_GeomFromText:

UPDATE my_table SET box = ST_GeomFromText('POLYGON ((1 1), (2 3), (3 3), (1 1))');

Геометрия определяется в формате WKT (Общеизвестный текст).

person amercader    schedule 02.08.2010

Пытаться:

UPDATE my_table SET box = '((1, 1), (2, 3), (3, 3), (1, 1))'::polygon;

Насколько мне известно, большинство геометрических типов вообще нуждаются в кавычках.

person rfusca    schedule 02.08.2010