0

我正在尝试运行以下 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

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

如果我可以在不必指定变量的情况下做到这一点,那就太好了。

谢谢。

4

1 回答 1

0

您正在混合使用不同的 SQL 和 WKT 。此外,您不需要重新创建已经存在的几何图形。改为查询现有几何:

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";
于 2013-02-16T22:55:26.513 回答