UTM坐标转GPS方法分享

  • 1. UTM简介
  • 2. UTM转GPS网站
  • 3. 代码实现UTM转GPS

最近第一次接触到了UTM坐标值,项目需求要将其转换成GPS坐标,在网上找了将近一天的资源(ps:好多帖子只有几行代码,用到的库、转换原理什么的都没有说一下),这里分享下自己的调研结果,也欢迎大家补充。

1. UTM简介

UTM的介绍网上有很多,不再赘述,这里主要讲一下UTM的坐标表示方法,方便大家理解转换过程。该部分主要参考了 这里。
UTM坐标的主要信息包含:经度分区(1-60)、东向位置、纬度分区(C-X,不包含I、O)、北向位置。其位置定义方式如下:
1)东向位置
UTM坐标系规定每个经度区均有一条中心经线,如11区的经度范围为120W-114W,则其中心经线为117W(各经度区的中心经线请参考: Utm Zones)。中心经线以东的点到中心经线距离为正,中心经线以西的点到中心经线距离为负。则某点的东向位置即为该点到中心经线的距离加500000m。例如: 中心经线以东8m的点的东向位置为:500000 + 8 = 500008m中心经线以西350m的点的东向位置为:500000 - 350 = 499650m。
2) 北向位置
北半球北向位置即为该点到赤道的距离。南半球北向位置为10000000m减去该点到赤道的距离。例如:赤道以北34m的点的北向位置为:34m。赤道以南34m的点的南向位置为:10000000 - 34 = 9999966m,所有点的北向位置也是正数。

2. UTM转GPS网站

Online Coordinates Converter网站提供了包含WGS84及UTM在内的多种坐标系在线转换功能,可以用作测试代码转换是否准确的参考标准。

3. 代码实现UTM转GPS

在网上找到了utm功能包,这个包是python写的,提供了UTM和GPS互相转换的接口函数,在路径utm/utm/conversion.py下,from_latlon()和to_latlon()函数分别实现GPS到UTM和UTM到GPS的转换,函数里有详细的转换步骤,我直接在conversion.py脚本的最后加了下面几行代码,然后运行这个脚本就行了(虽然有点莽,但是可行)。

if __name__ =='__main__':utm_Point = numpy.loadtxt('保存UTM坐标的文本路径.txt')print (len(utm_Point))output=open('保存转换后GPS坐标的文本路径.txt','w+')for i in range (len(utm_Point)) :# print("lat: %s, lon: %s" % (utm_Point[i][0], utm_Point[i][1]))utm_x = utm_Point[i][0]utm_y = utm_Point[i][1]utm_zone = 51utm_band = 'S'lat, lon = to_latlon(utm_x, utm_y, utm_zone, utm_band)output.write(str(lat))output.write('\t') output.write(str(lon))output.write('\t') output.write(str(utm_Point[i][2]))output.write('\n')output.close()

其中的utm_zone和utm_band分别对应前面提到的经度分区和纬度分区,需要根据实际情况修改,可以在Online Coordinates Converter网站查到,如下图所示,青岛市的经纬度区为51S.

ps:这里我用的是txt的方式读入UTM坐标,因为我是从las点云文件中直接读取并进行处理的,前面说到这个脚本是python写的,我本人前面工作都是用的C++,目前急用就用脚本进行操作了(运行会比较耗费时间),如果大家有C++实现UTM到GPS的,欢迎交流共享。

如果你没有包含utm坐标的txt文档,这里也分享一下我读las点云文件里的坐标到txt的函数(我项目拿到的las里面存的是UTM坐标),处理las点云前需要先下载liblas库,调用时las_input对应las文件路径,txt_output对应保存读取坐标值的文件路径。

//C++ 读取las点云文件的坐标信息
#include <fstream>
#include <liblas/liblas.hpp>int txt_write_las(std::string las_input, std::string txt_output)
{std::ifstream ifs(las_input.c_str(), std::ios::in | std::ios::binary); liblas::ReaderFactory f;liblas::Reader reader = f.CreateWithStream(ifs);liblas::Header const& header = reader.GetHeader();int nbPoints = header.GetPointRecordsCount();double x=0, y=0, z=0;std::ofstream fout(txt_output.c_str());for (size_t i=0;i<nbPoints;++i){reader.ReadNextPoint();liblas::Point const& laspoint = reader.GetPoint();x = (double)laspoint.GetX();y = (double)laspoint.GetY();z = (double)laspoint.GetZ();std::cout<<"    "<<x<<"\t"<<y<<"\t"<<z<<std::endl;fout <<x<<"\t"<<y<<"\t"<<z<<std::endl;}fout << std::endl;fout.close();return nbPoints;
}

UTM坐标转GPS方法分享相关推荐

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

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

  2. GPS坐标转UTM坐标

    文章目录 1 代码 2 参考 1 代码 直接调用就好 /* Taken from utexas-art-ros-pkg:art_vehicle/applanix *//** Conversions b ...

  3. 经纬度转换为UTM坐标

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

  4. 实现高德坐标转GPS坐标

    vue 实现高德坐标转GPS坐标 首先介绍一下常见的几种地图的坐标类型: WGS-84:这是一个国际标准,也就是GPS坐标(Google Earth.或者GPS模块采集的都是这个类型). GCJ-02 ...

  5. 百度坐标转gps坐标_论文推荐 | 明锋:GPS坐标时间序列分析研究

    <测绘学报> 构建与学术的桥梁 拉近与权威的距离 GPS坐标时间序列分析研究 明锋 地理信息工程国家重点实验室, 西安测绘研究所, 陕西 西安 710054 收稿日期:2019-01-02 ...

  6. python中turtle怎么确定坐标_关于Python turtle库使用时坐标的确定方法

    关于Python turtle库使用时坐标的确定方法 想画一个比较复杂的图像,而且还想用turtle画,最让人想退却的是无规律的笔势和繁多的坐标,但既然没有按奈住冲动的心,那我告诉你一个比较笨的方法吧 ...

  7. python读取数据文件、并把里面的数据变成x的二维坐标_python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法...

    python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法 1. test.txt文件,数据以逗号分割,第一个数据为x坐标,第二个为y坐标,数据如下:1.1,2 2.1,2 3.1 ...

  8. mysql数据库设置连接数_MySQL数据库之修改MYSQL最大连接数的3种方法分享

    本文主要向大家介绍了MySQL数据库之修改MYSQL最大连接数的3种方法分享,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 方法一:进入MYSQL安装目录 打开MYSQL配置文件 ...

  9. WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享...

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/chinahuyong/article/details/47395633 WinForm容器内控件批量 ...

  10. JS获取URL中参数值(QueryString)的4种方法分享

    http://www.jb51.net/article/48942.htm JS获取URL中参数值(QueryString)的4种方法分享 作者: 字体:[增加 减小] 类型:转载 今天碰到要在一个页 ...

最新文章

  1. webstorm2018修改运行web page端口号,并且让web在本地局域网内用IP访问
  2. 浅谈敏捷开发及Scrum工具leangoo(三)
  3. LeetCode 232. Implement Queue using Stacks--用2个栈来实现一个队列--C++解法
  4. 2017阿里云TECH INSIGHT干货分享第六届隆重回归
  5. linux vnc的小黑点和鼠标不同步_vnc连接windows,推荐三款非常好用的vnc连接windows软件...
  6. parted如何将磁盘所有空间格式化_CentOS下大于2T的硬盘格式化问题
  7. rk android8.1加密,Android 8.1RK平台增加自定义脚本,修改文件权限
  8. 左值、右值、左值引用、右值引用
  9. rss的普及需要一个容易理解的中文名字,叫“新闻源”如何?
  10. HDU - 3804 Query on a tree(主席树维护最大值+离散化)
  11. 【经典回放】多种语言系列数据结构算法:希尔排序(C/C#版)
  12. NGUI中UILabel使用url标签的一个bug
  13. pip镜像源+修改linux配置用永久生效
  14. 下docfetcher先下Java,DocFetcher使用教程——高效的文档文本检索工具
  15. cefsharp修改html,CefSharp v62修改方法(支持.net4.0)
  16. eclipse 修改为黑色主题,并且功能比默认的方便
  17. RBM算法模型应用在推荐系统 Python代码实现
  18. 图书馆管理系统需求规格说明书
  19. kinect v2 面部模型
  20. 联想小新air13pro重装系统_联想小新Air 13怎么装win10系统|联想小新Air 13用u盘重装win10系统教程-系统城...

热门文章

  1. 为什么使用MATLAB的imnoise函数添加高斯噪声时要将方差除以255^2
  2. java后台管理项目策划书_12款适合做Java后台管理系统的项目
  3. 李宏毅机器学习笔记:机器学习介绍
  4. 获取建模美赛O奖的方法和经验!文末资料放送
  5. 基于企业微信和钉钉的工资条发送工具 - 工资条帮
  6. 随笔-Python批量转换图片格式
  7. OpenStack柏林峰会主会场侧记:OpenStack立柱、拱券与灵魂
  8. 程序设计语言基础知识复习
  9. 数字图像处理与分析---指纹图像增强(Python)
  10. 遥感数字图像处理复习(朱文泉)