`
huobengle
  • 浏览: 864287 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多
经度是分和秒是按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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics