计算两个纬度,经度点之间的距离? (半正矢公式) [英] Calculate distance between two latitude-longitude points? (Haversine formula)

查看:3858
本文介绍了计算两个纬度,经度点之间的距离? (半正矢公式)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何计算纬度和经度指定的两点之间的距离?

有关澄清,我想以公里的距离;该点使用WGS84系统,我想了解可用的方法的相对精度。

解决方案

链接可能对您有所帮助,因为它详细介绍了使用半正矢公式来计算距离。

节选:

  

该脚本[在Javascript]计算两个点之间的大圆距离 -   的,也就是说,在地球表面的最短距离 - 采用   半正矢的公式。

函数getDistanceFromLatLonInKm(LAT1,lon1,LAT2,lon2){   VAR R = 6371; //半径在千米的地球   VAR DLAT = deg2rad(LAT2-LAT1);下面// deg2rad   VAR dLon = deg2rad(lon2-lon1);   VAR一个=     Math.sin(DLAT / 2)* Math.sin(DLAT / 2)+     Math.cos(deg2rad(LAT1))* Math.cos(deg2rad(LAT2))*     Math.sin(dLon / 2)* Math.sin(dLon / 2)     ;   变种C = 2 * Math.atan2(的Math.sqrt(a)中,的Math.sqrt(1-a))的;   VAR D = R *℃; //在公里距离   返回D组; } 功能deg2rad(度){   返回度*(Math.PI / 180) }

How do I calculate the distance between two points specified by latitude and longitude?

For clarification, I'd like the distance in kilometers; the points use the WGS84 system and I'd like to understand the relative accuracies of the approaches available.

解决方案

This link might be helpful to you, as it details the use of the Haversine formula to calculate the distance.

Excerpt:

This script [in Javascript] calculates great-circle distances between the two points – that is, the shortest distance over the earth’s surface – using the ‘Haversine’ formula.

function getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) {
  var R = 6371; // Radius of the earth in km
  var dLat = deg2rad(lat2-lat1);  // deg2rad below
  var dLon = deg2rad(lon2-lon1); 
  var a = 
    Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * 
    Math.sin(dLon/2) * Math.sin(dLon/2)
    ; 
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
  var d = R * c; // Distance in km
  return d;
}

function deg2rad(deg) {
  return deg * (Math.PI/180)
}

这篇关于计算两个纬度,经度点之间的距离? (半正矢公式)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆