2010-04-25 146 views
3

如何從這些數字計算:如何轉換經緯度?

51.501690392607,-0.1263427734375 

緯度和經度?

應該

 
London, England 51° 32' N 0° 5' W 
+0

你在哪個平臺/環境中工作? – 2010-04-25 19:17:53

+2

@mmsmatt:這很重要嗎?看起來更像是一個算法/數學公式問題。你怎麼能從十進制座標到小時 - 分鐘秒N/S和E/W表示法。 – 2010-04-25 19:20:17

+0

@GregS:對,十進制 - > hms轉換是一個公式問題。但是附加一個城市名稱看起來好像還有其他內容。 – 2010-04-25 19:23:15

回答

2

要轉換51.501690392607,先取的整數部分爲51度。正值是北;底片是南方。

然後取小數部分:0.501690392607

乘以60:60 * 0.501690392607 = 30.10142355642

取整數部分30分鐘。

然後取小數部分:0.10142355642

乘以60:6.0854133852

回合爲秒最接近的1。

你拿出來:51度北30分6秒。

對於東/西的方向,重複與東正和負的西部。

要找到城市裏,你將不得不使用一些數據庫或東西...

我不知道爲什麼你的轉換似乎並不匹配。

2

兩個表示之間的基本轉換可以做這樣的:

// to decimal 
decimal = degree + minutes/60 + seconds/3600; 

// from decimal 
degree = int(decimal) 
remaining = decimal - degree 
minutes = int(remaining*60) 
remaining = remaining - minutes/60 
seconds = remaining*3600 
1

向度的分數轉換成度和分,在僞代碼:

degrees = int(frac) 
minutes = int((frac - degrees) * 60) 

轉換「負「數字分別寫入」S「和」W「(與」N「和」E「),使用」if「。

只是爲了讓僞代碼可執行文件,我們可以使用Python ...:

def translate(frac, islatitude): 
    if islatitude: decorate = "NS" 
    else: decorate = "EW" 
    if frac < 0: 
     dec = decorate[1] 
     frac = abs(frac) 
    else: 
     dec = decorate[0] 
    degrees = int(frac) 
    minutes = int((frac - degrees) * 60) 
    return "%d %d %s" % (degrees, minutes, dec) 

因此,例如:

print translate(51.501690392607, True), 
print translate(-0.126342773437, False) 

會發出

51 30 N 0 7 W 

裝飾(度和分鐘符號)取決於輸出設備的字符集支持 - 以及W coor的7 vs 5弧分dinate似乎是您輸入數字的正確結果。