题
我已经有了一个CSV文件中包含的纬度和经度值,例如:
"25°36'55.57""E","45°39'12.52""N"
任何人都有一个快速和简单的一件C#代码转换这双重价值观?
感谢
解决方案
如果你的意思是C#代码:
结果= 25 +(36/60)+(55.57 / 3600)
首先,您需要使用Regex或其他一些机制解析表达式并将其拆分为各个部分。然后:
String hour = "25";
String minute = "36";
String second = "55.57";
Double result = (hour) + (minute) / 60 + (second) / 3600;
当然,根据N / S或E / S切换到翻转标志。维基百科对此有一点了解:
对于计算,西/半球的后缀由西半球的负号代替。令人困惑的是,有时也会看到对东方负面的惯例。首选的惯例 - 东方是积极的 - 与北极的右手笛卡尔坐标系统一致。然后可以将特定经度与特定纬度(通常在北半球为正)组合以在地球表面上给出精确位置。 ( http://en.wikipedia.org/wiki/Longitude )
其他提示
感谢所有快速解答。根据amdfan的回答,我将这段代码放在一起,完成C#中的工作。
/// <summary>The regular expression parser used to parse the lat/long</summary>
private static Regex Parser = new Regex("^(?<deg>[-+0-9]+)[^0-9]+(?<min>[0-9]+)[^0-9]+(?<sec>[0-9.,]+)[^0-9.,ENSW]+(?<pos>[ENSW]*)<*>quot;);
/// <summary>Parses the lat lon value.</summary>
/// <param name="value">The value.</param>
/// <remarks>It must have at least 3 parts 'degrees' 'minutes' 'seconds'. If it
/// has E/W and N/S this is used to change the sign.</remarks>
/// <returns></returns>
public static double ParseLatLonValue(string value)
{
// If it starts and finishes with a quote, strip them off
if (value.StartsWith("\"") && value.EndsWith("\""))
{
value = value.Substring(1, value.Length - 2).Replace("\"\"", "\"");
}
// Now parse using the regex parser
Match match = Parser.Match(value);
if (!match.Success)
{
throw new ArgumentException(string.Format(CultureInfo.CurrentUICulture, "Lat/long value of '{0}' is not recognised", value));
}
// Convert - adjust the sign if necessary
double deg = double.Parse(match.Groups["deg"].Value);
double min = double.Parse(match.Groups["min"].Value);
double sec = double.Parse(match.Groups["sec"].Value);
double result = deg + (min / 60) + (sec / 3600);
if (match.Groups["pos"].Success)
{
char ch = match.Groups["pos"].Value[0];
result = ((ch == 'S') || (ch == 'W')) ? -result : result;
}
return result;
}
什么是你想要代表它?弧秒?然后60分钟,在每一个程度,60秒的每一分钟。你会然后必须保持电子和正通过自己。
这不是它是如何做一般虽然。
最简单表示我已经看到工作是一点上绘制地球上的一个网格系统,该系统具有其来源,通过该中心的地球上。[因此一个很好的位置矢量。] 这个问题是,虽然它易于使用的数据,获取进出系统中的正确可能是坚韧的,因为地球是不是圆的,或者对于这个问题均匀。
不隶属于 StackOverflow