【问题标题】:Finding the pair of points whose distance from each other is maximal找到彼此距离最大的点对
【发布时间】:2013-12-09 22:07:59
【问题描述】:

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

我试图用返回表做一个函数,但是 setof text 会是更好的解决方案吗?

【问题讨论】:

    标签: sql postgresql postgis


    【解决方案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

    【讨论】:

    • 非常感谢。我实际上尝试了嵌套循环来达到你所写的交叉连接的结果。我会尝试在其中添加距离..
    • 它现在像这样工作 SELECT set1.id, set2.id FROM geom_tab_1 set1,geom_tab_1 set2 WHERE set1.id != set2.id ORDER BY ST_Distance(set1.the_geom, set2.the_geom) DESC 限制 1 ;但作为输出,我只有点对。如何将距离信息添加到输出?
    猜你喜欢
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2018-11-25
    相关资源
    最近更新 更多