Qt+GDAL库实现制作经纬度坐标转换工具

 更新时间:2023年04月17日 08:35:14   作者:欧特克_Glodon  
这篇文章主要为大家详细介绍了如何利用Qt和GDAL库实现制作经纬度坐标转换工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下

1、功能界面

下面是用Global Mapper计算的结果,证明计算正确。

2、功能介绍

  • 支持CGCS2000/WGS84/XIAN80/BEIJING54四种常用坐标系;
  • 自动判断输入经纬度和X/Y坐标的合法性;
  • 依据标准3°带自动计算中央子午线;
  • 支持经纬度转投影坐标以及投影坐标转经纬度。

3、实现逻辑

1)利用GDAL库构建基础坐标系数据。

OGRSpatialReference m_spatialReference;

if(m_Coordinate == CoordinateDialog::CGCS2000)
    {
        qDebug() << "CGCS2000";
        m_spatialReference.importFromEPSG(4490);
    }
    else if(m_Coordinate == CoordinateDialog::WGS84)
    {
        qDebug() << "WGS84";
        m_spatialReference.importFromEPSG(4326);
    }
    else if(m_Coordinate == CoordinateDialog::XIAN80)
    {
        qDebug() << "XIAN80";
        m_spatialReference.importFromEPSG(4610);
    }
    else if(m_Coordinate == CoordinateDialog::BeiJing54)
    {
        qDebug() << "BeiJing54";
        m_spatialReference.importFromEPSG(4214);
    }

2)设定投影坐标系并进行转换

    m_spatialReference.SetTM(0.0, nMeridian, 1.0, nAreacode*1000000 + nOffsetE, nOffsetN);
	OGRSpatialReference* pLonLat = m_spatialReference.CloneGeogCS();
	
	// X、Y转经纬度
	OGRCoordinateTransformation* pXY2LonLat = OGRCreateCoordinateTransformation(&m_spatialReference, pLonLat);
	// 经纬度转X、Y
	OGRCoordinateTransformation* pXY2LonLat = OGRCreateCoordinateTransformation(&m_spatialReference, pLonLat);
	
    pXY2LonLat->Transform(1, &dLon, &dLat)

到此这篇关于Qt+GDAL库实现制作经纬度坐标转换工具的文章就介绍到这了,更多相关Qt GDAL经纬度坐标转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言中的断言函数assert详解

    C语言中的断言函数assert详解

    assert 是一个非常有用的工具,可以帮助开发人员在早期发现和纠正程序中的逻辑错误,在调试阶段通过断言可以验证程序中的假设条件是否成立,提高代码的可靠性和可维护性,这篇文章主要介绍了C语言中的断言函数assert,需要的朋友可以参考下
    2024-07-07
  • C语言程序的编译与预处理基础定义讲解

    C语言程序的编译与预处理基础定义讲解

    在ANSI C的任意一种实现中,存在2中不同的环境。第一种是翻译环境,负责将源代码转换成可执行的机器指令;第二种是执行环境,用于实际执行代码。一个程序从源代码到可执行程序一共会经历四个过程,分别是预处理、编译、汇编、链接,本篇让我们来了解编译与预处理
    2022-04-04
  • C/C++细数宏与函数有那些区别

    C/C++细数宏与函数有那些区别

    在C程序中,可以用宏代码提高执行效率。宏代码本身不是函数,但使用起来象函数。预处理器用复制宏代码的方式代替函数调用,省去了参数压栈、生成汇编语言的CALL调用、返回参数、执行return等过程,从而提高了速度
    2022-10-10
  • C/C++ Qt StatusBar底部状态栏应用教程

    C/C++ Qt StatusBar底部状态栏应用教程

    Qt窗体中默认会附加一个QstatusBar组件,状态栏组件位于主窗体的最下方,其作用是提供一个工具提示功能。本文主要介绍了StatusBar底部状态栏的应用教程,需要的同学可以学习一下
    2021-12-12
  • C++超详细分析红黑树

    C++超详细分析红黑树

    这一篇我要跟大家介绍二叉搜索树中的另一颗树——红黑树,它主要是通过控制颜色来控制自身的平衡,但它的平衡没有AVL树的平衡那么严格
    2022-03-03
  • 详解C++中的数据抽象

    详解C++中的数据抽象

    这篇文章主要介绍了详解C++中的数据抽象,数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节,需要的朋友可以参考下
    2023-05-05
  • C++STL教程之vector模板的使用

    C++STL教程之vector模板的使用

    模板类vector是一个动态数组,类似于string类,可存放任意类型,能够末尾、中间增加数据,基本上是是new创建动态数组的替代品,vector可以自动完成new和delete
    2022-08-08
  • vscode调试gstreamer源码的详细流程

    vscode调试gstreamer源码的详细流程

    在本文中主要介绍了如何使用vscode调试C++和python程序,并进一步分析了如何调试gstreamer源码,讲述了如何调试gstreamer源码的具体流程,感兴趣的朋友跟随小编一起看看吧
    2023-01-01
  • C++获取任务栏打开程序窗口示例

    C++获取任务栏打开程序窗口示例

    这篇文章主要介绍了C++获取任务栏打开程序窗口,大家可以参考使用
    2013-11-11
  • C++实现红黑树应用实例代码

    C++实现红黑树应用实例代码

    红黑树它一种特殊的二叉查找树,这意味着它满足二叉查找树的特征,但是也有许多自己的特性,这篇文章主要给大家介绍了关于C++实现红黑树的相关资料,需要的朋友可以参考下
    2021-11-11

最新评论