Web墨卡托坐标与WGS84坐标互转

原文地址:
http://bbs.esrichina-bj.cn/ESRI/thread-78245-1-1.html

在WebGIS的开发中经常用到的地图投影为Web墨卡托和WGS84,故歌地图,bingmaps,百度地图,mapabc,mapbar,以及 ArcGIS online上的大部分地图为Web墨卡托地图,ArcGIS online上最开始发布的地图投影为WGS84。
在开发过程中很多时候会遇到不同坐标系之间互转的问题,特别是底图使用Web墨卡托,定位(GPS,wifi等)信号坐标为WGS84坐标的时候,那么通用解决方案就是写一个坐标参考系的转换库,类似于proj4,但一般情况下很少用到那么多的参考系之间的互转,并且在客户端实现或者调用proj4都是一件很困难或者麻烦的事情,大多数情况下我们实现Web墨卡托坐标与WGS84坐标互转就可以了。
下面是使用objective-c实现的Web墨卡托坐标与WGS84坐标互转程序,当然也可以使用其他语言来实现,使用起来比较简单和方便。
//经纬度转墨卡托
-(CGPoint )lonLat2Mercator:(CGPoint ) lonLat
{
    CGPoint  mercator;
    double x = lonLat.x *20037508.34/180;
    double y = log(tan((90+lonLat.y)*M_PI/360))/(M_PI/180);
    y = y *20037508.34/180;
    mercator.x = x;
    mercator.y = y;
    return mercator ;
}
//墨卡托转经纬度
-(CGPoint )Mercator2lonLat:(CGPoint ) mercator
{
    CGPoint lonLat;
    double x = mercator.x/20037508.34*180;
    double y = mercator.y/20037508.34*180;
    y= 180/M_PI*(2*atan(exp(y*M_PI/180))-M_PI/2);
    lonLat.x = x;
    lonLat.y = y;
    return lonLat;
}

时间: 2024-10-27 06:35:23

Web墨卡托坐标与WGS84坐标互转的相关文章

火星02坐标转换为WGS84坐标

import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Gpstest { final static int TABLESIZE=660*450; //#define ID(i, j) ((i) + 660 * (j)) static do

火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版

火星坐标 火星坐标是国家测绘局为了国家安全在原始坐标的基础上进行偏移得到的坐标,基本国内的电子地图.导航设备都是采用的这一坐标系或在这一坐标的基础上进行二次加密得到的.火星坐标的真实名称应该是GCJ-02坐标.最近在知乎上看到关于火星坐标的话题都是充满争议的(点我跳转到知乎),感兴趣的同学可以去详细了解一下. 基本上所有的国内的电子地图采用的都是火星坐标系甚至Google地图中国部分都特意为中国政府做了偏移.百度坐标 火星坐标是在国际标准坐标WGS-84上进行的一次加密,由于国内的电子地图都要至

WGS84、Web墨卡托、火星坐标、百度坐标互转

转自:1.http://blog.csdn.net/wildboy2001/article/details/12031351 2.http://kongxz.com/2013/10/wgs-cgj/ 3.http://www.oschina.net/code/snippet_260395_39205 GCJ-02坐标系统(火星坐标)简介:http://blog.csdn.net/giswens/article/details/8775121(存档:http://mapbd.com/cms/201

[转载]WGS84坐标与Web墨卡托坐标互转

1 //经纬度转Wev墨卡托 2 dvec3 CMathEngine::lonLat2WebMercator(dvec3 lonLat) 3 { 4 dvec3 mercator; 5 double x = lonLat.x *20037508.34/180; 6 double y = log(tan((90+lonLat.y)*PI/360))/(PI/180); 7 y = y *20037508.34/180; 8 mercator.x = x; 9 mercator.y = y; 10

WGS84经纬度坐标与web墨卡托之间的转换

//经纬度转Web墨卡托 dvec3 CMathEngine::lonLat2WebMercator(dvec3 lonLat) { dvec3 mercator; double x = lonLat.x *20037508.34/180; double y = log(tan((90+lonLat.y)*PI/360))/(PI/180); y = y *20037508.34/180; mercator.x = x; mercator.y = y; return mercator; } //

百度坐标(BD-09)、国测局坐标(火星坐标,GCJ-02)和WGS-84坐标互转

// 坐标转换 var coordTransform = (function () { // 一些常量 var PI = 3.1415926535897932384626; var X_PI = 3.14159265358979324 * 3000.0 / 180.0; var a = 6378245.0; var ee = 0.00669342162296594323; // 检测是否在国内 var isOutofChina = function (lng, lat) { return (ln

[转]百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换

注:项目中面对不同的坐标体系,在地图上显示会有不小的偏差,下面是JavaScript的转换方法. //定义一些常量 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)的转换 * 即 百度 转 谷歌.高德 *

火星坐标、百度坐标、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)的转换 * 即 百度 转

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

/** * Created by Wandergis on 2015/7/8. * 提供了百度坐标(BD09).国测局坐标(火星坐标,GCJ02).和WGS84坐标系之间的转换 */ //定义一些常量 var x_PI = 3.14159265358979324 * 3000.0 / 180.0; var PI = 3.1415926535897932384626; var a = 6378245.0; var ee = 0.00669342162296594323; /** * 百度坐标系 (