首页 > 代码库 > C#: 数字经纬度和度分秒经纬度间的转换
C#: 数字经纬度和度分秒经纬度间的转换
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | 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 } } |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。