经纬度加减运算。(度°分′秒″格式)
2008-10-19 12:59
471 查看
经度是分和秒是按60进位,如果要做运算第一步就是转换成浮点数,之后就是计算和还原。
using System.Text.RegularExpressions;
public static double DegreeFromString(string str)
{
Match match = Regex.Match(str,
@"(?<hour>[0-9]+)°(?<minute>[0-9]+)(′|')(?<second>[0-9]+(/.[0-9]+)?)(″|""|'')");
if (match.Success)
{
double hour = 0, minute = 0, second = 0;
double.TryParse(match.Result("${hour}"), out hour);
double.TryParse(match.Result("${minute}"), out minute);
double.TryParse(match.Result("${second}"), out second);
return hour + minute / 60 + second / 3600;
}
else return 0;
}
public static string DegreeToString(double degree)
{
double minute = (degree - (int)degree) * 60;
double second = (minute - (int)minute) * 60;
return string.Format("{0:#}°{1:#}′{2:#.00}″", degree, Math.Abs(minute), Math.Abs(second));
}
private void button1_Click(object sender, EventArgs e)
{
Console.WriteLine(DegreeToString(DegreeFromString("20°53'41''")));
Console.WriteLine(DegreeToString(DegreeFromString("10°11'20.5''")));
Console.WriteLine(DegreeToString(DegreeFromString("20°53'41''") - DegreeFromString("10°11'20.5''")));
Console.WriteLine(DegreeToString(DegreeFromString("10°11'20.5''") - DegreeFromString("20°53'41''")));
}
输出:
21°54′41.00″
10°11′20.50″
11°42′20.50″
-11°42′20.50″
using System.Text.RegularExpressions;
public static double DegreeFromString(string str)
{
Match match = Regex.Match(str,
@"(?<hour>[0-9]+)°(?<minute>[0-9]+)(′|')(?<second>[0-9]+(/.[0-9]+)?)(″|""|'')");
if (match.Success)
{
double hour = 0, minute = 0, second = 0;
double.TryParse(match.Result("${hour}"), out hour);
double.TryParse(match.Result("${minute}"), out minute);
double.TryParse(match.Result("${second}"), out second);
return hour + minute / 60 + second / 3600;
}
else return 0;
}
public static string DegreeToString(double degree)
{
double minute = (degree - (int)degree) * 60;
double second = (minute - (int)minute) * 60;
return string.Format("{0:#}°{1:#}′{2:#.00}″", degree, Math.Abs(minute), Math.Abs(second));
}
private void button1_Click(object sender, EventArgs e)
{
Console.WriteLine(DegreeToString(DegreeFromString("20°53'41''")));
Console.WriteLine(DegreeToString(DegreeFromString("10°11'20.5''")));
Console.WriteLine(DegreeToString(DegreeFromString("20°53'41''") - DegreeFromString("10°11'20.5''")));
Console.WriteLine(DegreeToString(DegreeFromString("10°11'20.5''") - DegreeFromString("20°53'41''")));
}
输出:
21°54′41.00″
10°11′20.50″
11°42′20.50″
-11°42′20.50″
相关文章推荐
- 经纬度加减运算。(度°分′秒″格式)
- java中字符串的格式以及日期的加减运算
- 时间格式进行加减运算,偷懒必备(60进制转10进制)
- Linux date日期格式及加减运算
- ASP实现SQL语句日期格式的加减运算
- Linux date日期格式及加减运算
- velocity加减运算注意格式 ,加减号的左右都要有空格
- Linux date日期格式及加减运算
- Linux date日期格式及加减运算 .
- Linux date日期格式及加减运算
- ASP实现SQL语句日期格式的加减运算
- Linux date日期格式及加减运算
- oracle日期的加减运算格式
- ASP实现SQL语句日期格式的加减运算
- SQL语句日期格式的加减运算
- android定位已获取经纬度,上传google解析后textview不显示,基础问题,求大神解答~~>_<`
- 利用"$((...))"进行简单的数值运算
- JAVA日期加减运算
- 算法题: 求一个整数数组中,通过元素加减运算得到指定结果的所有运算过程. 例如【5,4,6,7,1】= 9 ?
- 算法:高精度运算(HDU:problem&nbs…