求一个相对来说比较准确的,知道2点的经纬度(度,分,秒)来求2点之间的距离!!!的c#代码。最好是一个函数。嘎嘎。

解决方案 »

  1.   

    关于用经纬度计算距离:  地球赤道上环绕地球一周走一圈共 40075.04公里, 而@一圈分成360°,而每1°(度)有60', 每一度一秒在赤道上的长度计算如下:  40075.04km/360°=111.31955km  111.31955km/60'=1.8553258km=1855.3m  而每一分又有60秒, 每一秒就代表 1855.3m/60=30.92m  任意两点距离计算公式为  d=111.12cos{1/[sinΦAsinΦB十 cosΦAcosΦBcos(λB—λA)]}  其中A点经度,纬度分别为λA和ΦA,B点的经度、纬度分别为λB和ΦB,d为距离。
     表 Select NLat As 纬度,NLon As 经度 From t_Data_G0001 Where STID='' And DStampTime='';
        Select LLat As 纬度2,LLon As 经度2 From o_GISLabel Where SID =@SID;
      时间为基准
    /**** 根据两站点的经纬度求两站点间的距离 ****/
    经纬度的计算函数是这样的:
    double D_jw(double wd1,double jd1,double wd2,double jd2)
    {
        double x,y,out;
        double PI=3.14159265;
        double R=6.371229*1e6;    x=(jd2-jd1)*PI*R*cos( ((wd1+wd2)/2) *PI/180)/180;
        y=(wd2-wd1)*PI*R/180;
        out=hypot(x,y);
        return out/1000;
    }
      

  2.   

    //   计算已知经纬度的两点间的距离   
      //   Thu   2005.08.04   
        
      using   System;   
        
      struct   JWD   
      {   
          double   JD,   JF,   JM;   
          double   WD,   WF,   WM;   
          public   double   Jd,   Wd,   J,   W;   
          public   const         double   Ea   =   6378137;     //   赤道半径   
          public   const         double   Eb   =   6356725;     //   极半径   
          public   readonly   double   Ec;   
          public   readonly   double   Ed;   
        
          //   构造函数,   经度:   a   度,   b   分,   c   秒;     纬度:   d   度,   e   分,   f   秒   
          public   JWD(double   a,   double   b,   double   c,   double   d,   double   e,   double   f)   
          {   
              JD=a;   JF=b;   JM=c;   WD=d;   WF=e;   WM=f;   
              Jd   =   JD   +   JF   /   60   +   JM   /   3600;   
              Wd   =   WD   +   WF   /   60   +   WM   /   3600;   
              J     =   Jd   *   Math.PI   /   180;   
              W     =   Wd   *   Math.PI   /   180;   
              Ec   =   Eb   +   (Ea   -   Eb)   *   (90-Wd)   /   90;   
              Ed   =   Ec   *   Math.Cos(W);   
          }   
      }   
        
      class   Test   
      {   
          static   void   Main()   
          {   
              JWD   A0   =   new   JWD(120,   36,   0,   28,   0,   0);   
              JWD   A1   =   new   JWD(130,     0,   0,   30,   0,   0);   
              Calc(A0,   A1);   
          }   
        
          static   void   Calc(JWD   A,   JWD   B)   
          {   
              double   dx   =   (B.J   -   A.J)   *   A.Ed;   
              double   dy   =   (B.W   -   A.W)   *   A.Ec;   
              double   d     =   Math.Sqrt(dx   *   dx   +   dy   *   dy);   
              Console.WriteLine("{0:N1}M",   d);   
          }   
      }   
        
      /*   程序输出:   
      949,373.0M   
      */   
      

  3.   

    呵呵,LZ是想用50分叫人幫忙baidu呢?
    這純粹就一數學公式,重賞之下,并有勇夫。
      

  4.   

    CSDN里原来也有关于这个问题的帖子http://topic.csdn.net/t/20040317/08/2851332.html 
      

  5.   

    using System;
    using System.Collections.Generic;
    using System.Text;
    namespace GISDispatcher
    {
        public class CalculateHelper
        {
            private const double EARTH_RADIUS = 6378.137;        public CalculateHelper()
            {
            }        private static double rad(double d)
            {
                return d * Math.PI / 180.0;
            }        public static double GetDistanceInGE(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 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) +
                 Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));
                s = s * EARTH_RADIUS;
                s = Math.Round(s * 10000) / 10000;
                return s;
            }
        }
    }
      

  6.   


    c#根据两点经纬度,求两点之间的举例,项目中使用。非常准确。http://www.ithaiyang.com.cn/html/DOTNET/CSharp/5989.html
      

  7.   

    VCpp实现GPS全球定位系统定位数据的提取
    http://www.vscodes.com/article/1/1897.html