我正在使用SquirrelSQL在Netezza数据库上编写和执行SQL查询。使用Netezza的空间功能(基本上与PostGIS相同)我执行了一个查询并返回了一个包含几何的结果。这是查询,供参考:
SELECT t.SHAPE
FROM (SELECT * FROM OS_AB_PLUS..E12_ADDRESSBASE WHERE POSTCODE = 'RH1 6NE'
AND PAO_START_NUMBER = '14') as a, OS_TOPO..TOPOGRAPHICAREA as t
WHERE inza..ST_Within(a.shape, t.shape) = TRUE
我的问题是几何字段应该包含表示为Well-Known Text(WKT)的多边形坐标,看起来像这样:
g¹ AË Affff¬0AÍÌÌÌî0AÒ 3333Ê AÍÌÌÌî0A» Aë0Afffæ» AffffÒ0A¹ AÒ0A333³¹ A3333¿0AŒ AffffÀ0AÍÌÌLŒ Affff¬0AË A¯0AëQ8Ê A3333í0A3333Ê AÍÌÌÌî0A
我似乎无法在SquirrelSQL中的任何地方找到指定VARCHAR列的编码,并且我已经看到在Aginity(另一个SQL客户端)中返回的列没有编码问题。关于如何进行的任何建议将不胜感激。
答案 0 :(得分:3)
原来我的问题根本与编码无关。当在select语句中使用ST_AsText时,类似PostGIS的数据库中几何体的人类可读版本将仅返回。所以我的SQL查询变为:
SELECT inza..ST_AsText(t.SHAPE)
FROM (SELECT * FROM OS_AB_PLUS..E12_ADDRESSBASE WHERE POSTCODE = 'RH1 6NE'
AND PAO_START_NUMBER = '14') as a, OS_TOPO..TOPOGRAPHICAREA as t
WHERE inza..ST_Within(a.shape, t.shape) = TRUE
返回。按预期:
POLYGON ((526696.15 148931.9, 526703.94 148932.34, 526703.8 148935.2, 526705.5 148935.3, 526705.4 148937.8, 526695.9 148937.35, 526696.15 148931.9))