gps坐标转换

 1 public string DM2DD(string DegreeMinutes)
2 {
3 //转换NMEA协议的“度分”格式为十进制“度度”格式
4 string sDegree;
5 string sMinute;
6 string sReturn = "";
7 if (DegreeMinutes.IndexOf(".") == 4)
8 {
9 //DegreeMinutes = Replace(DegreeMinutes, ".", "")
10 //DM2DD = CDbl(Left(DegreeMinutes, 2)) + CDbl(Left(CStr(CDbl(Right(DegreeMinutes, Len(DegreeMinutes) - 2)) / 60), 8)) / 10000
11 DegreeMinutes = DegreeMinutes.Replace(".", "");
12 double sDegree1 = Convert.ToDouble(DegreeMinutes.Substring(0, 2));
13 double sDegree2 = Convert.ToDouble(DegreeMinutes.Substring(2, DegreeMinutes.Length - 2));
14 string sTmp = Convert.ToString(sDegree2 / 60);
15 sDegree2 = Convert.ToDouble(sTmp.Substring(0, sTmp.Length));
16 sDegree2 = sDegree2 / 10000;
17 sDegree = Convert.ToString(sDegree1 + sDegree2);
18 if (sDegree.Length > 11)
19 sDegree = sDegree.Substring(0, 11);
20 sReturn = sDegree;
21 }
22 else if (DegreeMinutes.IndexOf(".") == 5)
23 {
24 try
25 {
26 //DegreeMinutes = Replace(DegreeMinutes, ".", "")
27 //DM2DD = CDbl(Left(DegreeMinutes, 2)) + CDbl(Left(CStr(CDbl(Right(DegreeMinutes, Len(DegreeMinutes) - 2)) / 60), 8)) / 10000
28 DegreeMinutes = DegreeMinutes.Replace(".", "");
29 double sMinute1 = Convert.ToDouble(DegreeMinutes.Substring(0, 3));
30 double sMinute2 = Convert.ToDouble(DegreeMinutes.Substring(3, DegreeMinutes.Length - 3));
31 string sTmp = Convert.ToString(sMinute2 / 60);
32 sMinute2 = Convert.ToDouble(sTmp.Substring(0, sTmp.Length));
33 sMinute2 = sMinute2 / 10000;
34 sMinute = Convert.ToString(sMinute1 + sMinute2);
35 if (sMinute.Length > 10)
36 sMinute = sMinute.Substring(0, 10);
37 sReturn = sMinute;
38 }
39 catch (Exception ex)
40 {
41 ex.ToString();
42 }
43 }
44 return sReturn;
45 }

 

posted @ 2011-12-06 21:38  牛德彪  阅读(358)  评论(0)    收藏  举报