转:https://www.cnblogs.com/DHUtoBUAA/p/6706642.html
  墨卡托投影是一种“等角正切圆柱投影”,荷兰地图学家墨卡托(Mercator)在1569年拟定:假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是一幅标准纬线为零度(即赤道)的“墨卡托投影”绘制出的世界地图。
  墨卡托投影在今天对于航海事业起着极为重要的作用,目前世界各国绘制海洋地图时仍广泛使用墨卡托投影,国际水路局(IHB)规定:“除特殊情况外,各国都要用墨卡托投影绘制海图”。国际水路局发行的《大洋水深总图》是把全世界分成24幅编辑的,在南北纬72度之间就是使用墨卡托投影绘成的。

1、墨卡托投影性质

  由于墨卡托投影的经纬线离开赤道逐渐以相同倍数伸长,所以又称为渐长投影,由于它是具有等角性质的圆筒投影,所以也叫做等角圆筒投影。注意:这种投影不适合高纬地区,通常纬度60度以上区域,不用此投影。

  墨卡托投影有一个特别的特性:所有罗盘等角线,或称斜航线(就是与所经过的所有经线形成相同角度的航线,也称恒向航线)在墨卡托投影下都是直线。这使得在航海领域这个投影非常重要。
  注意:经纬线的伸长与纬线的正割成比例变化,随纬度增高极具拉伸,到极点成为无穷大;面积的扩大更为明显,在60度的地方面积要扩大四倍。如下图所示,地理上等半径圆在高纬度面积明显扩大。

  墨卡托投影是按等角条件修改透视圆筒投影而得到的投影,等角(也称为保形) 是指当地图上任何一点的各方向具有相同的比例,称为局部保形,透视圆筒投影如图1所示。从墨卡托投影图上可以看出,经线间隔的经度如果相等,则经线是等距平行的直线, 纬线也是平行的直线,而且经纬线是相互垂直的。墨卡托投影对透视圆筒投影改造点:要使圆筒投影称为等角的性质,必须使由赤道向两极经线逐渐伸长的倍数与经线上各点相应的纬度扩大的倍数相同。

2、墨卡托投影方程式

  墨卡托投影以整个世界范围,赤道作为标准纬线,本初子午线作为中央经线,两者交点为坐标原点,向东向北为正,向西向南为负。南北极在地图的正下、上方,而东西方向处于地图的正右、左。由于墨卡托投影在两极附近是趋于无限值,因此它并没完整展现了整个世界,地图上最高纬度是85.05度(通过纬度取值范围ys反解计算可得到纬度值为85.05112877980659)。为了简化计算,我们采用球形映射,而不是椭球体形状。
  公式推导具体见文献: 墨卡托投影与大圆投影的构成及其在省略定航线计算航程与航向方面的应用程光举。
利用等角条件m=n来讨论具体公式,具体分为三步:
1、根据m=n得到地球表面投影到平面上的微积线段的关系式。
2、把地球视为球体:
设地球表面A点经纬坐标为(λ,Φ),对应的投影坐标为(x,y),基准纬线设置为赤道,则R为地球半径;墨卡托投影方程式为:

3、把地球视为旋转椭球体
墨卡托投影正反解公式:


公式推导具体见文献: 墨卡托投影与大圆投影的构成及其在省略定航线计算航程与航向方面的应用程光举。
程序实现
https://github.com/wylloong/-GeographyCoordinateTransform/blob/master/Mercator 源代码
或 http://download.csdn.net/detail/wylloong/9813502
参考文献
http://download.csdn.net/detail/wylloong/9813502 (两篇原理文献及原代码)

墨卡托投影坐标系(Mercator Projection)原理及实现C代码相关推荐

  1. 十三种基于直方图的图像全局二值化算法原理、实现、代码及效果(转)

    源:十三种基于直方图的图像全局二值化算法原理.实现.代码及效果.

  2. 图像质量损失函数SSIM Loss的原理详解和代码具体实现

    本文转自微信公众号SIGAI 文章PDF见: http://www.tensorinfinity.com/paper_164.html http://www.360doc.com/content/19 ...

  3. Kd-Tree算法原理和开源实现代码

    Kd-Tree算法原理和开源实现代码 本文介绍一种用于高维空间中的快速最近邻和近似最近邻查找技术--Kd-Tree(Kd树).Kd-Tree,即K-dimensional tree,是一种高维索引树形 ...

  4. TOPSIS(逼近理想解)算法原理详解与代码实现

    写在前面: 个人理解:针对存在多项指标,多个方案的方案评价分析方法,也就是根据已存在的一份数据,判断数据中各个方案的优劣.中心思想是首先确定各项指标的最优理想值(正理想值)和最劣理想值(负理想解),所 ...

  5. Adaboost算法原理分析和实例+代码(简明易懂)

    Adaboost算法原理分析和实例+代码(简明易懂) [尊重原创,转载请注明出处] http://blog.csdn.net/guyuealian/article/details/70995333   ...

  6. java 字符串匹配_多模字符串匹配算法原理及Java实现代码

    多模字符串匹配算法在这里指的是在一个字符串中寻找多个模式字符字串的问题.一般来说,给出一个长字符串和很多短模式字符串,如何最快最省的求出哪些模式字符串出现在长字符串中是我们所要思考的.该算法广泛应用于 ...

  7. NER依存关系模型:原理,建模及代码实现

    NER依存关系模型:原理,建模及代码实现 seq2seq理论基础 NER依存关系建模 代码实现 命名实体识别(Named Entity Recognization, NER)是AI任务中重要的一类,而 ...

  8. 辗转相除法求最大公约数原理分析(附代码实现)

    辗转相除法求最大公约数原理分析(附代码实现) 前言 解释 原理分析 代码 结语 前言 辗转相除法用起来很简单,但是其原理却自己想不明白.于是乎看了几篇有关辗转相除法原理的分析,在这里自己写下自己的理解 ...

  9. BP神经网络原理分析及c++代码实现(下)

    本部分主要是BP神经网络的C++代码部分,在这里简单的介绍下代码的头文件,具体代码的实现以及测试数据,请在csdn资源里下载:http://download.csdn.net/detail/hjkhj ...

最新文章

  1. Cisco 2950 忘记密码如何重设
  2. python memoryerror_使用Scikit-learn时的Python MemoryError
  3. 《Linux设备驱动程序》学习2—高级字符设备驱动ioctl
  4. Unity 2017 Game Optimization 读书笔记 Scripting Strategies Part 5
  5. 【Latex】下标放在符号正下方
  6. 软件产品质量要求与评价_软件质量模型
  7. 数据库优化常用的途径(方法)
  8. JavaScript通过style只能获取内联 状态的样式
  9. 20145325张梓靖 《信息安全系统设计基础》第10周学习总结
  10. 写博文有助于提高编程能力,因为写文章比写代码难多了
  11. Mocha BSM产品亮点——SNMP Trap的支持
  12. face++人脸识别源码
  13. Windows 下Maven安装配置(本地仓库配置)
  14. DoIP(一)——基础概念
  15. 第二章、音频压缩算法
  16. Mycat生产实践---分表分库案例
  17. 【Leccture 4.1】Classes and Objects - the Basics
  18. 芯片Timing sign-off Corner理解
  19. 找不到服务器或dsn错误,win10系统找不到服务器或dns错误的解决步骤
  20. 虚拟化做快照需要停服务器么,如何创建VMware虚拟化快照和快照删除的方法

热门文章

  1. 有趣的数据结构算法9——利用栈完成2进制到8进制的转换
  2. XAudio2 (一)
  3. qq飞车手游早上会服务器维护吗,QQ飞车手游3月23日新版本更新问题一览[图]
  4. linux C语言 任务优先级,C语言运算符优先级和口诀
  5. eclipse安装Pydev插件,安装成功后不显示的问题
  6. MTK (副卡的)菜单组织
  7. 茅台集团黔茅酒产品介绍
  8. iview 数据表格 列表内点击改变按钮状态
  9. 163邮箱的格式什么样的?常见的电子邮箱品牌有哪些?
  10. arduino水温度传感器数字显示_乐创物联物联网架构之硬件层中间件Arduino模拟量...