GPS DMS格式转换成十进制格式的功能

Javascript - GPS DMS format to Decimal format function

本文关键字:格式 功能 十进制 转换 DMS GPS      更新时间:2023-09-26

我已经搜索了一个javascript函数,可以解析GPS数据,这是在DMS格式到十进制格式。我几乎没有什么帮助,这主要是因为我拥有的GPS数据格式很奇怪。

My Data;
3550.192270N, 01432.026391E
Format;
ddmm.mmmmmmN, ddmm.mmmmmmE

我想把这些值转换成经度和纬度的十进制格式。

提前感谢,琼

SOLVED在网上找到了一个功能,与我的需求相似,并将其转换为只接受日和分钟。

function ConvertDMSToDD(days, minutes) {
   var dd = days + minutes / 60;
   return dd;
}

我使用这个函数来转换数据,我从Arduino盾牌与GPS模块获取。

Javascript - DMS字符串到十进制格式的函数

var dmsStr = "40° 19′ 22.81″ N 49° 19′ 15.61″ E";
var dmsToLonLatRegex= /[-]{0,1}['d.]*['d]|([NSEW])+/g;
var dmsParsed = dmsStr.match(dmsToLonLatRegex);
>Result => ["40", "19", "22.81", "N", "49", "19", "15.61", "E"];

    var dmsParsedObj = {
        latitude: {
            degree: dmsParsed[0],
            minute: dmsParsed[1],
            second: dmsParsed[2],
            direction: dmsParsed[3]
        },
        longitude: {
            degree: dmsParsed[4],
            minute: dmsParsed[5],
            second: dmsParsed[6],
            direction: dmsParsed[7]
        }
    }

    var dmsToLonLat = function (o) {
        var n = NaN;
        if (o) {
            var t = Number(o.degree),
                d = "undefined" != typeof o.minute ? Number(o.minute) / 60 : 0,
                l = "undefined" != typeof o.second ? Number(o.second) / 3600 : 0,
                r = o.direction || null;
            null !== r && /[SW]/i.test(r) && (t = -1 * Math.abs(t)), n = 0 > t ? t - d - l : t + d + l
        }
        return n
    }
var lonLat = [dmsToLonLat(dmsParsedObj.latitude), dmsToLonLat(dmsParsedObj.longitude)];
> Result => [49.321, 40.323]