PostgreSQL表中存储的2点之间的距离

时间:2013-09-20 14:14:13

标签: postgresql

我有四个字段lat1,lng1,lat2,lng2,我想计算它们之间的距离(舍入到1 deciaml位置)。

例如 表:

-----lat1-----|--- lng1 ----| ----lat2----|---lng2----|
 53.4603045   |  9,98243    |  53,4470272 | 9,9956593 |

我试过了:

   SELECT ST_Distance(POINT(lat1, lng1),POINT(lat2, lng2)) as distance FROM table

我需要改变什么?

2 个答案:

答案 0 :(得分:2)

PostGIS就是答案。

我会试一试

答案 1 :(得分:0)

如果你的postgres附带了plv8扩展名(javascript),你可以这样做:

CREATE OR REPLACE FUNCTION distance_example(_la integer, _lb integer) RETURNS
real AS $$

  var locations = plv8.execute("SELECT * FROM location WHERE id IN ($1, $2)", [_la, _lb]);
  var x = locations[0].longitude - locations[1].longitude;
  var y = locations[0].latitude - locations[1].latitude;
  return Math.sqrt(x * x + y * y);
$$ LANGUAGE plv8 IMMUTABLE STRICT;

select distance_example();