【发布时间】:2013-12-09 22:07:59
【问题描述】:
我有一个非常小的数据库,其中包括 6 个点,其中包含 id、the_geom、descr 列。我的目标是编写一个 PL/pgSQL 函数来找到彼此之间距离最大的点对。作为输出,我想显示两个点的 id 或 descr 以及它们之间的距离。
我试图用返回表做一个函数,但是 setof text 会是更好的解决方案吗?
【问题讨论】:
标签: sql postgresql postgis
我有一个非常小的数据库,其中包括 6 个点,其中包含 id、the_geom、descr 列。我的目标是编写一个 PL/pgSQL 函数来找到彼此之间距离最大的点对。作为输出,我想显示两个点的 id 或 descr 以及它们之间的距离。
我试图用返回表做一个函数,但是 setof text 会是更好的解决方案吗?
【问题讨论】:
标签: sql postgresql postgis
您可以尝试交叉连接之类的方法来查找所有组合,然后按差异排序。如果你的表名是 foo 类似于:
SELECT set1.id, set2.id, abs(set1.the_geom - set2.the_geom) --- May want to use earth_distance extension ehre
FROM foo set1, foo set2
WHERE set1.id != set2.id
ORDER BY 3 DESC;
如果您需要地球距离来计算距离本身 - http://www.postgresql.org/docs/9.3/static/earthdistance.html
【讨论】: