`

地图坐标系,及其转化

阅读更多
地图坐标系:

天地图                      2000国家大地坐标系,高斯投影
高德、腾讯、Google中国地图、阿里云地图  GCJ-02火星坐标系(中国主流坐标系)
百度地图     BD-09坐标(百度坐标对火星坐标系进行了一次加密,形成了百度坐标系)
谷歌地图     WGS84坐标系(大地坐标系统,国际主流坐标系)

坐标系之间转化:

百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换(JS版代码)
/**
*
* 提供了百度坐标(BD09)、
* 国测局坐标(火星坐标,GCJ02)、
* 和WGS84坐标系之间的转换
*/

//定义一些常量
var x_PI = 3.14159265358979324 * 3000.0 / 180.0;
var PI = 3.1415926535897932384626;
var a = 6378245.0;
var ee = 0.00669342162296594323;

/**
* 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换
* 即 百度 转 谷歌、高德
* @param bd_lon
* @param bd_lat
* @returns {*[]}
*/
function bd09togcj02(bd_lon, bd_lat) {
    var x_pi = 3.14159265358979324 * 3000.0 / 180.0;
    var x = bd_lon - 0.0065;
    var y = bd_lat - 0.006;
    var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
    var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
    var gg_lng = z * Math.cos(theta);
    var gg_lat = z * Math.sin(theta);
    return [gg_lng, gg_lat]
}

/**
* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换
* 即谷歌、高德 转 百度
* @param lng
* @param lat
* @returns {*[]}
*/
function gcj02tobd09(lng, lat) {
    var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
    var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
    var bd_lng = z * Math.cos(theta) + 0.0065;
    var bd_lat = z * Math.sin(theta) + 0.006;
    return [bd_lng, bd_lat]
}

/**
* WGS84转GCj02
* @param lng
* @param lat
* @returns {*[]}
*/
function wgs84togcj02(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 [mglng, mglat]
    }
}

/**
* GCJ02 转换为 WGS84
* @param lng
* @param lat
* @returns {*[]}
*/
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);
        mglat = lat + dlat;
        mglng = lng + dlng;
        return [lng * 2 - mglng, lat * 2 - mglat]
    }
}

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
}

/**
* 判断是否在国内,不在国内则不做偏移
* @param lng
* @param lat
* @returns {boolean}
*/
function out_of_china(lng, lat) {
    return (lng < 72.004 || lng > 137.8347) || ((lat < 0.8293 || lat > 55.8271) || false);
}
分享到:
评论

相关推荐

    地理坐标系与投影坐标系关系整理

    在地理信息系统(GIS)领域中,理解和掌握地理坐标系与投影坐标系的概念及其相互之间的转换是至关重要的。地理坐标系通常指的是通过地球表面的经纬度来表示地理位置的系统;而投影坐标系则是将三维的地球表面转化为...

    坐标转换知识.zip,经纬高与RAE互转

    而大地测量学基础[1](7)(控制).ppt可能涵盖了大地坐标系(例如,UTM,即Universal Transverse Mercator)的使用,这是一种将全球划分为多个六度带的投影坐标系统,用于方便地进行地面测量和地图制作。从RAE转换到UTM...

    地球坐标 火星坐标图吧坐标相互转化

    图吧坐标(TBAutoCoordSys)是中国地图服务提供商图吧(MapBar)使用的特定坐标系,它主要用于国内的地图定位和导航。图吧坐标通常会对原始的经纬度数据进行一定的偏移处理,以保护地图数据的安全性。在实际使用中,...

    地理信息系统中的常⽤坐标系

    ### 地理信息系统中的常用坐标系 #### 一、地理坐标系 (Geographic Coordinate System, GCS) **1.... 地理坐标系是一种在三维球面上利用...了解和掌握这些坐标系及其转换方法,有助于更好地理解和解决GIS领域的问题。

    C++ 1.大地坐标与空间直角坐标的相互转化 (2)大地问题正反算 (3)高斯投影正反算

    而空间直角坐标系(Space Rectangular Coordinate System)则是以地球质心为原点,以赤道面为XY平面,X轴指向春分点方向,Z轴指向北极的方向建立的三维直角坐标系。二者之间的相互转化主要用于地理信息系统、导航...

    Arcengine将excel表格中的坐标数据转化为点要素类

    - **重要性**:正确设置坐标系对于确保数据准确无误地显示在地图上至关重要。 - **方法**:通过`SpatialReferenceEnvironmentClass`创建坐标系对象,并将其指定为要素类的坐标系。 ##### 5. **数据的转换与导入**...

    平面直角坐标系教案.doc

    在《平面直角坐标系教案》中,教学目标旨在让学生理解和掌握有序数对的概念及其在定位物体位置中的应用。有序数对由两个数字组成,第一个数字代表沿x轴(横向)的距离,第二个数字代表沿y轴(纵向)的距离。当这些...

    VC++坐标转换

    - **空间大地直角坐标系与大地坐标系之间的转换**:涉及球面坐标与直角坐标的相互转换。 - **大地坐标与高斯平面坐标系之间的转换**: - **高斯投影正算公式**:将大地坐标转换为高斯平面坐标。 - **高斯投影反算...

    ArcGIS中的坐标系统及其转换

    这可以通过“定义坐标系”工具和“投影数据”工具实现。同时,对于多源数据的整合,理解坐标系统间的差异和转换方法是非常关键的。 在提供的文档"EX02:ArcGIS中的坐标系统及其转换.doc"中,应该会详细介绍如何在...

    OSM 道路信息解析提取,并转化为百度坐标

    百度地图使用的是自己的坐标系,与常见的WGS84或OSGB36不同,因此需要进行坐标转换。转换算法通常涉及到数学公式,如投影变换,以确保转换后的坐标能够在百度地图上准确显示。 `baidumaplinen.html`可能是用于展示...

    坐标转换,高斯坐标和大地坐标互转,度。度格式转换为度分秒格式等等 (修正版)

    例如,大地坐标适合全球定位,而高斯坐标更适合局部地图的精确绘制。转换过程中需要考虑地球的曲率、投影方式等因素。 4. **度分秒格式转换**:在地理坐标表示中,度、分、秒是常见的度量单位。1度等于60分,1分...

    00--地图投影--常用地图投影系列小程序

    地图投影转换程序的作用在于,当需要在不同坐标系之间进行数据交换时,例如从WGS84(全球定位系统坐标系)转换到北京54或西安80等地方坐标系,这些小程序可以提供便捷的工具。用户只需输入坐标,程序会自动计算并...

    北京-2021年地铁站shp数据-wgs84坐标系

    总的来说,这份“北京-2021年地铁站shp数据-wgs84坐标系”为研究人员、城市规划者和公众提供了一种深入理解北京地铁网络及其影响的有效工具。通过GIS技术,这些数据可以被转化为有价值的信息,支持更智能、更高效的...

    大地2000坐标(CGCS2000).prj文件(包括地理和投影分带)

    地理坐标系是以地球椭球体为参考,用经度和纬度来表示地理位置,而投影坐标系则是将地球表面的地理坐标转换为平面坐标,便于在二维地图上进行计算和显示。 CGCS2000地理坐标系采用了2000年1月1日零时的地球瞬时几何...

    地图系列 各县的 JSON 地图文件

    每个JSON对象可能表示一个县,包含县的ID、名称、所在市的ID,以及可能的边界坐标数据,这些坐标数据可以用来在地图上描绘出县的边界。 3. **china.json**:此文件可能是整个中国的顶级数据,包含所有省份的信息,...

    内蒙古准格尔旗第十中学七年级数学下册 7.2.1 用坐标表示地理位置导学案(无答案)(新版)新人教版

    选做题部分则提供了更多的挑战,如建立坐标系来表示长方形ABCD的顶点,这需要学生理解坐标系的构建及其与几何图形的关系。 总的来说,这个教学案例全面覆盖了用坐标表示地理位置的基本概念和方法,通过丰富的实践...

    地图数字化入门教程

    - **空间参考坐标系**:虽然本教程简要介绍了空间参考坐标系的概念,但对于从事地图数字化工作的专业人士来说,深入了解空间参考坐标系和地图投影是非常重要的基础知识。 通过以上详细的解析,我们可以看出地图数字...

    厦门2020年宜出行人口数据带坐标系-百度坐标系2020070117.zip

    2. **坐标系**:百度坐标系是一种特定的地理坐标系统,它与国际广泛使用的WGS84坐标系有所不同,适用于中国国内的地图定位和导航。使用百度坐标系的数据需要在特定的GIS软件或工具中处理,以便准确地展示地理位置...

    GPS坐标转换

    然而,在中国以及一些其他国家,由于国家安全和测绘规范的要求,常使用本国的坐标系统,如中国的GCJ-02(国家大地坐标系2000)和BD-09(百度坐标系)。这些坐标系统与WGS84之间存在一定的偏差,因此需要进行坐标转换...

Global site tag (gtag.js) - Google Analytics