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

经度是分和秒是按60进位,如果要做运算第一步就是转换成浮点数,之后就是计算和还原。
  1. usingSystem.Text.RegularExpressions;
  2. publicstaticdoubleDegreeFromString(stringstr)
  3. {
  4. Matchmatch=Regex.Match(str,
  5. @"(?<hour>[0-9]+)°(?<minute>[0-9]+)(′|')(?<second>[0-9]+(/.[0-9]+)?)(″|""|'')");
  6. if(match.Success)
  7. {
  8. doublehour=0,minute=0,second=0;
  9. double.TryParse(match.Result("${hour}"),outhour);
  10. double.TryParse(match.Result("${minute}"),outminute);
  11. double.TryParse(match.Result("${second}"),outsecond);
  12. returnhour+minute/60+second/3600;
  13. }
  14. elsereturn0;
  15. }
  16. publicstaticstringDegreeToString(doubledegree)
  17. {
  18. doubleminute=(degree-(int)degree)*60;
  19. doublesecond=(minute-(int)minute)*60;
  20. returnstring.Format("{0:#}°{1:#}′{2:#.00}″",degree,Math.Abs(minute),Math.Abs(second));
  21. }
  22. privatevoidbutton1_Click(objectsender,EventArgse)
  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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值