admin 管理员组

文章数量: 887836

Windows 安装 GDAL C++库

  • 1. 方法1:下载配置网友编译的GDAL版本
    • 1.1 下载
    • 1.2 配置
    • 1.3 测试
    • 1.4 缺点
  • 2. 方法2:自己编译
  • 3. 参考

1. 方法1:下载配置网友编译的GDAL版本

1.1 下载

CSDN: GDAL,geos联合编译的库,版本为1.8.0,只支持Debug X64。实测VS2013可以用。

1.2 配置

下载后,解压后如下所示:
步骤1:将路径C:\gdal18\bin添加到系统Path变量中,否则编译会提示找不到dll。

步骤2:

步骤3:

1.3 测试

#include "gdal_priv.h"
#include "cpl_conv.h" // for CPLMalloc()

int main()
{
	GDALAllRegister(); // 注册所有GDAL支持的数据格式

	// 读取输入文件
	GDALDataset *poSrcDS = (GDALDataset *)GDALOpen("input.tif", GA_ReadOnly);
	if (poSrcDS == NULL)
	{
		printf("Failed to open input file!\n");
		exit(1);
	}

	// 获取输入文件的基本信息
	int nCols = poSrcDS->GetRasterXSize();
	int nRows = poSrcDS->GetRasterYSize();
	int nBands = poSrcDS->GetRasterCount();

	// 创建输出文件
	GDALDriver *poDriver = GetGDALDriverManager()->GetDriverByName("GTiff");
	GDALDataset *poDstDS = poDriver->Create("output.tif", nCols, nRows, nBands, GDT_Float32, NULL);
	if (poDstDS == NULL)
	{
		printf("Failed to create output file!\n");
		exit(1);
	}

	// 读取和写入数据
	float *pafScanline = (float *)CPLMalloc(sizeof(float)* nCols); // 用于存储一行数据
	for (int iBand = 1; iBand <= nBands; iBand++)
	{
		GDALRasterBand *poSrcBand = poSrcDS->GetRasterBand(iBand);
		GDALRasterBand *poDstBand = poDstDS->GetRasterBand(iBand);
		for (int iRow = 0; iRow < nRows; iRow++)
		{
			poSrcBand->RasterIO(GF_Read, 0, iRow, nCols, 1, pafScanline, nCols, 1, GDT_Float32, 0, 0);
			poDstBand->RasterIO(GF_Write, 0, iRow, nCols, 1, pafScanline, nCols, 1, GDT_Float32, 0, 0);
		}
	}
	CPLFree(pafScanline);

	// 关闭文件
	GDALClose(poSrcDS);
	GDALClose(poDstDS);

	return 0;
}

1.4 缺点

缺点显而易见,可能无法适配自己的开发环境。

2. 方法2:自己编译

源码下载地址:http://download.osgeo/gdal
如果需要老版本,可以在old_releases/路径下找到更早的版本,这里我继续下载1.8.0(gdal-1.8.0.tar.gz)进行编译并记录。
步骤1:解压gdal-1.8.0.tar.gz,随便放在一个路径下。比如:C:\gdal-1.8.0
步骤2:修改nmake.opt文件,可在gdal-1.8.0中找到
步骤3:修改MSVC_VER=1800,我的VS是2013版,因此这里改为1800,如果你使用其他版本VS,参照下面各个版本Visual Studio MSVC 编译器版本

Visual Studio 2010 (10.0)         1600
Visual Studio 2012 (11.0)         1700
Visual Studio 2013 (12.0)         1800
Visual Studio 2015 (14.0)         1900
Visual Studio 2017 RTW (15.0)     1910
Visual Studio 2017 version 15.3   1911
Visual Studio 2017 version 15.5   1912
Visual Studio 2017 version 15.6   1913
Visual Studio 2017 version 15.7   1914
Visual Studio 2017 version 15.8   1915
Visual Studio 2017 version 15.9   1916
Visual Studio 2019 RTW (16.0)     1920
Visual Studio 2019 version 16.1   1921
Visual Studio 2019 version 16.2   1922
Visual Studio 2019 version 16.3   1923
Visual Studio 2019 version 16.4   1924
Visual Studio 2019 version 16.5   1925
Visual Studio 2019 version 16.6   1926
Visual Studio 2019 version 16.7   1927
Visual Studio 2019 version 16.8, 16.9       1928
Visual Studio 2019 version 16.10, 16.11     1929

步骤4:修改为GDAL_HOME = “C:\gdald”,可改可不改,我改了也没啥用,并不会生成到指定路径,反而生成在了C:\gdal-1.8.0
步骤5: 修改WIN64=NO,这个默认就是生成WIN32
步骤6:修改DEBUG=1,默认就是生成DEBUG版本,如果需要Release,设置为DEBUG=0
步骤7:管理员模式打开,因为我要编译WIN32版本的,因此选择X86,如果你要生成WIN64,那就选择X64
依次执行命令:

cd C:\gdal-1.8.0
nmake /f makefile.vc

大约五六分钟就编译结束了。

步骤8:新建如下目录结构
将C:\gdal-1.8.0路径里所有DLL文件拷贝到bin文件夹;将所有.h文件拷贝到include文件夹;将所有lib文件拷贝到lib文件夹。

步骤8:配置和测试参考方法1

3. 参考

[1] Win10(64位) VS2013配置编译GDAL
[2] windows环境下安装和配置GDAL

编译
[1] VS2017编译配置GDAL——超详细,适合初学者!!!
[2] GDAL-3.4.0库 C++版编译

本文标签: Windows Gdal