0

我正在尝试使用 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)
4

1 回答 1

2

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

此 hack 需要从postgis.sql启动器脚本而不是CREATE EXTENSION postgis;方法安装 PostGIS。然后,重新定义演员表从geometryto text

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)

但它只适用于::text演员表。没有它,它会转换geometrybytea,它默认转换为十六进制格式的文本。

但是,我不推荐这种 hack。如果您需要人类可读的 WKT 字符串,请记住在 SQL 语句中使用 ST_AsText。另外,请记住,WKT 是几种文本格式之一;其他人请参阅手册中的“几何输出”

于 2013-03-23T23:14:58.517 回答