经纬度加减运算。(度°分′秒″格式)
2008-10-16 17:04
459 查看
经度是分和秒是按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″
相关文章推荐
- 经纬度加减运算。(度°分′秒″格式)
- Linux date日期格式及加减运算
- java中字符串的格式以及日期的加减运算
- 时间格式进行加减运算,偷懒必备(60进制转10进制)
- ASP实现SQL语句日期格式的加减运算
- Linux date日期格式及加减运算
- velocity加减运算注意格式 ,加减号的左右都要有空格
- Linux date日期格式及加减运算
- Linux date日期格式及加减运算 .
- Linux date日期格式及加减运算
- ASP实现SQL语句日期格式的加减运算
- Linux date日期格式及加减运算
- oracle日期的加减运算格式
- ASP实现SQL语句日期格式的加减运算
- SQL语句日期格式的加减运算
- AT&T 格式Linux 汇编语法
- TCP/IP详解--网络层 && IP首部格式
- FusionCharts API:数字格式
- 小端格式和大端格式(Little-Endian&Big-Endian)
- android定位已获取经纬度,上传google解析后textview不显示,基础问题,求大神解答~~>_<`