我有一个非常小的数据库,其中包含6个点,其中列为id,the_geom,descr。我的目标是编写一个PL / pgSQL函数,它找到彼此距离最大的点对。作为输出,我想显示两点的id或descr以及它们之间的距离。
我试过用返回表做一个函数但是setof文本会更好解决吗?
答案 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