经纬度转换为UTM坐标

这篇具有很好参考价值的文章主要介绍了经纬度转换为UTM坐标。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概念 :

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带号为32
  if (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)×(LongRadLongOriginRad)
  • 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((14e2643e42565e6)ϕ(83e2+323e4+102445e6)sin(2ϕ)+(25615e4+102445e6)sin(4ϕ)307235e6sin(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+(1T+C)×A3/6+(518×T+T2+72×C58×eccPrimeSquared)×A5/120)+500000.0UTMNorthing=k0×(M+N×tan(LatRad)×(A2/2+(5T+9×C+4×C2)×A4/24+(6158×T+T2+600×C330×eccPrimeSquared)×A6/720))文章来源地址https://www.toymoban.com/news/detail-499480.html

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坐标的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity中实现世界坐标到GPS经纬度的转换解决方案

    在Unity3D中,将世界坐标转换为GPS经纬度是一个常见的需求,特别是在开发基于地理位置的应用程序时。本文将提供一种详细的解决方案,包括相应的源代码,以帮助您实现这一转换。 步骤1:获取参考点的GPS经纬度 首先,您需要获取一个已知GPS经纬度坐标和对应的Unity世界坐

    2024年02月03日
    浏览(45)
  • GPS学习(一):在ROS2中将GPS经纬度数据转换为机器人ENU坐标系,在RVIZ中显示坐标轨迹

    本文记录在Ubuntu22.04-Humbel中使用NMEA协议GPS模块的过程,使用国产ROS开发板鲁班猫(LubanCat )进行调试。 在淘宝找了款性价比较高的轮趣科技GPS北斗双模定位模块作为入门学习使用,支持GNSS系统(北斗、GPS、GLONASS、日本的QZSS以及卫星增强系统SBAS),定位精度在2.5m左右,属于民用

    2024年02月03日
    浏览(67)
  • opendrive-经纬度投影坐标转横轴墨卡托投影坐标

    经纬度投影 xodr文件+proj=latlong,说明需要使用经纬度投影代表x,y xodr文件+proj=tmerc,说明需要使用横轴墨卡托投影(将经纬度投影转为墨卡托投影)代表x,y,z 将经纬度转为墨卡托(UTM)

    2024年01月23日
    浏览(64)
  • Java根据坐标经纬度计算两点距离(5种方法)、校验经纬度是否在圆/多边形区域内的算法推荐

    目录 前言 一、根据坐标经纬度计算两点距离(5种方法) 1.方法一 2.方法二 3.方法三 4.方法四 5.方法五 5.1 POM引入第三方依赖 5.2 代码 6.测试结果对比 二、校验经纬度是否在制定区域内 1.判断一个坐标是否在圆形区域内 2.判断一个坐标是否在一个多边形区域内 3.结果 总结   

    2024年02月10日
    浏览(83)
  • 空间直角坐标系(XYZ)转经纬度(BLH)

    本章首先介绍空间直角坐标系与大地坐标系,然后列出XYZ转换BLH的公式,最后基于C语言完成该部分代码设计。   参考书籍: 董大男,陈俊平,王解先等,GNSS高精度定位原理,科学出版社 黄丁发,熊永良,周乐韬等,GPS卫星导航定位技术与方法,科学出版社。   空间直角坐

    2023年04月15日
    浏览(40)
  • Unity解决:GIS(GPS的经纬度坐标)定位系统坐标转unity坐标(世界坐标)

    目录 一、前言 二、功能实现 三、测试 四、备注  如果要实现该效果的demo,请联系作者 最近项目中用到了第三方的定位系统,有的是使用GPS定位、有的是使用UWB定位。第三方的定位系统把他们的定位信息通过网络发送给Unity,在Unity内实时显示人/设备的移动。因为第三方可

    2024年02月11日
    浏览(115)
  • 高德百度腾讯之间经纬度的转换

    提示:这里可以添加本文要记录的大概内容: 提示:以下是本篇文章正文内容,下面案例可供参考 百度地图: 高德地图: 腾讯地图 最后转换结果 可知,高德和腾讯使用的编码方式是一样的,所以最后转换的经纬度基本一样

    2024年02月13日
    浏览(47)
  • Java:计算地球上两个经纬度坐标之间的距离-geodesy和geotools实现

    两个点的经纬度 latitude纬度 longitude经度 地点 22.678611 113.805695 深圳同泰万怡酒店 22.716473 113.826391 深圳宝安中天美景华美达酒店 各种计算方式 计算方式 距离 Elasticsearch:7.12.1 4715.088099751495 自定义公式计算 4720.367727793572 org.gavaghan/geodesy 4715.085736444097 org.geotools/gt-referencing 4701.260

    2024年02月02日
    浏览(66)
  • 手机上获取地图某个定位的经纬度坐标的方法 - 查询经度、纬度 - 百度地图app、高德地图app、Earth地球

    拖动、定位、获得左上角的 东经、北纬等信息,就是经度、纬度了。 手机安装app 苹果: Earth-地球 安卓、鸿蒙: Earth地球   打开软件,拖动地图   左上角的坐标就是 经度、纬度     百度地图app、高德地图app都无法获取坐标、经度、纬度   手机也可以用 网页版坐标拾取系

    2024年02月09日
    浏览(167)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包