PostGIS автоматически конвертируется при вставке WKT? - PullRequest
0 голосов
/ 07 февраля 2019

Я довольно новичок в PostGIS, так что терпите меня.

Предположим, у меня есть таблица, определенная следующим образом:

CREATE TABLE gtest (name varchar, geom geometry);

Сначала, чтобы вставить, я делал что-то вроде:

INSERT INTO gtest
VALUES (
    'Polygon',
    ST_GeomFromText('POLYGON((0 0,1 0,1 1,0 1,0 0))',4326)
);

Затем я обнаружил, что он по-прежнему работает, только выполнив следующее:

INSERT INTO gtest
VALUES (
    'Polygon',
    'SRID=4326;POLYGON((0 0,1 0,1 1,0 1,0 0))'
);

Когда я выполняю запрос без преобразования значений geom обратно в WKT, они оба закодированы правильно,То же самое, если я преобразую столбец в EWKT, все будет отображаться правильно.

Идет ли конверсия за кулисами?И если я вставлю без вызова ST_GeomFromText(), все ли другие функции, использующие столбец, будут работать нормально?

Спасибо

1 Ответ

0 голосов
/ 07 февраля 2019

Существует несколько автоматических приведений к типу geometry.

Вы можете ввести \dC в PostgreSQL, и вы увидите все доступные приведения, включая:

                                     List of casts
     Source type         |         Target type         |      Function      |   Implicit?
-------------------------+-----------------------------+--------------------+---------------
text                     | geometry                    | geometry           | yes

Эта информация также доступна в doc или в этом руководстве .

Поскольку приведение происходит неявно, это означает, что вам не нужно указывать его для его использования.Обратите внимание, что вы можете «форсировать» его, используя ::geometry:

select st_asText('SRID=4326;POLYGON((0 0,1 0,1 1,0 1,0 0))'::geometry);
           st_astext
--------------------------------
 POLYGON((0 0,1 0,1 1,0 1,0 0))
(1 row)

Что касается удобства использования столбца, столбец имеет тип geometry, поэтому все, что находится в этом столбце, является geometry и может бытьиспользуется любой функцией, требующей geometry.То, как данные были получены (автоматическое приведение, преобразование, извлечение из другой геометрии и т. Д.), Больше не имеет значения.

...