windows下proj库的编译和使用

一、下载proj包

下载地址:proj

二、通过命令行端用MinGW编译

1、首先在工程目录(proj工程目录)下新建一个build文件夹。
2、打开VS的命令行工具:计算机左下角找到vs2019点开往下拉即可找到。
3、切换到工程目录的build目录下:
此处,比如我的工程目录在D:\MCworkspace\PROJ-master\build,则可按如下命令进行切换:

//D盘切换
D:
//MCworkspace目录切换
cd MCworkspace
//以此类推

如图:
在这里插入图片描述

4、输入命令行:

// 指定编译器MinGW
cmake -G "MinGW Makefiles" ..

在这里插入图片描述
编译结束后,如图显示便为成功cmake。
注意:此步骤会下载https://github.com/google/googletest/archive/release-1.11.0.zip,可能会解压失败,是访问GitHub的问题,多试几次或者使用VPN就可以解决了。
5、输入命令行:

// 相当于linux下的make
mingw32-make.exe

在这里插入图片描述
在这里插入图片描述
编译时间较长,耐心等待。如图便make完毕。
6、编译成功后,除了库文件的生成,还需要注意proj以前的版本还会生成头文件——proj_api.h,但现在版本更新了,在源码中就已经包含了对应的头文件——proj.h。所以只需要编译生成的库文件,分别为动态链接库——libproj_9_1.dll,静态链接库——libproj.dll.a。分为位于build目录下如图位置:
在这里插入图片描述
注意:如果通过IDE直接进行编译会生成库文件,但是有可能会缺少proj.db文件,导致后续会出现“pj_obj_create: Cannot find proj.db”问题。

三、环境配置

1、右键此电脑点击属性
在这里插入图片描述
2、点集环境变量→新建
在这里插入图片描述
在这里插入图片描述
3、找到2中build文件里的proj.db文件位置,复制其路径到此处:
在这里插入图片描述
在这里插入图片描述
4、重启电脑使配置生效。
5、将3中的动态或静态库文件,以及头文件复制到项目中配置好即可运行代码。
Proj相关文档(包含proj开发文档):proj官方文档

四、示例代码

#include <stdio.h>
#include <proj.h>
 
int main (void) {
    PJ_CONTEXT *C;//用于处理多线程程序
    PJ *P;//初始化投影目标
    PJ *norm;//初始化投影目标
    PJ_COORD a, b;//初始化投影坐标
 
    /* or you may set C=PJ_DEFAULT_CTX if you are sure you will     */
    /* use PJ objects from only one thread                          */
    C = proj_context_create();//创建多线程,由于本示例为单线程,此处为展示作用

    P = proj_create_crs_to_crs (C,
                                "EPSG:4326",//源投影
                                "+proj=utm +zone=32 +datum=WGS84", //目标投影
                                NULL);//创建在线程C内两个投影关系之间的相互转换

    if (0 == P) {
        cout << "Failed to create transformation object." << stderr << endl;
        return 1;
    }//如果P中两个投影的字符串不符合proj定义,提示转换失败
    /* This will ensure that the order of coordinates for the input CRS */
    /* will be longitude, latitude, whereas EPSG:4326 mandates latitude, */
    /* longitude */
    norm = proj_normalize_for_visualization(C, P);//在线程C内使投影目标P和norm拥有相同的坐标格式,此处为经纬度
    if (0 == norm) {
        cout << " Failed to normalize transformation object." << stderr << endl;
        return 1;
    }//norm为0,说明格式同步失败
    proj_destroy(P);//释放投影
    P = norm;//投影赋值

    /* a coordinate union representing Copenhagen: 55d N, 12d E    */
    /* Given that we have used proj_normalize_for_visualization(), the order of
    /* coordinates is longitude, latitude, and values are expressed in degrees. */
    a = proj_coord(12, 55, 0, 0);//设定待转换的投影坐标,此处分别为经度,纬度,高程,时间
    /* transform to UTM zone 32, then back to geographical */
    b = proj_trans(P, PJ_FWD, a);//投影转换,fwd代表源投影转换成目标投影,INV代表目标投影转换为源投影
    cout << "East: " << b.enu.e << "; North:" << b.enu.n <<endl;;//经纬度转化为xy坐标

    b = proj_trans(P, PJ_INV, b);//xy坐标转化为经纬度坐标
    cout << "Longitude: " << b.lp.lam << "; Latitude: " << b.lp.phi <<endl;;//lam为经度,phi为纬度

    /* Clean up */
    proj_destroy(P);
    proj_context_destroy(C); /* may be omitted in the single threaded case */
    return 0;
}

运行结果:
在这里插入图片描述

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
Mapnik是一个开源的地图渲染引擎,可以在不同的平台上使用。下面是Mapnik在Windows和Linux上的安装教程: Windows: 1. 下载和安装Visual Studio Mapnik需要Visual Studio来编译,你可以从Microsoft官网下载Visual Studio Community版或者购买商业版。 2. 下载和安装Python Mapnik需要Python来运行,你可以从Python官网下载并安装Python 2.7或者Python 3.x版本。 3. 安装Mapnik依赖 Mapnik需要一些依赖编译和运行,包括Boost、ICU、libxml2、libjpeg、libpng、libtiff、proj4和freetype。 这些可以从官方网站下载,或者你可以使用编译的二进制文件进行安装。在安装过程中,你需要将它们添加到系统路径中。 4. 下载和编译Mapnik 你可以从Mapnik官网下载最新的源代码,然后使用Visual Studio打开项目文件并编译Mapnik。 在编译过程中,你需要设置一些变量来指定依赖的路径和版本,以及编译选项。 5. 测试Mapnik 编译完成后,你可以使用Python脚本测试Mapnik是否正常工作。 Linux: 1. 安装依赖 Mapnik需要一些依赖编译和运行,包括Boost、ICU、libxml2、libjpeg、libpng、libtiff、proj4和freetype。 在Ubuntu上,你可以使用命令sudo apt-get install来安装这些: ``` sudo apt-get install libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-system-dev libboost-thread-dev libicu-dev libxml2-dev libjpeg-dev libpng-dev libtiff-dev libproj-dev libfreetype6-dev ``` 2. 下载和编译Mapnik 你可以从Mapnik官网下载最新的源代码,然后使用命令行进入源代码目录,并执行以下命令编译Mapnik: ``` ./configure && make && sudo make install ``` 在编译过程中,你需要设置一些变量来指定依赖的路径和版本,以及编译选项。 3. 测试Mapnik 编译完成后,你可以使用Python脚本测试Mapnik是否正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我宿孤栈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值