【问题标题】:PostGIS: Calculating minimum Distance between a Point and 2 fks: origin and destinationPostGIS:计算点和 2 fks 之间的最小距离:起点和终点
【发布时间】:2011-06-15 08:10:52
【问题描述】:

我有一个表 Transport 有 2 个 fks 指向表 Spot。那些 fks 存储 origindestination 的传输。

我需要进行查询以获取点与原点之间以及同一点与目的地之间的最小距离。

这就是我所做的,虽然这得到了 34 个结果并且应该是 17 个。我知道我做错了,但我无法正确查询:

SELECT LEAST(
   ST_Distance(ST_GeographyFromText('SRID=4326; POINT(-3 40)'), s.point), 
   ST_Distance(ST_GeographyFromText('SRID=4326; POINT(-3 40)'), s.point)
) FROM spot s RIGHT OUTER JOIN transport t 
ON t.origin = s.id OR t.destination = s.id;

显然我不应该在这里使用 OR。我试图做双重连接,但没有做对。

感谢您的帮助

【问题讨论】:

    标签: sql postgresql postgis


    【解决方案1】:

    您必须使用两个连接,因为您的查询需要一个表 Spot 表示 Origin,一个表 Spot 表示 Destination。

    试试这样:

    SELECT LEAST(
       ST_Distance(ST_GeographyFromText('SRID=4326; POINT(-3 40)'), sOrigin.point), 
       ST_Distance(ST_GeographyFromText('SRID=4326; POINT(-3 40)'), sDestination.point)
    ) FROM transport t
    LEFT OUTER JOIN spot sOrigin ON t.origin = sOrigin.id 
    LEFT OUTER JOIN spot sDestination ON t.destination = sDestination.id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 2018-05-21
      • 2016-09-23
      • 1970-01-01
      • 2014-10-15
      • 1970-01-01
      • 2013-10-08
      相关资源
      最近更新 更多