现在LBS越来越流行,计算地理位置的距离的需求十分普及,以下我就分享一下自己平时用来获得两点间的GPS距离的实用方法:
在android中可采用如下代码获取距离:
Java代码
public double getDistance(double lat1, double lon1,
double lat2, double lon2) {
float[] results=new float[1];
Location.distanceBetween(lat1, lon1, lat2, lon2, results);
return results[0];
}
在其他设备若没有类似android的Location的distanceBetween方法,可以采用如下代码获取,该方法的参数为正常的经纬度数据,将返回以KM为单位的值:
Java代码
public static double geo_distance(double lat1, double lng1, double lat2,
double lng2) {
// earth's mean radius in KM
double r = 6378.137;
lat1 = Math.toRadians(lat1);
lng1 = Math.toRadians(lng1);
lat2 = Math.toRadians(lat2);
lng2 = Math.toRadians(lng2);
double d1 = Math.abs(lat1 - lat2);
double d2 = Math.abs(lng1 - lng2);
double p = Math.pow(Math.sin(d1 / 2), 2) + Math.cos(lat1)
* Math.cos(lat2) * Math.pow(Math.sin(d2 / 2), 2);
double dis = r * 2 * Math.asin(Math.sqrt(p));
return dis;
}
更多地采用类似google map的地理位置参数可以参考以下方法,实用弧度作为参数,并返回外国流行的mile作为单位的值:
//将角度转换为弧度
public static double deg2rad(double degree) {
return degree / 180 * Math.PI;
}
//将弧度转换为角度
public static double rad2deg(double radian) {
return radian * 180 / Math.PI;
}
double distance(double lat1, double lon1, double lat2, double lon2) {
double theta = lon1 - lon2;
double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2))
+ Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2))
* Math.cos(deg2rad(theta));
dist = Math.acos(dist);
dist = rad2deg(dist);
double miles = dist * 60 * 1.1515;
return miles;}
这个计算得出的结果是英里,如果要转换成公里,需要乘以1.609344,若是海里需要乘以0.8684.
最后在提供另一思路,采用weiservice请求方式,直接获取返回的更为精准的结果,例如实用国内比较有名的地图服务提供商MapABC的webservice接口:
http://search1.mapabc.com/sisserver?highLight=false&config=CDX&ver=2.0&x1= ??? &y1= ??? &x2= ??? &y2= ??? &enc=utf-8&resType=json & a_k= "your key" &ctx=1933347&a_nocache=715403361154
以json格式返回结果,使用时注意要到其官网
申请一key...
分享到:
相关推荐
sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离sqlserver根据经纬度计算两点间距离
计算得到的结果是两点间的大圆距离的一半,乘以2π再除以地球半径,就得到了以公里为单位的距离。 在VC6工程中,`gps_clac_demo.c`很可能是主要的源代码文件,它可能包含了获取和处理GPS坐标,以及应用Haversine...
通过两点经纬度坐标,得到两点的距离和角度。进行高斯转化。
在给定的代码片段中,计算两点间距离主要应用于GPS坐标系统中的经度和纬度计算。该算法采用了球面三角学原理来计算地球上任意两点之间的最短距离(大圆距离)。其核心思想是利用球面余弦定理来计算两点间的角度差,...
通过解这个方程,我们可以得到α,然后将其转换为弧度制,乘以地球的半径来得到两点间的距离。 这两种方法虽然表现形式不同,但实质上都是为了计算出地球上两点间的最短距离,即大圆距离。在实践中,尤其是GPS和...
GPS距离算法是计算地球上两点间距离的一种方法,它利用全球定位系统(GPS)提供的地理位置信息。在计算机科学和地理信息系统(GIS)中,这种算法有着广泛的应用,例如导航、运动追踪、物流管理等。本程序包含源代码...
- \( d \) 是两点间的距离。 方位的计算则涉及到向量的运算。可以计算从点A到点B的方位角(也称为前进角或航向角),使用反余弦函数得到: \[ \theta = \text{atan2}(\Delta \lambda, \Delta \phi) \] 如果 \( \...
该公式考虑了地球的曲率,可以得到两点间的大圆距离(即最短路径)。公式如下: \[ d = 2r\arcsin\left(\sqrt{\sin^2\left(\frac{\Delta\phi}{2}\right) + \cos\phi_1\cos\phi_2\sin^2\left(\frac{\Delta\lambda}{2...
GPS距离计算通常基于Haversine公式或Vincenty公式,这些公式用于计算地球上两点之间的大圆距离。在C语言中,实现这样的计算可能涉及到浮点运算、弧度制转换,以及对地球半径的考虑。C语言的编程实践可能包括定义...
根据GPS原理,两点间距离可以通过球面三角公式(如Haversine公式)或者更高级的方法来计算,考虑到地球并非完美的球体,可能会采用WGS84椭球模型进行更精确的计算。此脚本会使用标定点的坐标和测定点的坐标,结合...
在MATLAB中,用户可以输入经度和纬度,然后利用该公式计算出两点间的弧长,进而换算成米。如果需要更精确的距离计算,可以考虑地球的扁平率,采用Vincenty公式或类似方法,这在脚本中可能也有实现。 MATLAB作为强大...
Android 知道地图上两个点,算出两点间距离和两点相对于北极的方向,顺时针0,360。另外还有知道两个点的经纬度,想要得到一个点相对于另一个点的位置,前后左右,这个比较复杂,如果有需要的可以留言给我,我就上传...
根据GPS坐标信息得到设备分布位置,以及根据相邻位置坐标获取设备移动距离,这里使用python对GPS模块输出的位置坐标信息进行提取,并使用python库对坐标位置进行描点,生成设备位置分布图,根据前后两点的坐标计算出...
GPS距离角度计算涉及到几何学中的三角形边长和角度关系,这通常需要用到平面三角学的知识。本话题将深入探讨如何利用GPS数据计算两点间的距离以及它们之间的相对方向。 首先,我们要理解GPS坐标系统。GPS坐标基于...
这个公式的结果是弧度形式的“中心角”,然后可以乘以地球半径(WGS84中的6371公里或3959英里)得到两点之间的大圆距离。 在编程实现中,我们可以先将纬度和经度转换为弧度,因为大多数数学函数处理弧度值。接下来...
为了更准确地计算速度,需要确保在较短的时间间隔内获取尽可能多的位置信息点,以便更精确地计算两点之间的距离和时间差,从而得出更加精确的速度值。这也就是为什么现代GPS设备往往具备较高的位置更新频率,以提高...
在这些工具中,用户可以直接输入GPS坐标,软件会自动进行上述转换和计算,给出两点间的直线距离或路径距离。 4. **网络服务API**:Google Maps API、Bing Maps API等提供了接口,开发者可以通过编程方式调用这些...
根据GPS坐标信息得到设备分布位置,以及根据相邻位置坐标获取设备移动距离,这里使用python对GPS模块输出的位置坐标信息进行提取,并使用python库对坐标位置进行描点,生成设备位置分布图,根据前后两点的坐标计算出...
使用Haversine公式可以计算地球上任意两点间的直线距离(也称为大圆距离),这是基于球面三角学的。Haversine公式考虑了地球半径,并转换了经纬度的角度值。在Java代码中,这通常会涉及到以下步骤: - 将经纬度从...
在地理信息系统(GIS)和导航技术中,计算地球上任意两点间的距离是一项基础而重要的任务。本文将基于提供的代码片段来详细解析如何利用球面三角学原理来计算地球上两点之间的距离。 #### 基础概念 1. **地球模型*...