Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从地质作用管柱中提取Lat/Lng_Javascript_Regex - Fatal编程技术网

Javascript 从地质作用管柱中提取Lat/Lng

Javascript 从地质作用管柱中提取Lat/Lng,javascript,regex,Javascript,Regex,我的地理位置字符串为25°9'37“N 55°13'28”E。使用JavaScript正则表达式,我想从上面的字符串中提取Lat和Lng。 谢谢 您的第一行可以是“25°9'37”。N是纬度的分钟格式,您可能希望提取它的值并转换为它的十进制度数表示形式,这允许对其进行进一步计算@暴风 根据blogpost,转换公式是 //latitude formula ([LATITUDE_DEG])+([LATITUDE_MIN]/60)+([LATITUDE_SEC]/3600))* IF [Latitu

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

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

根据blogpost,转换公式是

//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
正则表达式(简单)

纬度解决方案(简单)-注意,这个解决方案很容易出错,因为它是在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
有关更多详细信息,请参阅

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

根据blogpost,转换公式是

//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
正则表达式(简单)

纬度解决方案(简单)-注意,这个解决方案很容易出错,因为它是在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

有关更多详细信息,请参阅
var res=“25°9'37\”N 55°13'28\“E”。匹配(/\d+°\d+'\d+”[NEWS]/g)
我看到每个值之间都有一个空格。您可以简单地进行字符串拆分并使用这些值right@PranavCBalan你的建议对我很有效。非常感谢你提供了完美的解决方案。@PranavCBalan它不会给出纬度值indeed@SyedFasih:很高兴帮助
var res=“25°9'37\”N 55°13'28\“E”。匹配(/\d+°\d+'\d+”[NEWS]/g)
我看到每个值之间有一个空格。您可以简单地进行字符串拆分并使用这些值right@PranavCBalan你的建议对我有用。非常感谢您提供的完美解决方案。@PranavCBalan它不会给出纬度值indeed@SyedFasih:很高兴为您提供帮助此语句“25°9'37”N是十进制度数值-不是纬度,您必须将其转换为纬度“非常不稳定。当然,这是一个纬度值,分甚至秒。您部分回答了问题中未提出的问题,即如何将lat/lon分钟对转换为十进制度数。也许这就是他最终想要的,但不是这样表达的。分钟lat通常为dd°mm.mm'(其中m为0…59.99-秒不再是现代的),而十进制lat为dd.dddd…°。要对其执行计算,需要使用十进制表示。@Stormwind我认为OP希望使用JavaScript正则表达式获得通常的纬度值,如
23.23232
,我想从上述字符串中提取Lat和Lng OP想从
25°9'37中获取Lat“N
所以他需要从字符串中提取degs/mins/secs,然后转换为degree以获得纬度,同意吗?可能是他想要的,所以您的解决方案可以。但是你应该纠正你的第一句话。这肯定是一个纬度,也是“通常”的纬度,如果有的话,它不是十进制的度数。他们在海上不使用十进制lat/lon,请放心。您的第一行可能是“25°9'37”。N是纬度的分钟格式,您可能希望提取它的值并转换为它的十进制表示形式,这样可以对它进行进一步的计算”,或者类似的。只是为了不那么误导,因为当前的一行在我眼里真的很红:-)。这句话是“25°9'37”N是十进制度数值-不是纬度,必须将其转换为纬度“非常不稳定。当然,这是一个纬度值,分甚至秒。您部分回答了问题中未提出的问题,即如何将lat/lon分钟对转换为十进制度数。也许这就是他最终想要的,但不是这样表达的。分钟lat通常为dd°mm.mm'(其中m为0…59.99-秒不再是现代的),而十进制lat为dd.dddd…°。要对其执行计算,需要使用十进制表示。@Stormwind我认为OP希望使用JavaScript正则表达式获得通常的纬度值,如
23.23232
,我想从上述字符串中提取Lat和Lng OP想从
25°9'37中获取Lat“N
所以他需要从字符串中提取degs/mins/secs,然后转换为degree以获得纬度,同意吗?可能是他想要的,所以您的解决方案可以。但是你应该纠正你的第一句话。这肯定是一个纬度,也是“通常”的纬度,如果有的话,它不是十进制的度数。他们在海上不使用十进制lat/lon,请放心。您的第一行可以是“25°9'37”。N是纬度的分钟格式,您可能希望提取它的值并转换为它的十进制表示形式,这样可以对它进行进一步的计算”,或者类似地。只是为了不那么误导,因为当前的一行在我眼里真的很红:-)。