您的位置:

经纬度度分秒详解

一、经纬度的定义

经纬度是一种用于描述地球任意位置的坐标系统。它以地球质心为原点,以赤道和本初子午线为基准线,建立了一种地理坐标系,用来表示地球表面的点的位置。

二、度分秒的定义

单位圆上角的角度一般用度数表示,1°=π/180弧度。经纬度中,为了更加精确地描述地球表面上某点的位置,将角度细化为度、分、秒三个单位。

三、经纬度表示方法

经度和纬度分别表示地球表面上某一点相对于本初子午线和赤道的位置。经度从本初子午线起算,向东为正,向西为负;纬度从赤道起算,向北为正,向南为负。

以中国北京为例,其经度为116.40度,即116度24分,即116度24分0秒,或116度24'0'';其纬度为39.91度,即39度54分,即39度54分0秒,或39度54'0''。

四、经纬度的转换

经纬度常常需要在不同坐标系之间进行转换,以下是常见的转换方法:

1. 度转弧度

function degree2radian(degree) {
    return degree * Math.PI / 180;
}

其中,Math.PI等于3.141592653589793。

2. 弧度转度

function radian2degree(radian) {
    return radian * 180 / Math.PI;
}

3. 度分秒转度

function dms2degree(dms) {
    var degree = parseInt(dms.split('°')[0]);
    var minute = parseInt(dms.split('°')[1].split("'")[0]);
    var second = parseFloat(dms.split('°')[1].split("'")[1].split("''")[0]);
    return degree + minute / 60 + second / 3600;
}

其中,dms是以度分秒为单位的经度或纬度,例如116度24'0''。

4. 度转度分秒

function degree2dms(degree) {
    var d = parseInt(degree);
    var m = parseInt((degree - d) * 60);
    var s = ((degree - d) * 60 - m) * 60;
    return d + '°' + m + "'" + s.toFixed(2) + "''";
}

5. WGS84坐标系与火星坐标系的转换

function wgs84togcj02(lng, lat) {
    var a = 6378245.0;
    var ee = 0.00669342162296594323;
    var pi = 3.1415926535897932384626;
 
    function transformlat(lng, lat) {
        var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));
        ret += (20.0 * Math.sin(6.0 * lng * pi) + 20.0 * Math.sin(2.0 * lng * pi)) * 2.0 / 3.0;
        ret += (20.0 * Math.sin(lat * pi) + 40.0 * Math.sin(lat / 3.0 * pi)) * 2.0 / 3.0;
        ret += (160.0 * Math.sin(lat / 12.0 * pi) + 320 * Math.sin(lat * pi / 30.0)) * 2.0 / 3.0;
        return ret;
    }
 
    function transformlng(lng, lat) {
        var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));
        ret += (20.0 * Math.sin(6.0 * lng * pi) + 20.0 * Math.sin(2.0 * lng * pi)) * 2.0 / 3.0;
        ret += (20.0 * Math.sin(lng * pi) + 40.0 * Math.sin(lng / 3.0 * pi)) * 2.0 / 3.0;
        ret += (150.0 * Math.sin(lng / 12.0 * pi) + 300.0 * Math.sin(lng / 30.0 * pi)) * 2.0 / 3.0;
        return ret;
    }
 
    function out_of_china(lng, lat) {
        if (lng < 72.004 || lng > 137.8347) return true;
        if (lat < 0.8293 || lat > 55.8271) return true;
        return false;
    }
 
    if (out_of_china(lng, lat)) {
        return [lng, lat];
    } else {
        var dlat = transformlat(lng - 105.0, lat - 35.0);
        var dlng = transformlng(lng - 105.0, lat - 35.0);
        var radlat = lat / 180.0 * pi;
        var magic = Math.sin(radlat);
        magic = 1 - ee * magic * magic;
        var sqrtmagic = Math.sqrt(magic);
        dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi);
        dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * pi);
        var mglat = lat + dlat;
        var mglng = lng + dlng;
        return [mglng, mglat];
    }
}
 
function gcj02towgs84(lng, lat) {
    if (out_of_china(lng, lat)) {
        return [lng, lat];
    } else {
        var dlat = transformlat(lng - 105.0, lat - 35.0);
        var dlng = transformlng(lng - 105.0, lat - 35.0);
        var radlat = lat / 180.0 * pi;
        var magic = Math.sin(radlat);
        magic = 1 - ee * magic * magic;
        var sqrtmagic = Math.sqrt(magic);
        dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi);
        dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * pi);
        var mglat = lat + dlat;
        var mglng = lng + dlng;
        return [lng * 2 - mglng, lat * 2 - mglat];
    }
}

其中,WGS84坐标系是GPS坐标系,火星坐标系是国内常用的坐标系,如高德地图、百度地图等。

五、经纬度的应用

经纬度在地理信息系统、移动定位、气象预报、导航等方面有广泛应用。

六、总结

经纬度度分秒是描述地球上任意一个点位置的常用坐标系,能够实现不同坐标系之间的快速转换。应用于多个领域,具有广泛而重要的意义。