您的位置:首页 > 其它

windows下GDAL安装开发指南

2021-05-25 21:49 218 查看

GDAL(Geospatial Data Abstraction Library)是一个开源库,用来处理GIS里栅格和矢量数据,虽然本人并非GIS专业,但所处行业需要处理时空数据,所以接触到了。
而这次的任务,却是要验证GDAL原生C++运行性能,平时都是用Java、Python引用这个C++开发的库,现在遇到性能瓶颈,需要测试下GDAL本身的性能。
对于一个只在大学写过C语言版图书管理系统的C系列小白来说,这是一次挑战,不能辜负大家的希望。

分析问题所在:
我对Java、Python、js等语言很熟悉,C++语法也了解,只是C++编译起来比较麻烦,不像Java、Python import一个包就完事了。所以,只需要搞定这个编译环境,我也能愉快的玩耍C++大型项目。

IDEA已经用的很熟了,Clion虽然很好用,不过对CMake语法还不熟,还是最成熟傻瓜的VS作为开发C++首选吧。
所以我们使用VS开发。使用人家编译好的GDAL库。

下载安装VS

这里选择基础C++开发功能即可,大概9个多G,然后重启电脑。

下载GDAL依赖库

访问:https://www.gisinternals.com/release.php 下载,下载最新的64位即可。

要注意和VS的版本号对上,这里安装的2019版的。

我下载的地址是:

https://www.gisinternals.com/query.html?content=filelist&file=release-1928-x64-dev.zip

VS里引用GDAL库

要在VS里能够使用GDAL,需要引入。

首先,我们建一个空项目,然后开始配置。

选择项目 --》属性–》VC++目录

  • 包含目录就是头文件目录,includes

  • 库目录,就是lib下的 *.lib文件目录

然后在 链接器 --》输入 部分,配置 附加依赖项

gdal_i.lib


这个依赖是在链接阶段需要用到的库。

现在我们可以写主程序了

2个POLYGON做交集判断

#include <iostream>
using namespace std;

#include "gdal_priv.h"
#include "ogr_api.h"

int main1() {
std::cout << "Hello, World!" << std::endl;
OGRErr err_;
OGRGeometryH g1_;
OGRGeometryH g2_;

GDALAllRegister();

char* wkt1 = "POLYGON((0 0, 10 10, 10 0, 0 0))";
err_ = OGR_G_CreateFromWkt(&wkt1, NULL, &g1_);
cout << g1_ << endl;

char* wkt2 = "POLYGON((0 0, 0 10, 10 0, 0 0))";
err_ = OGR_G_CreateFromWkt(&wkt2, NULL, &g2_);

bool ok = OGR_G_Intersects(g1_, g2_);
cout << ok << endl;

OGR_G_DestroyGeometry(g1_);
OGR_G_DestroyGeometry(g2_);
return 0;
}

记得选成64位

现在编译链接是ok的,且可以生成执行文件

但运行时却找不到gdal303.dll

这是因为确实在该目录下找不到gdal的动态链接库,所以我们拷贝进来就行了。

然后,gdal.dll本身还依赖一堆库,我们直接把 上面下载的库里的 bin目录里的文件整个拷贝到和 生成的exe文件在同一目录

现在就可以运行了。

发布

要发布release时,debug模式配的那些参数都没了,可以再配一遍。

GDAL API

开发更多程序,请参考GDAL官方API,比如矢量数据的读取和解析

https://gdal.org/tutorials/vector_api_tut.html

总结

这个就当做小白的第一次C++实战吧,之后遇到源码级项目,也可以直接上了,哪里需要我,哪里就有我。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: