PostGIS函数中的PostgreSQL查询

时间:2013-02-15 17:30:57

标签: postgis

我正在尝试运行以下PostGIS查询:

select ST_distance_spheroid(
  ST_GeomFromText('POINT(
    (select AsText(location) from test where name="EGMC")
  )', 4326),
  ST_GeomFromText('POINT(
    (select AsText(location) from test where name="EGDY")
  )', 4326),
  'SPHEROID["WGS_1984",6378137,298.257223563]'
);

但不断收到错误:

ERROR:  parse error - invalid geometry
HINT:  "POINT(
(s" <-- parse error at position 9 within geometry

我很高兴我知道错误意味着什么,我只是不知道如何实现我想做的事情。我不想手动指定位置,它存储在数据库中!我知道这个地方的名字,所以我希望通过查找来获得它的位置。我该怎么做?此外,转换为字符串转换回来似乎有点不必要,我还能做什么?

如果我能做到这一点而不必指定那些很棒的变量。

感谢。

1 个答案:

答案 0 :(得分:0)

您正在混合使用SQL和WKT which are not the same。此外,您不需要重新创建已存在的几何。而是查询现有的几何图形:

select ST_distance_spheroid(g1.location, g2.location, 'SPHEROID["WGS_1984",6378137,298.257223563]')
from test g1, test g2
where g1.name = "EGMC" and g2.name = "EGDY";