Как я могу создать полигон, используя поля в PostgreSQL?

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

SELECT polygon(lat1,lon1,lat2,lon2,lat3,lon3,lat4,lon4) FROM table;

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

Ответы на вопрос(3)

их в геометрию. Размеры каждого блока даны как long_high, long_low, lat_high и lat_low. Здесь коробка размером примерно 500 на 500 метров.

Add a new geometry column 'box' to the table

SELECT AddGeometryColumn('public', 'predpol_raw', 'box', 2240, 'POLYGON', 2);

Update the new field with those values.

UPDATE predpol_raw
SET box =
        ST_Transform(
            ST_GeomFromText(
                format('POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))',
                    long_high,lat_high, long_low,lat_high,
                    long_low,lat_low, long_high,lat_low,
                    long_high,lat_high
                ),
                4326
            ),
            2240
        );

Обратите внимание на преобразование в другую пространственную привязку. Ключевое слово POLYGON требует двойных скобок "(())".

Решение Вопроса

insert into geo_table values (1, '((2,2),(3,4),(3,6),(1,1))');

Где 1 - некоторый идентификатор, а цитируемая запись - многоугольник. Я ожидаю, что запрос будет похожим, возможно, вам нужны скобки и т.д. для координат. Обычно для геопространственных данных вы хотите (Lon Lat) координаты. Постгис тоже беретWKT заявления как:

GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')

 Dan Goldstein10 июл. 2009 г., 14:17
Этот оператор WKT выглядит как то, что я хочу, но база данных была создана Drupal (CMS), поэтому шаблон PostGIS не использовался при его создании. Могу ли я преобразовать текст в полигон другим способом?
 Dan Goldstein10 июл. 2009 г., 16:10
Я нашел инструкции по добавлению PostGIS в базу данных и заставил это работать.

Как упомянуто bvmou -GeomFromText будет работать нормально Я просто добавлю небольшое обновление синтаксиса:

GeomFromText('POLYGON((long1 lat1, long2 lat2, long3 lat3))')
 10 нояб. 2011 г., 03:55
+1 Всегда облажайся!

Ваш ответ на вопрос