乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      根據(jù)兩點(diǎn)經(jīng)緯度計(jì)算距離

       都贏888 2013-04-10

      用GPS測(cè)出兩個(gè)點(diǎn)的經(jīng)緯度后,如何計(jì)算這兩個(gè)點(diǎn)之間的距離呢?

      設(shè)兩點(diǎn)A、B的經(jīng)、緯度分別為(jA,wA)(jB,wB),則半徑為R的球面上兩點(diǎn)間的最短距離(大圓弧)為:

      弧AB=R*arccos[sin(wA)sin(wB)+cos(wA)cos(wB)*cos(jA-jB)]

      地球是一個(gè)近乎標(biāo)準(zhǔn)的橢球體,它的赤道半徑為6378.140千米,極半徑為6356.755千米,平均半徑6371.004千米。如果我們假設(shè)地球是一個(gè)完美的球體,那么它的半徑就是地球的平均半徑,記為R。如果以0度經(jīng)線為基準(zhǔn),那么根據(jù)地球表面任意兩點(diǎn)的經(jīng)緯度就可以計(jì)算出這兩點(diǎn)間的地表距離(這里忽略地球表面地形對(duì)計(jì)算帶來(lái)的誤差,僅僅是理論上的估算值)。設(shè)第一點(diǎn)A的經(jīng)緯度為(LonA, LatA),第二點(diǎn)B的經(jīng)緯度為(LonB, LatB),按照0度經(jīng)線的基準(zhǔn),東經(jīng)取經(jīng)度的正值(Longitude),西經(jīng)取經(jīng)度負(fù)值(-Longitude),北緯取90-緯度值(90-Latitude),南緯取90+緯度值(90+Latitude),則經(jīng)過(guò)上述處理過(guò)后的兩點(diǎn)被計(jì)為(MLonA, MLatA)和(MLonB, MLatB)。那么根據(jù)三角推導(dǎo),可以得到計(jì)算兩點(diǎn)距離的如下公式:

      C = sin(MLatA)*sin(MLatB)*cos(MLonA-MLonB) + cos(MLatA)*cos(MLatB)

      Distance = R*Arccos(C)*Pi/180

      這里,R和Distance單位是相同,如果是采用6371.004千米作為半徑,那么Distance就是千米為單位。

      如果僅對(duì)經(jīng)度作正負(fù)的處理,而不對(duì)緯度作90-Latitude(假設(shè)都是北半球,南半球只有澳洲具有應(yīng)用意義)的處理,那么公式將是:

      C = sin(LatA)*sin(LatB) + cos(LatA)*cos(LatB)*cos(MLonA-MLonB)

      Distance = R*Arccos(C)*Pi/180

      以上通過(guò)簡(jiǎn)單的三角變換就可以推出。

      如果三角函數(shù)的輸入和輸出都采用弧度值,那么公式還可以寫(xiě)作:

      C = sin(LatA*Pi/180)*sin(LatB*Pi/180) + cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180)

      Distance = R*Arccos(C)*Pi/180

      1/**
      2  * google maps的腳本里代碼
      3  */
      4 
      5private const double EARTH_RADIUS = 6378.137;
      6 
      7private static double rad(double d)
      8{
      9    return d * Math.PI / 180.0;
      10}
      11 
      12/**
      13  * 根據(jù)兩點(diǎn)間經(jīng)緯度坐標(biāo)(double值),計(jì)算兩點(diǎn)間距離,單位為米
      14  */
      15public static double GetDistance(double lat1, double lng1, double lat2, double lng2)
      16{
      17    double radLat1 = rad(lat1);
      18    double radLat2 = rad(lat2);
      19    double a = radLat1 - radLat2;
      20    double b = rad(lng1) - rad(lng2);
      21    double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2) +
      22     Math.Cos(radLat1)*Math.Cos(radLat2)*Math.Pow(Math.Sin(b/2),2)));
      23    s = s * EARTH_RADIUS;
      24    s = Math.Round(s * 10000) / 10000;
      25    return s;
      26}

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多