Windows下GDAL3.1.2编译 (VS2015)

本文详细介绍了如何在Windows环境下编译GDAL 3.1.2、PROJ 6.3.2以及SQLite3。首先,编译SQLite3以创建静态库,然后编译PROJ6,最后编译GDAL。在编译过程中,涉及到预处理器定义、模块定义文件设置、CMake配置以及VS2015命令行的使用。完成编译后,还需设置环境变量以确保程序运行时找到依赖的dll文件。文章还提供了一个简单的C++代码示例,演示了如何使用GDAL读取和解析地理栅格数据。

前言

GDAL(Geospatial Data Abstraction Library )是一个使用C/C++语言编写的操作各种地理数据格式的跨平台的,开源库。

现有的大部分GIS或者遥感平台,不论是商业软件ArcGIS,ENVI还是开源软件GRASS,QGIS,都使用了GDAL作为底层构建库。

GDAL库由OGR和GDAL项目合并而来,OGR主要用于空间要素矢量数据的解析,GDAL主要用于空间栅格数据的读写。另外,空间参考及其投影转换使用开源库 PROJ.4。

GDAL提供了C/C++接口,并且通过SWIG提供了Python,Java,C#等的调用接口。当我们在Python中调用GDAL的API函数时,其实底层执行的是C/C++编译的二进制文件。

GDAL不但提供了API接口方便开发人员开发自己的功能,而且还提供了一系列实用工具可以实现方便快速的空间数据处理。

GDAL3.0以上编译依赖PROJ6投影库,而PROJ6的proj.db使用sqlite存储数据,所以又依赖SQLite3环境,所以在编译GDAL之前我们需要先编译SQLite和PROJ6。

安装(编译)工具 cmake官方下载地址为https://cmake.org/download/。目前最新版3.18.3。windows x64有cmake-3.18.3-win64-x64.zip和cmake-3.18.3-win64-x64.msi两个版本下载。

一、SQLite3编译

1、下载

下载地址:https://www.sqlite.org/download.html
下载版本:3.33.0

下载内容:

  1. Source Code下的sqlite-amalgamation-3330000.zip
  2. Precompiled Binaries for Windows下的sqlite-dll-win64-x64-3330000.zip,sqlite-tools-win32-x86-3330000.zip

2、解压

将下载的文件解压到sqlite-3.33.0文件夹内,如下所示:

sqlite-3.33.0
├─sqlite-amalgamation-3330000
│      shell.c
│      sqlite3.c
│      sqlite3.h
│      sqlite3ext.h
├─sqlite-dll-win64-x64-3330000
│      sqlite3.def
│      sqlite3.dll
└─sqlite-tools-win32-x86-3330000
        sqldiff.exe
        sqlite3.exe
        sqlite3_analyzer.exe

3、创建静态库工程

  1. 在sqlite-3.33.0目录下创建一个空的c++工程,工程名为SQLite3
  2. 将sqlite3.c、sqlite3.h、sqlite3ext.h、sqlite3.def四个文件添加到工程中
    在这里插入图片描述
  3. C/C++ --> 预处理器 --> 预处理器定义:设置预定义处理
_USRDLL
SQLITE_ENABLE_RTREE
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_UNLOCK_NOTIFY

在这里插入图片描述

  1. 设置模块定义文件,链接器 --> 输入 --> 模块定义文件:sqlite3.def
    在这里插入图片描述

  2. 修改模块定义文件:在最后追加sqlite3_unlock_notify
    在这里插入图片描述

  3. 配置类型改为静态库lib
    在这里插入图片描述

  4. 最后生成解决方案,在D:\sqlite-3.33.0\SQLite3\x64\Debug文件夹可以看到SQLite3.lib静态库。

  5. 在SQLite目录中分别创建include和lib和bin文件夹,以备后用。
    将刚才生成的.lib文件放入lib文件夹中,
    将sqlite3.h、sqlite3ext.h放入include中,
    将sqlite-tools-win32-x86-3330000中的sqlite3.exe放在bin文件夹中。

二、PROJ6编译

gdal的编译依赖于PROJ6投影库,否则会有如下提示。

PROJ_INCLUDE should be defined. PROJ >= 6 is a required dependency

1、下载

下载地址:https://proj.org/download.html
下载版本:6.3.2

将下载后文件解压到D:\proj-6.3.2文件夹内。

2、配置编译项

  1. 在源码目录中创建build文件夹,打开cmake-gui.exe
    在这里插入图片描述

  2. 点击Configure,编译64位,vs2015
    在这里插入图片描述
    点击Finish,会出现错误。
    在这里插入图片描述
    SQLITE3_INCLUDE_DIR和SQLITE3_LIBRARY属性,可以看到现在它们的Value值都为NOTFOUND的状态,设置为前边准备的include和SQLite3.lib的路径。
    在这里插入图片描述
    如果EXE_SQLITE3也提示NOFOUND的话,修改为相应的SQLite3.exe的路径。
    设置文件生成目录,我设置的是D:/proj-6.3.2/OSGeo4W。
    在这里插入图片描述
    重新点击Configure,提示Configuring done。

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值