来自百度https://baike.baidu.com/item/GDAL/4004525?fr=aladdin
GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。
OGR是GDAL项目的一个分支,提供对矢量数据的支持。有很多著名的GIS类产品都使用了GDAL/OGR库,包括ESRI的ARCGIS 9.3,Google Earth和跨平台的GRASS GIS系统。利用GDAL/OGR库,可以使基于Linux的地理空间数据管理系统提供对矢量和栅格文件数据的支持。
编译环境:操纵系统windows 10,编译器VS 2019 版本:16.11.8
GDAL-3.4.0 下载地址:GitHub - OSGeo/gdal: GDAL is an open source X/MIT licensed translator library for raster and vector geospatial data formats.
用户自己编译GDAL-3.4.0需要先下载源代码,包括GEOS、PROJ、SQLITE的源代码,按下面顺序编译SQLITE、PROJ、GEOS,最后编译GDAL。GDAL-3.4.0编译要求投影库PROJ >= 6,而PROJ又要求SQLite3环境,所以在编译GDAL之前我们需要先编译好SQLite和PROJ。
SQLITE3.37.1 开源文件数据库,下载地址:https://www.sqlite.org/,版本:Version 3.37.1
PROJ-8.2.1 投影和坐标系转换类库,下载地址: GitHub - OSGeo/PROJ: PROJ - Cartographic Projections and Coordinate Transformations Library
GEOS-3.10.1矢量图形开源类库,下载地址:GitHub - libgeos/geos at 3.10.1
通过github获得的开源类库都没有编译,需要自行编译,自己编译难度较大,编译过程中可能还会需要其他类库,比如编译PROJ时,还需要libtiff和curl。你也可以直接下载编译好的库文件,那就是使用Miniconda包管理器软件。Minicondaonda 是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。其安装程序中包含conda软件包管理器和Python。安装了Miniconda,就可以使用conda命令安装任何其他软件工具包并创建环境等。GDAL、GEOS、PROJ、SQLITE这些库都可以下载到。
(1)安装 miniconda,下载地址:https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe
(2)启动miniconda3命令行窗口。
(3)包安装命令conda install 包名
(4)找到下载目录查看下载好的类库
(1)nmake.opt编译配置文件
我使用VS2019编译GDAL-3.4.0,编译版本windows x64,需要修改GDAL-3.4.0\nmake.opt编译配置文件,将MSVC_VER=1900修改为MSVC_VER=1929。如果你使用其他版本VS,参照下面各个版本Visual Studio MSVC 编译器版本:
除了修改编译器外,还要配置SQLITE3、PROJ8、GEOS3的include和lib头文件和库目录,nmake.opt配置文件修改说明如下:
修改编译器,默认是VS2015
!IFNDEF MSVC_VER
#assume msvc VS2015.
MSVC_VER=1929
!ENDIF
编译后生产文件目录,默认"C:\warmerda\bld",可以不修改
!IFNDEF GDAL_HOME
GDAL_HOME = "C:\warmerda\bld"
!ENDIF
编译版本,默认编译出来是Release版本,如果编译debug版本需要修改DEBUG=1
# Set DEBUG=1 to create a debug build
!IFNDEF DEBUG
DEBUG=0
!IFNDEF POSTFIX
POSTFIX=
!ENDIF
编译64位,默认设置WIN64=YES
# Uncomment the following if you are building for 64-bit windows
# (x64). You'll need to have PATH, INCLUDE and LIB set up for 64-bit
# compiles.
WIN64=YES
# Capture WIN64=1 if specified in NMAKE command line
!IFDEF WIN64
WIN64=YES
!ENDIF
配置SQLITE3的include和library目录
# SQLite Libraries
SQLITE_INC=-IC:\miniconda3\pkgs\sqlite-3.37.0-h2bbff1b_0\Library\include
SQLITE_LIB=C:\miniconda3\pkgs\sqlite-3.37.0-h2bbff1b_0\Library\lib\sqlite3.lib
配置PROJ的include和library目录
# PROJ stuff (required dependency: PROJ >= 6)
PROJ_INCLUDE = -IC:\miniconda3\envs\proj\Library\include
# Note: add shell32.lib is needed starting with PROJ 7.0 in some circumstances
# for static linking. See https://github.com/OSGeo/gdal/issues/2488
# And ole32.lib also since PROJ 7.1 (see https://github.com/OSGeo/gdal/issues/2743)
PROJ_LIBRARY = C:\miniconda3\envs\proj\Library\lib\proj.lib
配置GEOS-3.10.1的目录,GEOS_DIR存储目录,GEOS_CFLAGS、GEOS_LIB头文件和lib文件路径
使用cmd命令行编译,点击“开始菜单\所有程序\Microsoft Visual Studio 2019\下x64命令提示窗口,切换到GDAL的源代码目录后,依次敲入下面的命令行后回车,等待编译结束即可。
nmake -f makefile.vc
nmake -f makefile.vc install
nmake -f makefile.vc devinstall
nmake -f makefile.vc 编译GDAL库。
nmake -f makefile.vc install 编译GDAL库,并安装(这里安装的意思就是将生成的dll,exe等文件拷贝到C:\warmerda\bld目录)。
nmake -f makefile.vc devinstall 编译GDAL库,并安装开发者模式(安装的意思同上,开发者模式意思是将开发用的include文件夹中的头文件和lib文件一同拷贝到C:\warmerda\bld目录,此时会在C:\warmerda\bld目录中多出来两个文件夹,分别是include和lib,分别存放的是GDAL的头文件和lib文件,用于调用GDAL库使用)。