2014-01-07 300 views
1

通常,我使用14.some numbers and 121.some numbers as map maps on my app。
雖然我發送不同的GPS日誌一個新的模塊上工作,我得到這個座標:拆分字符串沒有拆分器

1434.7906
12103.5434

起初我以爲我的應用程序是不是路由,但後來我看到的座標給出是關閉的,或者說是直接的,格式錯誤(小數點右移兩次)。模塊有問題嗎?還是有一個公式將其轉換爲常規座標?

編輯更新:我發現上面的格式是14D 34M 7906S-- (從下面的鏈接得到這個)
最終,給了我一個問題。 更改標題
如何將其轉換爲小數形式

  • 回答:就像分裂後的字符。 - >我的第一個想法,但..

12103怎麼樣?我需要它是121和03--這需要在3個字符後分裂。因此,我無法控制字符串的爆發,甚至沒有。需要幫忙!感謝

在一天結束的時候,我需要高於2被轉換成這樣: 14.5798433°, 121.0590567°
Calc Source

enter image description here

+0

_...我發現上面的格式是在14D 34M 7906S ...我覺得你對fromat的假設並不完全正確......你爲什麼要把2D 11M 46S表示爲7906S? –

+0

您的輸入似乎有點令人困惑,但您可以通過基於數學限制/數值的規則驗證哪些部分可以是度數,分數和秒數,從而以數學方式進行操作。 –

+0

我得到的確切數據是兩個上面..現在,我已經研究了一下,如果他們將擴大1434.7906相當於14Degrees,34分鐘7906Seconds。 (14°34.79060',121°03.54340') – AdorableVB

回答

2

提供你前導零(對於世界其他地區的事務),長度總是3位(0-180),緯度是2位(0-90)。

的符號纔有意義,如果它是關於度+小數分,即

1434.7906 = 14° + 34.79060' = 14 + (34.79060/60) ° 

在C#中,未經測試:

string lat = ..., lon = ...; 

double la = double.Parse(lat.Substring(0, 2)) + double.Parse(lat.Substring(2))/60.0; 
double lo = double.Parse(lon.Substring(0, 3)) + double.Parse(lon.Substring(3))/60.0; 
+0

謝謝!很多..你有深深的理解能力先生:> – AdorableVB

1

我不熟悉的座標,但它看起來像第一您的值必須是5位數字,第二個值是4位數字。所以我會首先在時段(完全停止)角色上分割。然後,如果第一個值是4位數,則將0置於前面以填充5。然後分割位置,所以你有014和34,然後變成14和34等。

0

殼牌分裂數

$  echo 1434 |sed 's/\(..\)$/ \1/' 
14 34 

$  echo 12103 |sed 's/\(..\)$/ \1/' 
121 03 

如果您需要處理與指望輸出全數字:

$  echo 1434.7906 |sed -r 's/(.*)(..)\.(.*)/\1Degress, \2Minutes \3Seconds/' 
14Degress, 34Minutes 7906Seconds 
0

注意,經度和緯度可以是負數。這裏有一種功能在類型轉換中很麻煩:

Function DecDegree(dd_mm_decmm As String) As String 
     Dim deg As String = dd_mm_decmm.Substring(0, dd_mm_decmm.IndexOf(".") - 2) 
     Dim mm_dec As String = dd_mm_decmm.Substring(dd_mm_decmm.IndexOf(".") - 2) 
     Dim decDegrees As Double = CDbl(deg) + (CDbl(mm_dec/60) * If(CDbl(deg) < 0, -1, 1)) 
     Return FormatNumber(decDegrees, 6) 
    End Function 

拆分是基於小數點的位置。分鐘轉換的數學檢查是否需要添加或減少。該函數返回6個小數點,這對於任何調查級別的GPS都是足夠的。

+0

對不起,但我怎麼用這個?說,我想轉換上面給出的那兩個。 – AdorableVB

+0

我會忽略最後一個FormatNumber()並返回decDegrees。 –

+0

轉換二:調用func兩次 – rheitzman