从地理定位字符串中提取纬度/液化

extract Lat/Lng from Geo loaction string

本文关键字:提取 纬度 液化 字符串 定位      更新时间:2023-09-26

我有一个地理位置字符串为 25°9'37"N 55°13'28"E。使用 JavaScript 正则表达式,我想从上面的字符串中提取 Lat 和 Lng。谢谢。

您的第一行可能是"25°9'37"N 是纬度的分钟格式,您可能希望提取其值并转换为其十进制度表示形式,这样可以对其进行进一步计算。 @Stormwind

根据这篇博文,转换公式是

//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

有关更多详细信息,请参阅将纬度/经度从度/分/秒转换为十进制度