如何计算与经纬度的距离
How to calculate distance from latitude and longitude
Postgres 9.1+数据库包含路由点:
create table doksyndm (
id serial primary key,
readingtime timestamp with time zone not null,
latitude float,
longitude float
);
使用导航器从浏览器保存点。javascript中的地理位置调用。
如何从这些数据计算路由长度?路线不超过300公里,所以点之间的直线长度可以相加。它应该在Postgres 9.1和更新的版本中工作。
结果应为一个数字,点之间的总距离以公里为单位。数据库和javascript代码发送点可以重构,如果这是合理的。
计算google maps V3中两点之间的距离的答案如何在生产语言中实现。
它们使用SQL中不可用的for循环。也许SUM()与窗口函数可以用来实现这一点?
我假设您想要从最早的点到下一个最早的点的距离,等等…
从Postgresql 9.3开始,有一个使用横向连接的优雅解决方案。
首先,安装postgis扩展,这样你就可以使用它的距离函数:
CREATE EXTENSION POSTGIS;
现在查询:
SELECT SUM(st_distance(st_point(a.longitude,a.latitude)::geography,
st_point(b.longitude,b.latitude)::geography)
) / 1000 AS distance_km FROM doksyndm a
LEFT JOIN LATERAL
(SELECT * FROM doksyndm WHERE readingtime > a.readingtime limit 1) b ON TRUE;
这个使用distinct on的查询应该适用于所有版本:
SELECT SUM (st_distance(st_point(alon,alat)::geography,
st_point(blon,blat)::geography))/1000 as distance_km FROM
( select distinct ON (a.readingtime) a.readingtime,
a.latitude as alat,
a.longitude as alon,
b.latitude as blat ,
b.longitude as blon
FROM doksyndm a inner join doksyndm b on a.readingtime < b.readingtime
ORDER by a.readingtime,b.readingtime) x
相关文章:
- 计算php或js中的距离
- 使用谷歌地图api计算距离并将其设置在表格中<td>
- 如何在谷歌地图api v3中获得无公里驾驶距离
- 铯JS-两点之间的距离
- 地理位置和计算从当前纬度/液化天然气到另一纬度/液化石油气的距离
- cloudSearch:范围从0到某个值之间的距离
- 计算数据点阵列与平均值的最大距离,并返回相关数据点
- 远距离变换元素的宽度/高度(以像素为单位)
- 将谷歌地图制作成一定的距离(米)
- 如何获取所有旅行模式的距离和持续时间,例如驾驶,公交,骑自行车,在我的页面中步行以及将其存储在数据库中
- 无法与光线投射器保持距离
- 矩阵,距离,JavaScript
- 查找图像上两点之间的距离,即使缩放图像也是如此
- 谷歌距离矩阵 API 没有输出
- 查找与通过两次调用地理编码创建的两个 latlng 对象的距离
- 在instfeed .js中指定经纬度的半径距离
- 如何计算与经纬度的距离
- 如何在谷歌地图上绘制线和计算距离的距离列表经纬度从
- Algolia地理搜索与动态经纬度-距离不正确
- 计算距离一定米的两个坐标之间的经纬度