我很新的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()
,将使用所有其他功能列做工精细?
谢谢
有几个自动施放,并从geometry
类型。
你可以在PostgreSQL键入\dC
,你会看到所有可用的类型转换,其中包括:
List of casts
Source type | Target type | Function | Implicit?
-------------------------+-----------------------------+--------------------+---------------
text | geometry | geometry | yes
由于隐性投,这意味着你不必指定它使用它。请注意,您可以“迫使”其使用::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
任何函数一起使用。数据是如何到达那里(自动投,转换,从另一个几何等提取)是不再相关。