【C++】开源:地图投影和坐标转换proj库配置使用

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍地图投影和坐标转换proj库配置使用。
无专精则不能成,无涉猎则不能通。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

😏1. 项目介绍

官网:https://proj.org/en/9.4/

项目Github地址:https://github.com/OSGeo/PROJ

proj 库是一个开源的库,主要用于地理坐标系之间的转换和地图投影。它被广泛应用于地理信息系统(GIS)和其他需要坐标转换和地图投影的应用中。

基本概念:

1.坐标系:地球上的位置可以用不同的坐标系表示,如经纬度(WGS84)和投影坐标系(如UTM)。
2.地图投影:将地球的三维表面映射到二维平面上(如地图)的方法。不同的

### 如何在Visual Studio 2022中安装使用proj4 #### 安装Proj4 为了能够在项目中利用proj4,首先需要下载并安装该。通常有两种方法来获取proj4: - **通过包管理器**:对于Windows平台上的开发者来说,最简便的方法之一是借助vcpkg这样的跨平台C++管理工具。这允许轻松集成proj4至基于Visual Studio的工作流程之中。 ```bash git clone https://github.com/Microsoft/vcpkg.git cd vcpkg .\bootstrap-vcpkg.bat .\vcpkg integrate install .\vcpkg install proj4:x64-windows ``` 上述命令会克隆vcpkg仓、构建它,并安装适用于64位系统的proj4[^1]。 - **手动下载预编译二进制文件或源码**:另一种方式是从官方网站或其他可信资源处获得已编译好的DLL/静态链接以及对应的头文件;或者是直接从GitHub等平台上拉取最新版本的源代码自行编译。不过这种方法相对复杂一些,适合有一定经验的技术人员尝试。 #### 配置Visual Studio工程 一旦成功安装了proj4之后,则需按照如下步骤调整Visual Studio项目的属性以便正确引用此第三方依赖项: 1. 打开解决方案资源管理器中的`Properties`对话框; 2. 寻找`Configuration Properties -> C/C++ -> General`部分下的`Additional Include Directories`选项,添加包含路径指向proj4头文件的位置(如果是经由vcpkg安装的话,默认情况下应位于`%VCPKG_ROOT%\installed\x64-windows\include`); 3. 接着前往`Linker -> General`里的`Additional Library Directories`字段里输入lib目录所在之处(同样地,当采用vcpkg时一般为`%VCPKG_ROOT%\installed\x64-windows\lib`) ; 4. 最后,在`Linker -> Input`分类之下找到`Additional Dependencies`,在这里加入`.lib`扩展名形式的具体名称,比如`proj.lib`. 完成以上操作后保存更改即可让IDE识别到新引入的外部组件[^2]. #### 编写测试代码验证安装情况 下面给出一段简单的示例程序用于检验是否能够正常调用proj4函数: ```cpp #include <iostream> extern "C" { #include <projects.h> // proj4 header file } int main() { PJ_CONTEXT *ctx; ctx = pj_ctx_alloc(); const char* fromstr="+proj=latlong +datum=WGS84"; const char* tostr="+proj=merc +lat_ts=0 +lon_0=0"; PJ* P=pj_init_plus(ctx,fromstr); if (!P){ std::cerr << "Failed to initialize projection."<<std::endl; return -1; } double x,y; /* Convert lat/long (degrees) */ y=57; /* Latitude */ x=-2; /* Longitude */ int errcode=pj_transform(P,P,&x,&y); if(errcode!=0){ printf("Error transforming coordinates\n"); }else{ printf("Transformed Coordinates: %f , %f \n",x,y); } } ``` 这段代码实现了地理坐标系向墨卡托投影坐标的转换过程。如果一切顺利执行完毕而未报错,则表明已经成功集成了proj4[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DevFrank

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值