C#: 数字经纬度和度分秒经纬度间的转换
2014-06-06 17:13
218 查看
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { /// <summary> /// 公用的特殊函数 /// </summary> public class SpecialFunctions { #region 构造函数 /// <summary> /// 构造函数 /// </summary> public SpecialFunctions() { } #endregion #region 方法 /// <summary> /// 数字经纬度和度分秒经纬度转换 (Digital degree of latitude and longitude and vehicle to latitude and longitude conversion) /// </summary> /// <param name="digitalLati_Longi">数字经纬度</param> /// <return>度分秒经纬度</return> static public string ConvertDigitalToDegrees(string digitalLati_Longi) { double digitalDegree = Convert.ToDouble(digitalLati_Longi); return ConvertDigitalToDegrees(digitalDegree); } /// <summary> /// 数字经纬度和度分秒经纬度转换 (Digital degree of latitude and longitude and vehicle to latitude and longitude conversion) /// </summary> /// <param name="digitalDegree">数字经纬度</param> /// <return>度分秒经纬度</return> static public string ConvertDigitalToDegrees(double digitalDegree) { const double num = 60; int degree = (int)digitalDegree; double tmp = (digitalDegree - degree) * num; int minute = (int)tmp; double second = (tmp - minute) * num; string degrees = "" + degree + "°" + minute + "′" + second + "″"; return degrees; } /// <summary> /// 度分秒经纬度(必须含有'°')和数字经纬度转换 /// </summary> /// <param name="digitalDegree">度分秒经纬度</param> /// <return>数字经纬度</return> static public double ConvertDegreesToDigital(string degrees) { const double num = 60; double digitalDegree = 0.0; int d = degrees.IndexOf('°'); //度的符号对应的 Unicode 代码为:00B0[1](六十进制),显示为°。 if (d < 0) { return digitalDegree; } string degree = degrees.Substring(0, d); digitalDegree += Convert.ToDouble(degree); int m = degrees.IndexOf('′'); //分的符号对应的 Unicode 代码为:2032[1](六十进制),显示为′。 if (m < 0) { return digitalDegree; } string minute = degrees.Substring(d + 1, m - d - 1); digitalDegree += ((Convert.ToDouble(minute)) / num); int s = degrees.IndexOf('″'); //秒的符号对应的 Unicode 代码为:2033[1](六十进制),显示为″。 if (s < 0) { return digitalDegree; } string second = degrees.Substring(m + 1, s - m - 1); digitalDegree += (Convert.ToDouble(second) / (num * num)); return digitalDegree; } /// <summary> /// 度分秒经纬度(必须含有'/')和数字经纬度转换 /// </summary> /// <param name="digitalDegree">度分秒经纬度</param> /// <param name="cflag">分隔符</param> /// <return>数字经纬度</return> static public double ConvertDegreesToDigital_default(string degrees) { char ch = '/'; return ConvertDegreesToDigital(degrees, ch); } /// <summary> /// 度分秒经纬度和数字经纬度转换 /// </summary> /// <param name="digitalDegree">度分秒经纬度</param> /// <param name="cflag">分隔符</param> /// <return>数字经纬度</return> static public double ConvertDegreesToDigital(string degrees, char cflag) { const double num = 60; double digitalDegree = 0.0; int d = degrees.IndexOf(cflag); if (d < 0) { return digitalDegree; } string degree = degrees.Substring(0, d); digitalDegree += Convert.ToDouble(degree); int m = degrees.IndexOf(cflag, d + 1); if (m < 0) { return digitalDegree; } string minute = degrees.Substring(d + 1, m - d - 1); digitalDegree += ((Convert.ToDouble(minute)) / num); int s = degrees.Length; if (s < 0) { return digitalDegree; } string second = degrees.Substring(m + 1, s - m - 1); digitalDegree += (Convert.ToDouble(second) / (num * num)); return digitalDegree; } #endregion } }
相关文章推荐
- 经纬度、时分秒转换的C#类
- 使用C#实现阿拉伯数字到大写中文的转换-第二种方法
- .Net/C#/VB/T-SQL/Java/Script 实现: 将天文数字转换成中文大写 (2000 年前的思路,打劫的,一点儿技术含量都没有)
- 用C#将任意位整数阿拉伯数字转换成中文大写
- C#实现的【阿拉伯数字转换成中文大写金额】代码(原创)
- 利用创建型工厂方法模式编写小写数字金额转换为人民币大写C#代码。
- 一个将阿拉伯数字转换成中文大写的算法[C#]
- 使用C#实现阿拉伯数字到大写中文的转换
- C#(IsNumeric) 字符串转换为数字的4种方法(转)
- C#写的将阿拉伯数字转换成中文大写金额代码
- 小写数字转换为中文大写的最完整C#方案
- .Net/C#/VB/T-SQL/Java 实现: 将天文数字转换成中文大写 (2000 年前的思路,打劫的,一点儿技术含量都没有)
- C#(IsNumeric) 字符串转换为数字
- 将金额转换到大写数字的C#函数
- 判断C#中的字符串是否是数字,如果是转换成int类型
- 使用C#实现阿拉伯数字到大写中文的转换-第二种方法
- C#中将数字日期转换为中文日期
- 数字金额转换成中文金额(C#实现)
- 关于.NET(C#)中字符型(Char)与数字类型的转换, CLR via c# 读书笔记
- 一个将阿拉伯数字转换成中文大写的好算法【原创】(C#)