PostGIS的是否在插入WKT自动转换?

问题描述 投票:2回答:1

我很新的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(),将使用所有其他功能列做工精细?

谢谢

postgresql postgis wkt
1个回答
2
投票

有几个自动施放,并从geometry类型。

你可以在PostgreSQL键入\dC,你会看到所有可用的类型转换,其中包括:

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

此信息也可在doc或本tutorial

由于隐性投,这意味着你不必指定它使用它。请注意,您可以“迫使”其使用::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任何函数一起使用。数据是如何到达那里(自动投,转换,从另一个几何等提取)是不再相关。

© www.soinside.com 2019 - 2024. All rights reserved.