GVKun编程网logo

计算两个经度点之间的距离?(Haversine公式)(两个经纬度点计算距离)

29

本篇文章给大家谈谈计算两个经度点之间的距离?,以及Haversine公式的知识点,同时本文还将给你拓展android–哪一个最好计算两点之间的距离?、Golang计算两个经度和纬度之间的距离、Java

本篇文章给大家谈谈计算两个经度点之间的距离?,以及Haversine公式的知识点,同时本文还将给你拓展android – 哪一个最好计算两点之间的距离?、Golang计算两个经度和纬度之间的距离、Java 使用经度计算两点之间的距离?、Java 计算两个经纬度间的距离最简单的方式等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

计算两个经度点之间的距离?(Haversine公式)(两个经纬度点计算距离)

计算两个经度点之间的距离?(Haversine公式)(两个经纬度点计算距离)

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

为了澄清起见,我想要以公里为单位的距离;这些要点使用WGS84系统,我想了解可用方法的相对准确性。

答案1

小编典典

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

摘抄:

该脚本(使用Javascript)使用“ 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)}

android – 哪一个最好计算两点之间的距离?

android – 哪一个最好计算两点之间的距离?

我试图计算谷歌地图中两点之间的距离.
我发现他们正在使用的一些链接
distanceto()和某处使用distanceBetween()计算.
哪个最好计算距离?

解决方法

这 link可能对您有所帮助.

它允许计算两个纬度经度点之间的距离:

该脚本使用“haversine”公式计算两点之间的大圆距离(即)地球表面上的最短距离.

var R = 6371; // Radius of the earth in km
var dLat = (lat2-lat1).toRad();  // Javascript functions in radians
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        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.

Golang计算两个经度和纬度之间的距离

Golang计算两个经度和纬度之间的距离

下面是小编 jb51.cc 通过网络收集整理的代码片段。

小编小编现在分享给大家,也给大家做个参考。

package main
      
import (
    "fmt"
    "math"
)
      
func main() {
    lat1 := 29.490295
    lng1 := 106.486654
      
    lat2 := 29.615467
    lng2 := 106.581515
    fmt.Println(Earthdistance(lat1,lng1,lat2,lng2))
}
      
func Earthdistance(lat1,lng2 float64) float64 {
    radius := 6371000 // 6378137
    rad := math.Pi/180.0
          
    lat1 = lat1 * rad
    lng1 = lng1 * rad
    lat2 = lat2 * rad
    lng2 = lng2 * rad
          
    theta := lng2 - lng1
    dist := math.Acos(math.Sin(lat1) * math.Sin(lat2) + math.Cos(lat1) * math.Cos(lat2) * math.Cos(theta))
          
    return dist * radius
}
 

以上是小编(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给程序员好友。

Java 使用经度计算两点之间的距离?

Java 使用经度计算两点之间的距离?

这是我的尝试,这只是我的代码的一部分:

final double RADIUS = 6371.01;double temp = Math.cos(Math.toRadians(latA))            * Math.cos(Math.toRadians(latB))            * Math.cos(Math.toRadians((latB) - (latA)))            + Math.sin(Math.toRadians(latA))            * Math.sin(Math.toRadians(latB));    return temp * RADIUS * Math.PI / 180;

我正在使用以下公式来获取经度和纬度:

x = Deg + (Min + Sec / 60) / 60)

答案1

小编典典

上面Dommer给出的Java代码给出的结果略有不正确,但是如果你正在处理GPS轨迹,则小错误加起来。这是Java中Haversine方法的实现,该方法还考虑了两点之间的高度差。

/** * Calculate distance between two points in latitude and longitude taking * into account height difference. If you are not interested in height * difference pass 0.0. Uses Haversine method as its base. *  * lat1, lon1 Start point lat2, lon2 End point el1 Start altitude in meters * el2 End altitude in meters * @returns Distance in Meters */public static double distance(double lat1, double lat2, double lon1,        double lon2, double el1, double el2) {    final int R = 6371; // Radius of the earth    double latDistance = Math.toRadians(lat2 - lat1);    double lonDistance = Math.toRadians(lon2 - lon1);    double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)            + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))            * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));    double distance = R * c * 1000; // convert to meters    double height = el1 - el2;    distance = Math.pow(distance, 2) + Math.pow(height, 2);    return Math.sqrt(distance);}

Java 计算两个经纬度间的距离最简单的方式

Java 计算两个经纬度间的距离最简单的方式

开发中经常会遇到计算两个点(经纬度)之间的距离或者计算最近门店的场景,下面简单实现一下如何计算两个经纬度之间相隔的距离。

1、导入 geodesy 的 maven 依赖 或者到阿里云 maven 仓库下载 jar 包

<dependency>
  <groupId>org.gavaghan</groupId>
  <artifactId>geodesy</artifactId>
  <version>1.1.3</version>
</dependency>

 

2、实现计算

package com.test.gps;

import org.gavaghan.geodesy.Ellipsoid;
import org.gavaghan.geodesy.GeodeticCalculator;
import org.gavaghan.geodesy.GeodeticCurve;
import org.gavaghan.geodesy.GlobalCoordinates;

public class CaculateDistanceTest{
public static void main(String[] args){
GlobalCoordinates source
= new GlobalCoordinates(29.490295, 106.486654); GlobalCoordinates target = new GlobalCoordinates(29.615467, 106.581515); double meter1 = getDistanceMeter(source, target, Ellipsoid.Sphere); double meter2 = getDistanceMeter(source, target, Ellipsoid.WGS84);
System.out.println(
"Sphere坐标系计算结果:"+meter1 + "米"); System.out.println("WGS84坐标系计算结果:"+meter2 + "米"); } public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid){
//创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离 GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo); return geoCurve.getEllipsoidalDistance(); } }

 

3、输出结果:

 

 对比百度地图,计算结果和 Sphere 坐标系计算结果一致,表明计算结果正确,WGS84 坐标系的计算结果存在几十米的误差。不同的坐标系精度不同,计算结果不一样。大家根据实际情况自己选择。

 

 

最后,感谢大家访问,不正确的地方欢迎留言!

我们今天的关于计算两个经度点之间的距离?Haversine公式的分享已经告一段落,感谢您的关注,如果您想了解更多关于android – 哪一个最好计算两点之间的距离?、Golang计算两个经度和纬度之间的距离、Java 使用经度计算两点之间的距离?、Java 计算两个经纬度间的距离最简单的方式的相关信息,请在本站查询。

本文标签: