概念 :

UTM(通用横向墨卡托投影): 是一种以米为单位的坐标系统,用于地图和GPS导航。将地球划分为60个纵向的区域。每个区域宽6度,从赤道开始往南北两级方向划分。每个区域都有一个特定的字母。

转换过程:

  1. 将经纬度值转化为弧度值
 // 将经度归一化到-180到180度之间double LongTemp =(Long + 180) - static_cast<int>((Long + 180) / 360) * 360 - 180;double LatRad = Lat * DEG_TO_RAD;double LongRad = LongTemp * DEG_TO_RAD;
  1. 根据经纬度计算所在的UTM区域

计算UTM带号,即 zoneNumber,这是由所在位置的经度计算得到的,计算公式为zoneNumber = floor((longTemp + 180)/6) + 1,其中 floor()函数表示向下取整。

对于特殊区域(Norway 和 Svalbard)需要进行特殊处理。对于Norway,UTM带号为31;对于Svalbard,需要根据具体位置计算UTM带号。

// 纬度在56度到64度之间,经度在3度到12度之间的区域属于挪威,对应的UTM带号为32if (Lat >= 56.0 && Lat < 64.0 && LongTemp >= 3.0 && LongTemp < 12.0)ZoneNumber = 32;// Special zones for Svalbard// 如果经纬度在北极圈内,则根据经度范围判断属于哪个UTM区域。// 对于挪威的斯瓦尔巴群岛(Svalbard)有特殊的UTM区域设置。// 如果纬度在72到84度之间,则根据经度范围判断属于哪个UTM区域,分别为31、33、35、37区。if (Lat >= 72.0 && Lat < 84.0) {if (LongTemp >= 0.0 && LongTemp < 9.0)ZoneNumber = 31;else if (LongTemp >= 9.0 && LongTemp < 21.0)ZoneNumber = 33;else if (LongTemp >= 21.0 && LongTemp < 33.0)ZoneNumber = 35;else if (LongTemp >= 33.0 && LongTemp < 42.0)ZoneNumber = 37;}
  1. 根据维度值计算UTM纵向带
  2. 计算以赤道为基准的投影面的相对圆柱体坐标系(即UTM投影)的各种参数
    椭球体参数,包括长半轴a,扁率f,第一偏心率平方eccSquared,以及第二偏心率平方eccPrimeSquared。
  3. 根据投影参数,计算经纬度值对应的UTM坐标值
    计算UTM坐标时,需要使用以下几个参数:
  • N:卯酉圈曲率半径。
  • T:曲率平面的切线方位角正切值。 T = t a n 2 ( L a t R a d ) T=tan^2(LatRad) T=tan2(LatRad)
  • C:子午圈曲率半径。 C = e c c P r i m e S q u a r e d × c o s 2 ( L a t R a d ) C=eccPrimeSquared×cos^2(LatRad) C=eccPrimeSquared×cos2(LatRad)
  • A:中央经线到点的经线长度。 A = c o s ( L a t R a d ) × ( L o n g R a d − L o n g O r i g i n R a d ) A=cos(LatRad)×(LongRad−LongOriginRad) A=cos(LatRad)×(LongRad−LongOriginRad)
  • M:纬度的子午线弧长。
    M = a ∗ ( ( 1 − e 2 4 ​ − 3 e 4 64 ​ − 5 e 6 256 ​ ) ∗ ϕ − ( 3 e 2 8 ​ + 3 e 4 32 ​ + 45 e 6 1024 ​ ) ∗ s i n ( 2 ϕ ) + ( 15 e 4 256 ​ + 45 e 6 1024 ​ ) ∗ s i n ( 4 ϕ ) − 35 e 6 3072 ​ ∗ s i n ( 6 ϕ ) ) M=a∗((1−\frac{e^2}{4}​-\frac{3e^4}{64}​−\frac{5e^6}{256}​)∗ϕ−(\frac{3e^2}{8}​+\frac{3e^4}{32}​+\frac{45e^6}{1024}​)∗sin(2ϕ)+(\frac{15e^4}{256}​+\frac{45e^6}{1024}​)∗sin(4ϕ)−\frac{35e^6}{3072}​∗sin(6ϕ)) M=a∗((1−4e2​​−643e4​​−2565e6​​)∗ϕ−(83e2​​+323e4​​+102445e6​​)∗sin(2ϕ)+(25615e4​​+102445e6​​)∗sin(4ϕ)−307235e6​​∗sin(6ϕ))

其中,a是椭球体的半长轴,e是椭球体的离心率, ϕ \phi ϕ是转换前的纬度。
U T M E a s t i n g = k 0 × N × ( A + ( 1 − T + C ) × A 3 / 6 + ( 5 − 18 × T + T 2 + 72 × C − 58 × e c c P r i m e S q u a r e d ) × A 5 / 120 ) + 500000.0 U T M N o r t h i n g = k 0 × ( M + N × t a n ( L a t R a d ) × ( A 2 / 2 + ( 5 − T + 9 × C + 4 × C 2 ) × A 4 / 24 + ( 61 − 58 × T + T 2 + 600 × C − 330 × e c c P r i m e S q u a r e d ) × A 6 / 720 ) ) UTM_{Easting}=k_0×N×(A+(1−T+C)×A^3/6+(5−18×T+T^2+72×C−58×eccPrimeSquared)×A^5/120)+500000.0 \\ UTM_{Northing}=k_0×(M+N×tan(LatRad)×(A^2/2+(5−T+9×C+4×C^2)×A^4/24+(61−58×T+T^2+600×C−330×eccPrimeSquared)×A^6/720)) UTMEasting​=k0​×N×(A+(1−T+C)×A3/6+(5−18×T+T2+72×C−58×eccPrimeSquared)×A5/120)+500000.0UTMNorthing​=k0​×(M+N×tan(LatRad)×(A2/2+(5−T+9×C+4×C2)×A4/24+(61−58×T+T2+600×C−330×eccPrimeSquared)×A6/720))

eccPrimeSquared = (eccSquared) / (1 - eccSquared);N = a / sqrt(1 - eccSquared * sin(LatRad) * sin(LatRad));
T = tan(LatRad) * tan(LatRad);
C = eccPrimeSquared * cos(LatRad) * cos(LatRad);
A = cos(LatRad) * (LongRad - LongOriginRad);M = a *((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 -5 * eccSquared * eccSquared * eccSquared / 256) *LatRad -(3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 +45 * eccSquared * eccSquared * eccSquared / 1024) *sin(2 * LatRad) +(15 * eccSquared * eccSquared / 256 +45 * eccSquared * eccSquared * eccSquared / 1024) *sin(4 * LatRad) -(35 * eccSquared * eccSquared * eccSquared / 3072) * sin(6 * LatRad));UTMEasting = k0 * N * (A + (1 - T + C) * A * A * A / 6 + (5 - 18 * T + T * T + 72 *

经纬度转换为UTM坐标相关推荐

  1. GPS坐标转换:经纬度转UTM坐标(Matlab程序)

    GPS的输出一般为经纬度坐标,如:北纬(N)41度30分5秒, 东经(E)114度10分30秒. UTM(Universal Transverse Mercator)坐标是一个投影坐标系,将地球分为6 ...

  2. wgs utm java,Java,将经纬度转换为UTM

    Does anyone know of a way, in Java, to convert an earth surface position from lat, lon to UTM (say i ...

  3. 经纬度坐标系转换为UTM坐标系(matlab)

    如题所说,直接上程序.验证自己做一下,结果应该是对的.诚不我欺. (注意:程序名与函数名保持一致!!!) function[shuchu]=lat_lon2utm(lat_shuru,lon_shur ...

  4. utm坐标和经纬度相互转换

    项目中用到经纬度相互转换,自己写感觉太麻烦,查询后发现利用geos和proj4可以完成坐标转换,现在记录一下方便以后自己查询. //经纬度转utm坐标int convert_lonlat_utm(co ...

  5. java 弧度 转经纬度_GPS 经纬度转换为 经过旋转后的平面坐标详解

    /** * 地图工具 * * @author dxm * */ public class MapUtil { // 参考点 private double[] d34 = null; private d ...

  6. UTM坐标与GPS经纬度(WGS84)的相互转换

    一.UTM介绍 统一横轴墨卡托投影系统(Universal Transverse Mercator,UTM) 参考: https://www.youtube.com/watch?v=LcVlx4Gur ...

  7. Python使用proj将GPS经纬度数据转换为utm坐标系(真实的地理位置坐标系,以米为单位),然后可以进行轨迹显示

    1. 代码如下 from pyproj import Transformer import pyproj import json from matplotlib.pyplot import *if _ ...

  8. 经纬度坐标转换为工程坐标

    1. 绪论 在施工和工程测量时,经常需要将GPS坐标转换为工程中所使用的坐标.在Bing上检索到的类似问题,基本描述为两个坐标系的转换,但实际上并非如此. 本文将详细解释转换过程和转换方法. 1.1 ...

  9. 墨卡托投影法将经纬度转换为平面坐标

    地球经纬度转换为平面坐标,想必是数学建模里面经常会遇到的问题. 由于地球是一个近似椭圆,因此用经纬度确定的坐标,无法直接使用平面几何的计算公式计算距离等数据.使用墨卡托投影法将经纬度坐标投影为平面坐标 ...

最新文章

  1. 23. matlab并行计算原理以及parpool函数
  2. write() ,read();
  3. Mysql 查询一天中每半小时记录的数量
  4. 【转】Android Studio简单设置
  5. Android 动画(二)
  6. IntersectionObserve初试
  7. 使用JAX-RS(Jersey)的HTTP状态错误消息响应中的自定义原因短语
  8. ETL异构数据源Datax_部署前置环境_01
  9. 数值计算:设计算法的若干原则
  10. 英语学习笔记2019-9-27
  11. linux malloc core,Linux上使用的malloc版本
  12. 怎么解log方程_微观动力学解合成氨催化反应TOF
  13. Delphi在代码编辑栏按回车无法换行
  14. 设计并搭建Python容器化项目的CI/CD流水线
  15. 使用mpvue开发小程序需要注意和了解的知识点
  16. 何宾 单片机原理及应用_STC单片机原理及应用何宾答案
  17. ceph 部署后rbd块设备读写只有10M左右,慢的更龟速一样,怎样解决!,求各位博友指点……,感激不尽……...
  18. Contect Me
  19. 关于redis创建集群时出现[ERR] Node x.x.x.x:6379 is not empty. Either the node already knows other nodes (check
  20. 【海思篇】【Hi3516DV300】六、音频输入篇

热门文章

  1. wps横向计算机在哪里,Win7系统如何横向打印WPS文件
  2. 广告投放平台DSP搭建:你需要了解的产品核心模块
  3. web.xml中security-constraint安全认证标签说明
  4. 1对多业务,数据库水平切分架构一次搞定 | 架构师之路
  5. 稀疏数组的创建与读写文件操作
  6. 谷歌优化效果怎么样?外贸如何做好谷歌SEO优化排名?
  7. 高校bbs及科研论坛
  8. FileSystemWatcher触发多次Change事件的解决办法
  9. SourceTree - 学习/使用
  10. autoApprove