0

无论如何,我可以在查询的其他地方使用 where 选项的值吗?我想做的是用postgis在地图中获取点并在视图中返回距离,所以我有这个工作

SELECT name, 
       ST_Distance(ST_GeographyFromText('SRID=4326;POINT(-110 29)')::geography, location:: geography) 
FROM global_points 
WHERE ST_DWithin(location, ST_GeographyFromText('SRID=4326;POINT(-110 29)'), 1000000);

虽然这对单个查询有好处,但我想使用一个视图来连接其他表中的一些其他信息,这样我就可以做到

SELECT * FROM view WHERE currLoc = POINT(50 50)

这样我就可以在视图的其余部分使用 currLoc 我正在尝试的是这样的

CREATE VIEW testDis 
AS
SELECT name, ST_Distance(currPos::geography, latlong::geography) 
FROM global_points;

这可能是完全错误的,但我不确定我还能做什么。

谢谢

4

1 回答 1

1

视图不能有参数,但您可以创建一个可以执行此操作的集合返回函数:

类似的东西:

create function testDis(currPos geography, latlong geography)
   returns table(text, float)
as $$
  SELECT name, ST_Distance($1, $2) 
  FROM global_points;
$$
language sql;

(对不起,我不知道 PostGIS,所以我可能弄错了数据类型)

使用上述定义,您可以执行以下操作:

select * from testDis(foo, bar);

其中 foo 和 bar 是适当键入的值。

于 2012-05-20T19:09:16.303 回答