根据经纬度计算两点球面距离
来源:互联网 发布:软件系统维护方案 编辑:程序博客网 时间:2024/06/05 05:29
</pre><p>原文:http://www.oschina.net/question/565065_66989</p><p></p><pre name="code" class="cpp">#include <iostream> #include <cmath> using namespace std; double EARTH_RADIUS = 6378.137;//地球半径 double PI=3.1415926535; double rad(double d){ return d * PI / 180.0; } double round(double d){ return floor(d + 0.5); } double get_distance(double lat1, double lng1, double lat2, double lng2) { double radLat1 = rad(lat1); double radLat2 = rad(lat2); double a = radLat1 - radLat2; double b = rad(lng1) - rad(lng2); double s = 2 * asin(sqrt(pow(sin(a/2),2) +cos(radLat1)*cos(radLat2)*pow(sin(b/2),2))); s = s * EARTH_RADIUS; s = round(s * 10000) / 10000; return s; } int main(int argc, char** argv) { double d = get_distance(40.0706,116.588717,40.070917,116.588684); cout<<d*1000<<"m"<<endl; }
java版本:
public static double calcDistance(double Longitude1, double Latitude1, double Longitude2, double Latitude2){double dRadLat1 = Rad(Latitude1);double dRadLat2 = Rad(Latitude2);double a = dRadLat1 - dRadLat2;double b = Rad(Longitude1) - Rad(Longitude2);double dRad = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(dRadLat1) * Math.cos(dRadLat2) * Math.pow(Math.sin(b / 2), 2)));double dDistance = dRad * EARTH_RADIUS;dDistance = round(dDistance * 10000) / 10000;return Math.abs(dDistance * 1000);}private static double Rad(double dDegree){return dDegree * PI / 180.0;}private static double round(double d) {return Math.floor(d + 0.5); }public static void main(String[] args) {double Longitude1 = 73.65;double Latitude1 = 11.36911;double Longitude2 = 73.65;double Latitude2 = 11.36912;double num = calcDistance(Longitude1, Latitude1, Longitude2, Latitude2);System.out.println(num);}
0 0
- 根据经纬度计算两点球面距离
- 根据经纬度计算两点球面距离
- 根据经纬度计算球面距离
- 根据经纬度计算球面距离
- 根据经纬度计算球面距离
- 根据两点经纬度计算距离
- 根据两点经纬度计算距离
- 根据两点经纬度计算距离
- 根据两点经纬度计算距离
- 根据两点经纬度计算距离
- 根据两点经纬度计算距离
- 根据两点经纬度计算距离
- 根据两点经纬度计算距离
- 根据两点经纬度计算距离
- 根据两点经纬度计算距离
- 根据两点经纬度计算距离
- 根据两点经纬度计算距离
- 根据两点经纬度计算距离
- iOS开发使用半透明模糊效果方法
- vitamio移植制作广告机,有滚动信息条,支持超多视频格式
- Could not get lock /var/lib/apt/lists/lock - open (11 Resource temporarily unavailable)
- apache ab命令参数意义
- 算法时间复杂度计算
- 根据经纬度计算两点球面距离
- Android-图片双击放大控件
- Unity 获得顶点数据
- GestureOverlayView手势识别(手势输入数字)
- The Number of Paths - HDU 1293 DP
- MTK功能机传感器介绍
- 【php】7、学生管理系统-管理员查看用户
- 怎么丰胸啊weixin 616628874
- soj 2818 dp