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

问题描述

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

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

解决方案

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

节选:

函数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:

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

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

08-28 22:16