找到彼此距离最大的点对

时间:2013-12-09 22:07:59

标签: sql postgresql postgis

我有一个非常小的数据库,其中包含6个点,其中列为id,the_geom,descr。我的目标是编写一个PL / pgSQL函数,它找到彼此距离最大的点对。作为输出,我想显示两点的id或descr以及它们之间的距离。

我试过用返回表做一个函数但是setof文本会更好解决吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用交叉联接来查找所有组合,然后按差异排序。如果你的表名是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