qt配置Proj.4库

一、Proj.4库是开源GIS最著名的地图投影库,主要功能是经纬度坐标与地理坐标的转换,坐标系的转换。

如何编译Proj.4库请参考https://blog.youkuaiyun.com/HB_Programmer/article/details/81606078

下载编译好的Proj.4库请参考https://download.youkuaiyun.com/download/hb_programmer/10598778

此处直接使用编译好的Proj.4库。本文主要介绍如何在qt中使用这个开源的库。

二、Proj.4库的使用和GDAL库的使用一样,首先下载Qt_5_3_MSVC2012_OpenGL_32bit(注意qt-opensource-windows-x86-mingw530版本的不行,必须是MSVC)(https://pan.baidu.com/s/1usDfEC2u_Y4uXGqRejH0tQ 密码: kw9f),安装Qt(默认就行),找到编译好的Proj.4库目录,include包含了我们需要的头文件,lib下面包含两个库,只需要第一个。

 

三、在项目上选择“添加库”,选择“外部库”,具体参考下面的配置。

四、打开test3.pro文件,可以看到多了四行代码,将第二行代码最后面的d删掉,然后在项目上右击选择“执行qmake”

五、复制编译好的Proj.4库bin文件下面的proj.dll动态链接库到qt运行项目下面即可。可以使用下面两个头文件:

#include "ogrsf_frmts.h"
#include "ogr_spatialref.h"

 

 

Qt C++中访问名为`proj.db`的PROJ数据文件并实现地理空间坐标转换,通常需要结合PROJ的功能。PROJ是一个广泛使用的地理空间坐标转换Qt本身不直接提供对PROJ数据文件的支持,但可以通过集成PROJ的C++绑定或使用C语言接口来实现。 ### 1. 设置PROJ环境 在使用Qt C++访问PROJ数据之前,需要确保系统中已正确安装PROJ。可以通过包管理器安装,例如在Ubuntu系统中可以使用以下命令: ```bash sudo apt-get install libproj-dev ``` ### 2.Qt项目中集成PROJ 在`.pro`文件中添加对PROJ的链接: ```qmake QT += core LIBS += -lproj ``` ### 3. 使用PROJ访问proj.db并进行坐标转换 PROJ通过`proj_context`和`proj_create`等函数支持创建坐标转换对象。以下是一个使用Qt C++访问`proj.db`并执行坐标转换的示例代码: ```cpp #include <QCoreApplication> #include <proj.h> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 创建PROJ上下文 PJ_CONTEXT *ctx = proj_context_create(); // 创建坐标转换对象,从EPSG:4326 (WGS84) 到 EPSG:3857 (Web Mercator) PJ *transform = proj_create_crs_to_crs(ctx, "EPSG:4326", "EPSG:3857", nullptr); if (!transform) { qDebug() << "Failed to create transformation object."; proj_context_destroy(ctx); return -1; } // 定义输入和输出坐标 PJ_COORD inputCoord = proj_coord(116.4074, 39.9042, 0, 0); // 北京经纬度 PJ_COORD outputCoord = proj_trans(transform, PJ_FWD, inputCoord); // 输出转换后的坐标 qDebug() << "Transformed coordinates: X =" << outputCoord.xy.x << ", Y =" << outputCoord.xy.y; // 清理资源 proj_destroy(transform); proj_context_destroy(ctx); return a.exec(); } ``` 上述代码通过PROJ实现了从WGS84地理坐标系(EPSG:4326)到Web Mercator投影坐标系(EPSG:3857)的转换。其中,`proj_create_crs_to_crs`函数会自动使用系统中的`proj.db`文件进行坐标参考系统的定义和转换。 ### 4. 配置proj.db文件路径(可选) 如果系统中存在多个版本的`proj.db`文件,可以通过设置环境变量`PROJ_DATABASE_PATH`来指定PROJ使用的数据文件路径: ```cpp qputenv("PROJ_DATABASE_PATH", "/path/to/proj.db"); ``` ### 5. 编译与运行 确保在编译时链接PROJ,并在运行环境中正确配置`proj.db`文件路径。编译命令可能如下所示: ```bash qmake -project qmake make ``` ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值