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 } } |
C#: 数字经纬度和度分秒经纬度间的转换,布布扣,bubuko.com
原文:http://www.cnblogs.com/shenchao/p/3773007.html