Postgis Postgres客户端集成不工作



我正在试用Postgis。我设置了一个数据库,添加了一个表,其中有一个带点的几何体列,并为该列编制了索引。

我觉得奇怪的一件事是,在许多情况下,列中的数据没有被转换为在客户端中显示。

例如,如果我把这个粘贴到外壳中

SELECT ST_MakePolygon(ST_GeomFromText('LINESTRING(75.15 29.53 1,77 29 1,77.6 29.5 1, 75.15 29.53 1)'));

我得到这个结果

    st_makepolygon                                                                                                       
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 010300008001000000040000009A99999999C9524048E17A14AE873D40000000000000F03F00000000004053400000000000003D40000000000000F03F66666666666653400000000000803D40000000000000F03F9A99999999C9524048E17A14AE873D40000000000000F03F
(1 row)

我不应该买这样的东西吗?

st_asewkt
-----------
POLYGON((75.15 29.53 1,77 29 1,77.6 29.5 1,75.15 29.53 1))

此外,当我从几何体列中选择点时,我也会看到它们的原始数据。

如果这是正确的,我该如何翻译数据,以便轻松地看到几何体中的内容?

我希望能够在列中看到我的点显示为POINT(x,y,z(或类似的东西。

有趣的是,如果我运行这样的操作

SELECT ST_Extent(geom) FROM towns WHERE town = 'BOSTON';

客户向我展示了这个结果

    st_extent     
------------------
 BOX(10 10,10 10)
(1 row)

几何图形作为众所周知的二进制对象存储在数据库中,因为它是一种紧凑无损的格式。查询此数据类型时,会将其解码为十六进制文本表示,如您的问题所示。我能想到的改变默认输出行为的唯一方法是重新定义强制转换。

此破解需要从postgis.sql启用程序脚本安装PostGIS,而不是从CREATE EXTENSION postgis;方法安装PostGIS。然后,重新定义从geometrytext:的强制转换

DROP CAST (geometry AS text);
CREATE CAST (geometry AS text) WITH FUNCTION ST_AsText(geometry) AS IMPLICIT;

现在显示以下行为:

SELECT '010300008001000000040000009A99999999C9524048E17A14AE87'
'3D40000000000000F03F00000000004053400000000000003D40000000000'
'000F03F66666666666653400000000000803D40000000000000F03F9A9999'
'9999C9524048E17A14AE873D40000000000000F03F'::geometry::text;
                             text
---------------------------------------------------------------
 POLYGON Z ((75.15 29.53 1,77 29 1,77.6 29.5 1,75.15 29.53 1))
(1 row)

但它仅适用于CCD_ 5类型转换。如果没有它,它会将geometry强制转换为bytea,默认情况下会将其强制转换为十六进制格式的文本。

不过,我不推荐这种破解方式。如果您需要一个可读的WKT字符串,请记住在SQL语句中使用ST_AsText。此外,请记住WKT是几种文本格式之一;其他请参见手册中的"几何输出"。

最新更新