2016-04-24 16 views
0

我有一個地理位置字符串爲25°9'37「N 55°13'28」E。使用JavaScript正則表達式我想從上面的字符串中提取Lat和Lng。 謝謝。從地理位置提取緯度/ Lng字符串

+1

'VAR RES = 「25°9'37 \」 N 55°13'28 \ 「E」 .match(/ \ d +° \ d +'\ d +「[NEWS]/g)' –

+0

我在每個值之間看到一個空格。你可以簡單地做一個字符串拆分,並使用正確的值 –

+0

@PranavCBalan你的建議爲我工作。非常感謝完美的解決方案。 –

回答

2

您的第一行可能是「25°9'37」N是緯度的分鐘格式,您可能想要提取它的值並將其轉換爲十進制度表示,這可以對其進行進一步計算。 @Stormwind

根據this博客帖子,轉換公式是

//latitude formula 
([LATITUDE_DEG])+([LATITUDE_MIN]/60)+([LATITUDE_SEC]/3600))* 
IF [Latitude_Direction]="South" THEN -1 ELSE 1 END 

//longitude 
([LONGITUDE_DEG]+([LONGITUDE_MIN]/60)+([LONGITUDE_SEC]/3600))* 
IF [Longitude_Direction]="West" THEN -1 ELSE 1 END 

正則表達式(簡單)

//latitude 
25°9'37"N 
/(\w+)°(\w+)'(\w+)"(\w+)/ 
`25`, `9`, `37`, `N` 

//regex from @PranavCBalan also works well 
/(\d+)°(\d+)'(\d)+"([NEWS])/ 
`25`, `9`, `37`, `N` 

解緯度(簡單) - 通知,該解決方案是很容易出錯,因爲它寫在5分鐘內,所以要小心

var lat_str = "25°9'37\"N"; //escaped string 
lat_str = lat_str.replace('\"', '"'); //little trick 
var matches = lat_str.match(/(\w+)°(\w+)'(\w+)"(\w+)/); //regexify 
var lat_deg = parseInt(matches[1]); //degrees 
var lat_min = parseInt(matches[2]); //minutes 
var lat_sec = parseInt(matches[3]); //seconds 
var lat_dir = matches[4];   //direction 

var latitude = (lat_deg+(lat_min/60)+(lat_sec/3600))*(lat_dir === 'N' ? 1 : -1); 

//25.160277777777775 

解經度

//same as latitude (except direction check), do it as your homework 

詳情參閱Converting Latitude/Longitude from Degrees/Minutes/Seconds to Decimal Degrees

+0

這個聲明「25°9'37」N是十進制度的值 - 不是緯度,你必須將其轉換爲緯度「_is非常不穩定,當然這是一個緯度值,有幾分鐘甚至幾秒鐘,你部分回答了問題中沒有提到的問題,即如何將該經緯度分鐘對轉換成十進制度。也許這就是他最終想要的,但它不是這樣表達的,一分鐘經常是dd°mm.mm'(其中m是0 ... 59.99 - 秒不再現代),而十進制經度是dd.dddd ...°要對它進行計算,可以使用十進制度表示 – Stormwind

+0

@Stormwind我認爲OP期望像'23.23232'這樣的常用緯度值_使用JavaScript正則表達式我想額外從上面的字符串中選擇Lat和Lng_OP想要從'25°9'37「N'得到__Lat__,所以他需要從字符串中提取degs/min/secs,然後轉換爲度數來獲得緯度,這是同意的嗎? –

+0

可能是他想要的,所以你的解決方案是可以的。但你應該糾正你的第一句話。這當然是一個緯度,也是「通常」的一個,如果有的話,它不是十進制度數值。他們不會在海上使用十進制經緯度,請放心。您的第一行可能是「25°9'37」N是緯度的分鐘格式,您可能想要提取它的值並將其轉換爲十進制度表示,這可以對其進行進一步計算「,或者類似的。不是那麼容易讓人誤解,因爲這個現在的人在我眼中真的發紅:-)。 – Stormwind

相關問題