求地球上点度分秒格式与弧度格式经纬度转换算法
,有算法描述更佳,
另求知道球心夹角@ 和地球半么rad,求孤长算法
解决就散分

解决方案 »

  1.   

    参考:http://www.cnblogs.com/zhfen/archive/2007/12/18/1004305.html
      

  2.   

    这个专业算法,最好有做好的DLL调用就好了
      

  3.   

    参考:
    Ex:
    //using System.Text.RegularExpressions;
    static string Calc(string AParam)
    {
        Match vMatch = Regex.Match(AParam, "([0-9]+)°");
        double A = 0;
        if (vMatch.Success) A = double.Parse(vMatch.Result("$1"));
        vMatch = Regex.Match(AParam, @"([0-9]+)′");
        double B = 0;
        if (vMatch.Success) B = double.Parse(vMatch.Result("$1"));
        vMatch = Regex.Match(AParam, @"([0-9]+)″");
        double C = 0;
        if (vMatch.Success) C = double.Parse(vMatch.Result("$1"));
        return string.Format("{0:.000}", A + B / 60 + C / 3600);
    }static void Main(string[] args)
    {
        Console.WriteLine(@"110°3′8"" = " + Calc(@"110°3′8″"));
        Console.WriteLine(@"110°07′8"" = " + Calc(@"110°07′8″"));
        Console.ReadKey();
    }改为自己想要的,编译为DLL
      

  4.   

    //度分秒转为弧度 方法
    double   Dms2Rad(double   Dms) 

      double   Degree,   Miniute; 
      double   Second; 
      int   Sign; 
      double   Rad; 
      if(Dms>=0)
      {
        Sign   =   1; 
      }
      else 
      {
        Sign   =   -1; 
      }
      Dms   =   fabs(Dms); 
      Degree   =   floor(Dms); 
      Miniute   =   floor(fmod(Dms   *   100.0,   100.0)); 
      Second   =   fmod(Dms   *   10000.0,   100.0); 
      Rad   =   Sign   *   (Degree   +   Miniute   /   60.0   +   Second   /   3600.0)   *   PI   /   180.0; 
      return   Rad; 

    //弧度转为度分秒 方法
    double   Rad2Dms(double   Rad) 

      double   Degree,   Miniute; 
      double   Second; 
      int   Sign; 
      double   Dms; 
      if(Rad>=0) 
      {
        Sign   =   1; 
      }
      else 
      {
        Sign   =   -1; 
      }
      Rad   =   fabs(Rad   *   180.0   /   PI); 
      Degree   =   floor(Rad); 
      Miniute   =   floor(fmod(Rad   *   60.0,   60.0)); 
      Second   =   fmod(Rad   *   3600.0,   60.0); 
      Dms   =   Sign   *   (Degree   +   Miniute   /   100.0   +   Second   /   10000.0); 
      return   Dms;