当前位置: 首页 > news >正文

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&#xff1a;下载配置网友编译的GDAL版本1.1 下载1.2 配置1.3 测试1.4 缺点2. 方法2&#xff1a;自己编译3. 参考1. 方法1&#xff1a;下载配置网友编译的GDAL版本 1.1 下载 CSDN: GDAL&#xff0c;geos联合编译的库&#xff0c;版本为1.8.0&am…...

二叉树基础概念

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

【MySQL】(1)数据库基础,库与表的增删查改,数据库的备份与还原

文章目录服务器&#xff0c;数据库&#xff0c;表关系MySQL 数据存储逻辑SQL 分类存储引擎库的操作查看数据库创建数据库查看创建语句删除数据库选择&#xff08;切换&#xff09;数据库查看当前选择的数据库修改数据库字符集和排序规则表的操作创建表查询表查询表结构插入数据…...

Python基础-01 变量

注释 注释的分类 在Python中,支持单行及多行注释 单行注释 使用#对代码进行说明,#右边的所有内容就是注释的内容,起辅助说明作用 # #右边的都是注释,解析器会忽略 print(hello world) #在控制台里打印一段话多行注释 多行注释中,允许换行,使用三个单引号开始,三个单引号结…...

springcloud2.1.0整合seata1.5.2+nacos2.10(附源码)

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

map原理

map源码结构体&#xff1a; type hmap struct {count int // 元素的个数B uint8 // buckets 数组的长度就是 2^B 个overflow uint16 // 溢出桶的数量​buckets unsafe.Pointer // 2^B个桶对应的数组指针oldbuckets unsafe.Pointer // 发生扩容时&#xff0…...

[Ext JS]3.6 Ext JS 表格(Grid)概览

Grid, 翻译过来是网格, 也就是表格。 Grid 的基本构成 面板 :Ext.grid.Panel表格视图 :Ext.view.Table。 不直接使用, 通过面板的viewConfig配置项进行配置。比如可以用来配置表格中行是否跳色显示列: Ext.grid.column.Column。 表格中的列定义store , 表格的数据示例代码…...

关于使用云渲染的五大优势

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

CSS基础样式

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

第03章_流程控制语句

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

配电网电压调节及通信联系研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

stegano(图片隐写、摩斯密码)

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

wsl安装torch_geometric

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

ASP.NET Core - 依赖注入(二)

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

Scala之集合(1)

目录 ​​​​​​​集合介绍&#xff1a; 不可变集合继承图&#xff1a;​编辑 可变集合继承图 数组&#xff1a; 不可变数组&#xff1a; 样例代码&#xff1a; 遍历集合的方法&#xff1a; 1.for循环 2.迭代器 3.转换成List列表&#xff1a; 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 原始仓库&#xff1a;https://github.com/spiritLHLS/pve 前言 建议debian在使用前尽量使用最新的系统 非debian11可使用 debian一键升级 来升级系统 当然不使用最新的debian系统也没问题&#xff0c;只不过得不到官方支持 请确保使用前机器可以重装系统&#xff0c;…...

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端&#xff1a; 因为APP端无法使用uni的camera组件&#xff0c;最开始考虑使用内嵌webview的方式&#xff0c;通过原生dom调用video渲染画面然后通过canvas截图。但是此方案兼容性在ios几乎为0&#xff0c;如果app只考虑安卓端的话可以采用此方案。后面又想用live-pusher组件…...

hashlib模块

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

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...