经纬度加减运算。(度°分′秒″格式)

经度是分和秒是按60进位,如果要做运算第一步就是转换成浮点数,之后就是计算和还原。
  1. using System.Text.RegularExpressions;
  2. public static double DegreeFromString(string str)
  3. {
  4.     Match match = Regex.Match(str, 
  5.         @"(?<hour>[0-9]+)°(?<minute>[0-9]+)(′|')(?<second>[0-9]+(/.[0-9]+)?)(″|""|'')");
  6.     if (match.Success)
  7.     {
  8.         double hour = 0, minute = 0, second = 0;
  9.         double.TryParse(match.Result("${hour}"), out hour);
  10.         double.TryParse(match.Result("${minute}"), out minute);
  11.         double.TryParse(match.Result("${second}"), out second);
  12.         return hour + minute / 60 + second / 3600;
  13.     }
  14.     else return 0;
  15. }
  16. public static string DegreeToString(double degree)
  17. {
  18.     double minute = (degree - (int)degree) * 60;
  19.     double second = (minute - (int)minute) * 60;
  20.     return string.Format("{0:#}°{1:#}′{2:#.00}″", degree, Math.Abs(minute), Math.Abs(second));
  21. }
  22. private void button1_Click(object sender, EventArgs e)
  23. {
  24.     Console.WriteLine(DegreeToString(DegreeFromString("20°53'41''")));
  25.     Console.WriteLine(DegreeToString(DegreeFromString("10°11'20.5''")));
  26.     Console.WriteLine(DegreeToString(DegreeFromString("20°53'41''") - DegreeFromString("10°11'20.5''")));
  27.     Console.WriteLine(DegreeToString(DegreeFromString("10°11'20.5''") - DegreeFromString("20°53'41''")));
  28. }
输出:
  1. 21°5441.00
  2. 10°1120.50
  3. 11°4220.50
  4. -11°4220.50

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值