Windows 安装 GDAL C++库
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.org/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 C++库
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&am…...

二叉树基础概念
1.二叉树种类 1.1 满二叉树 满二叉树:如果一棵二叉树只有度为 0 0 0 的结点和度为 2 2 2 的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。 如图所示: 这棵二叉树为满二叉树,也可以说深度为 k k k&…...

【MySQL】(1)数据库基础,库与表的增删查改,数据库的备份与还原
文章目录服务器,数据库,表关系MySQL 数据存储逻辑SQL 分类存储引擎库的操作查看数据库创建数据库查看创建语句删除数据库选择(切换)数据库查看当前选择的数据库修改数据库字符集和排序规则表的操作创建表查询表查询表结构插入数据…...
Python基础-01 变量
注释 注释的分类 在Python中,支持单行及多行注释 单行注释 使用#对代码进行说明,#右边的所有内容就是注释的内容,起辅助说明作用 # #右边的都是注释,解析器会忽略 print(hello world) #在控制台里打印一段话多行注释 多行注释中,允许换行,使用三个单引号开始,三个单引号结…...

springcloud2.1.0整合seata1.5.2+nacos2.10(附源码)
springcloud2.1.0整合seata1.5.2nacos2.10(附源码) 1.创建springboot2.2.2springcloud2.1.0的maven父子工程如下,不过多描述: 搭建过程中也出现很多问题,主要包括: 1.seataServer.properties配置文件的组…...

map原理
map源码结构体: type hmap struct {count int // 元素的个数B uint8 // buckets 数组的长度就是 2^B 个overflow uint16 // 溢出桶的数量buckets unsafe.Pointer // 2^B个桶对应的数组指针oldbuckets unsafe.Pointer // 发生扩容时࿰…...
[Ext JS]3.6 Ext JS 表格(Grid)概览
Grid, 翻译过来是网格, 也就是表格。 Grid 的基本构成 面板 :Ext.grid.Panel表格视图 :Ext.view.Table。 不直接使用, 通过面板的viewConfig配置项进行配置。比如可以用来配置表格中行是否跳色显示列: Ext.grid.column.Column。 表格中的列定义store , 表格的数据示例代码…...

关于使用云渲染的五大优势
在不影响质量或性能的情况下节省时间、金钱和资源,对于需要在通常较短且严格的期限内创建高质量 3D 内容的专业人士来说,云渲染都是最好的选择!云渲染作为数字媒体生产的最新趋势,与传统的渲染农场和机器相比具有许多优势…...

CSS基础样式
1.高度和宽度 .c1{height:300px;width:500px; } 注意事项: 宽度,支持百分比 行内标签:默认无效 块级标签:默认有效(右侧区域就算是空白,也不给占用) 2.块级和行内标签 css样式:标签…...

第03章_流程控制语句
第03章_流程控制语句 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 本章专题与脉络 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模…...

配电网电压调节及通信联系研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

stegano(图片隐写、摩斯密码)
附件是PDF,我们在选择内容时发现光标溢出了文本 说明这里还存在一些我们看不到的内容 直接CtrlA全选,CtrlC复制后新建一个纯文本文件 将复制的东西粘贴过去 粘贴后发现果然多出来了一些东西,提取出来 BABA BBB BA BBA ABA AB B AAB ABAA A…...

wsl安装torch_geometric
在官网选择需要的版本 选择安装途径,选择runfile 执行第一行,会下载一个文件到目录下 需要降低C的版本,否则 执行sudo sh cuda_11.1.0_455.23.05_linux.run,会出现 查看对应的文件,会有 可以加上override参数之后,…...

ASP.NET Core - 依赖注入(二)
2,NET Core 依赖注入的基本用法 话接上篇,这一章介绍 .NET Core 框架自带的轻量级 Ioc 容器下服务使用的一些知识点,大家可以先看看上一篇文章 [ASP.NET Core - 依赖注入(一)] 2.3 服务解析 通过 IServiceCollection 注册了服务之后…...

Scala之集合(1)
目录 集合介绍: 不可变集合继承图:编辑 可变集合继承图 数组: 不可变数组: 样例代码: 遍历集合的方法: 1.for循环 2.迭代器 3.转换成List列表: 4.使用foreach()函数&a…...

公网使用SSH远程登录macOS服务器【内网穿透】
文章目录前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址5. 使用固定TCP端口地址ssh远程前言…...

PVE相关的各种一键脚本(一键安装PVE)(一键开设KVM虚拟化的NAT服务器-自带内外网端口转发)
PVE 原始仓库:https://github.com/spiritLHLS/pve 前言 建议debian在使用前尽量使用最新的系统 非debian11可使用 debian一键升级 来升级系统 当然不使用最新的debian系统也没问题,只不过得不到官方支持 请确保使用前机器可以重装系统,…...
CSDN目录博客(zhaoshuangjian)
总目录 一、Java1.1 高并发1.2 多线程1.3 集合1.4 I/O1.5 异常1.6 事务1.7 锁机制1.8 JVM 二、数据库2.1 mysql2.1.1 mysql索引2.1.1 mysql锁2.1.1 mysql事务2.1.1 2.2 oracle2.3 postgresql2.4 达梦2.5 人大金仓kingbase 三、设计模式四、中间件4.1 缓存中间件-redis4.2 缓存中…...

uniapp人脸识别解决方案
APP端: 因为APP端无法使用uni的camera组件,最开始考虑使用内嵌webview的方式,通过原生dom调用video渲染画面然后通过canvas截图。但是此方案兼容性在ios几乎为0,如果app只考虑安卓端的话可以采用此方案。后面又想用live-pusher组件…...

hashlib模块
欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 hashlib模块专栏:《python从入门到实战》 哈希算法,也叫摘要算法。 加密&…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统
Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...