2016-04-24 55 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

相关问题