0

我有四个字段 lat1,lng1,lat2,lng2 我想计算它们之间的距离(以公里为单位)(四舍五入到 1 个十进制位)。

例如表:

-----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

我必须改变什么?

4

2 回答 2

2

PostGIS 就是答案。

我会试一试

于 2013-09-20T14:53:43.467 回答
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();
于 2013-11-13T02:41:43.533 回答