本篇文章给大家谈谈计算两个经度点之间的距离?,以及Haversine公式的知识点,同时本文还将给你拓展android–哪一个最好计算两点之间的距离?、Golang计算两个经度和纬度之间的距离、Java
本篇文章给大家谈谈计算两个经度点之间的距离?,以及Haversine公式的知识点,同时本文还将给你拓展android – 哪一个最好计算两点之间的距离?、Golang计算两个经度和纬度之间的距离、Java 使用经度计算两点之间的距离?、Java 计算两个经纬度间的距离最简单的方式等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- 计算两个经度点之间的距离?(Haversine公式)(两个经纬度点计算距离)
- android – 哪一个最好计算两点之间的距离?
- Golang计算两个经度和纬度之间的距离
- Java 使用经度计算两点之间的距离?
- Java 计算两个经纬度间的距离最简单的方式
计算两个经度点之间的距离?(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 – 哪一个最好计算两点之间的距离?
我发现他们正在使用的一些链接
distanceto()和某处使用distanceBetween()计算.
哪个最好计算距离?
解决方法
它允许计算两个纬度经度点之间的距离:
该脚本使用“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计算两个经度和纬度之间的距离
下面是小编 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 使用经度计算两点之间的距离?
这是我的尝试,这只是我的代码的一部分:
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 计算两个经纬度间的距离最简单的方式
开发中经常会遇到计算两个点(经纬度)之间的距离或者计算最近门店的场景,下面简单实现一下如何计算两个经纬度之间相隔的距离。
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 计算两个经纬度间的距离最简单的方式的相关信息,请在本站查询。
本文标签: