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

    在坐标系中,计算两点之间的距离,根据两点间距离公式:
    距离 = sqrt( (lat2-lat1) * (lat2-lat1) + (lon2-lon1) * (lon2-lon1) );其中lat2-lat1为两个点的维度差;lon2-lon1为两个点的经度之差。
    在ArcGis的两点的距离计算中,需要考虑弧度和地球离心率的问题。

具体计算推导如下:
设圆周长为C,半径为R,两地间的的弧长为L,对应的圆心角为n°。因为360°的圆心角所对的弧长就是圆周长C=2πR,所以1°的圆心角所对弧长是2πR/360,即πR/180。
因此,
・纬度差对应的弧度:纬度两点间的的距离作为半径,1°的圆心角所对弧长计算为:【( lat2 - lat1 ) * PI / 180.0】;
・经度差对应的弧度:经度两点间的的距离作为半径,1°的圆心角所对弧长计算为:【( lon2 - lon1 ) * PI / 180.0】;
・纬度和对应的弧度:【lat1 + lat2】作为直径 ,1°的圆心角所对弧长计算为:【( lat2 + lat1 ) * PI / 180.0 / 2】;

纬度和的弧度的斜率计算:
・对边的斜率计算:sin(( lat2 + lat1 ) * PI / 180.0 / 2)
・邻边的斜率计算:cos(( lat2 + lat1 ) * PI / 180.0 / 2)
D = 1.0 - 地球离心率 * 对边的斜率 * 对边的斜率;
子午线曲率半径 = 椭圆球短半径 / sqrt( D * D * D )
卯酉线曲率半径 = 椭圆球长半径 / sqrt( D )

经度方向的距离 = 子午线曲率半径 * 经度差对应的弧度
纬度方向的距离 = 子卯酉线曲率半径 * 纬度差对应的弧度

最后:
计算得到的经纬度的距离为 = sqrt(经度方向的距离 * 经度方向的距离 + 纬度方向的距离 * 纬度方向的距离);

你可能感兴趣的:(经纬度距离,算法)