Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
466 views
in Technique[技术] by (71.8m points)

algorithm - 计算两个经度点之间的距离? (Haversine公式)(Calculate distance between two latitude-longitude points? (Haversine formula))

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.

(这些要点使用WGS84系统,我想了解可用方法的相对准确性。)

  ask by Robin Minto translate from so

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

(该链接可能会对您有所帮助,因为它详细说明了使用Haversine公式计算距离的方法。)

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.

(该脚本(使用Java语言)使用“ Haversine”公式计算两点之间的大圆距离-即地球表面上的最短距离。)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...