经常有朋友或同事征询有关如何获取两点(经纬度表示)间距离的问题,现将解决方法写出来,以供自己和朋友查询、学习。
解决此问题的关键是要理解空间几何模型,在理解空间几何模型的基础上再利用数学公式求取两点之间的值。其解决步骤如下:
1、设两点分别为P1、P2,如果其值是用度分秒形式表示,则需将其转换成十进制度的形式,如P1点纬度为23度30分,则其纬度值转换成十进制度的形式为23.5度。如果值为十进制度的形式,则直接进入第二步。
2、分别将两点的经度、纬度值转换成弧度制形式,如P1纬度为23.5度,转换成弧度制则为:23.5*PI / 180。分别用P1latInRad、P1LongInRad、P2latInRad、P2LongInRad表示。
3、分别求取两点间的纬度差(dlat)与经度差(dlon);
4、求取两点间的正弦与余弦值,公式如下:
A=sin2(dlat/2) + cos(P1LatInRad)*cos(P2LatInRad)*Sin2(dlon/2)(1)
5、求取两点的正切值,公式如下:
C=2*Math.Atan2(Math.Sqrt(A), Math.Sqrt(1-A))(2)
6、返回两点间的距离:公式如下:
D=EarthRadiusKm * C(3)
附C#源代码:
1///<summary>
2///获取两点(经纬度表示)间的距离
3///</summary>
4///<paramname="p1Lat">第一点纬度值</param>
5///<paramname="p1Lng">第一点经度值</param>
6///<paramname="p2Lat">第二点纬度值</param>
7///<paramname="p2Lng">第二点经度值</param>
8///<returns>返回两点间距离</returns>
9publicdoubleGetDistance(doublep1Lat,doublep1Lng,doublep2Lat,doublep2Lng)
10{
11doubledLat1InRad=p1Lat*(Math.PI/180);
12doubledLong1InRad=p1Lng*(Math.PI/180);
13doubledLat2InRad=p2Lat*(Math.PI/180);
14doubledLong2InRad=p2Lng*(Math.PI/180);
15doubledLongitude=dLong2InRad-dLong1InRad;
16doubledLatitude=dLat2InRad-dLat1InRad;
17doublea=Math.Pow(Math.Sin(dLatitude/2),2)+Math.Cos(dLat1InRad)*Math.Cos(dLat2InRad)*Math.Pow(Math.Sin(dLongitude/2),2);
18doublec=2*Math.Atan2(Math.Sqrt(a),Math.Sqrt(1-a));
19doubledDistance=EarthRadiusKm*c;
20returndDistance;
21}
22
23///<summary>
24///RadiusoftheEarth
25///</summary>
26publicdoubleEarthRadiusKm=6378.137;//WGS-84
分享到:
相关推荐
通过两点经纬度,计算他们之间的距离 - JAVA
现在计算距离一般是同步百度和其他地图接口调用,可以直接通过公式计算获取两点经纬度距离
根据两点经纬度得到距离
PHP获取经纬度两点间距离,筛选,排序,多用于APP中用户与用户或用户与商家之间,进行距离筛选,排序
通过经纬度算出两点间的距离,经过仔细对比及参照,相对精确度较高,请大家放心使用
根据一个给定经纬度的点和距离,进行附近地点查询,计算两点位置的距离,返回两点的距离,单位:公里或千米
之前网上找的一些例子计算出来的不准确自己写了一个,C#计算两个经纬度之间的方向角的DEMO,以正北为0-359 范围内的角度。
高德地图路径规划api,批量获取坐标点间的距离,驾车时间等
含微信账号接入代码,微信菜单创建代码,根据经纬度获得两点之间距离,可扩展获得附近功能。含微信相关jar文件
主要介绍了Java通过经纬度坐标获取两个点之间的直线距离的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
通过java实现两个经纬度的点之间的距离,获取外卖配送的距离,方便快捷有效,非常实用,代码简洁,不臃肿。
请您先在第一点(起始点)和第二点(结束点)两功能栏中输入相应的经纬度,再点击功能键【计算两点距离】,结果会在【距离输出】功能栏自动输出。 如何计算三点夹角? 夹角生成原理:第一点和参考点所在直线与...
记录下 java jts 求两个空间几何图形间最短距离,及最短距离间的两个坐标. 如:求一个点到一条直线的垂直坐标
主要采用java语言实现swing中随机点的画法,简单便捷的在窗体中实现随机点的分布。
利用JS实现的根据经纬度计算地球上两点之间的距离 最近用到了根据经纬度计算地球表面两点间距离的公式,然后就用JS实现了一下。 计算地球表面两点间的距离大概有两种办法。 第一种是默认地球是一个光滑的球面,然后...
知道经纬度后计算两点之间的距离和相对方位
高德地图 1,根据经纬度计算面积 2,判断一个点是否在圈内
获取两点坐标距离: <?php /** * 计算两点地理坐标之间的距离 * @param Decimal $longitude1 起点经度 * @param Decimal $latitude1 起点纬度 * @param Decimal $longitude2 终点经度 * @param Decimal $...
在地图两点之间画线,其中有获取两点之间经纬度的代码
根据已知点坐标计算附近位置,代码详细解释了三种计算策略。主要涉及日常需要解决问题,例如类似于滴滴打车实现查找附近车辆业务逻辑和贝壳找房根据指定位置筛选出附近房源,上述两场场景应用可借鉴代码中两种方法...