GDAL库安装与使用GDAL读取tif 或 tiff图像文件

windows平台安装

直接安装会报错,需要通过下载wheel文件安装

下载链接

找到对应 python 版本的文件,图中的 cp311 表示 python3.11 版本。
在这里插入图片描述
在终端执行下面命令即可成功安装:

pip install GDAL-3.8.4-cp311-cp311-win_amd64.whl

读取tif或tiff图像文件

GDAL官方文档链接

import numpy as np
from matplotlib import pyplot as plt
from osgeo import gdal

img_path = r"E:\00.tiff"

# 读取图像
dataset = gdal.Open(img_path)
img = dataset.ReadAsArray()

img = (img - np.min(img)) / (np.max(img) - np.min(img))

plt.imshow(img, cmap="gray")
plt.axis("off")
plt.show()

### 如何使用 C++ 和 GDAL 读取 TIFF 文件 为了实现这一目标,可以利用 GDAL 提供的功能来处理地理空间数据格式。GDAL 是一个开源的栅格空间数据抽象,支持多种文件格式的操作。 #### 初始化 GDAL 环境并打开 TIFF 文件 在程序启动时初始化 GDAL 应用程序环境,并通过指定路径加载 TIFF 图像文件作为只读模式的数据集对象[^3]: ```cpp #include <gdal_priv.h> // ... int main() { // 注册所有的驱动器 GDALAllRegister(); const char* pszFilename = "/path/to/your/file.tif"; GDALDataset *poDataset; poDataset = (GDALDataset *) GDALOpen(pszFilename, GA_ReadOnly); if( poDataset == NULL ) { printf("无法打开图像文件 %s\n", pszFilename ); exit( 1 ); } } ``` #### 获取基本属性信息 一旦成功打开了 TIFF 数据集,则可以通过访问其成员函数获取有关该数据集的一些基本信息,比如宽度、高度以及波段数量等参数[^4]: ```cpp printf("Driver: %s/%s\n", poDataset->GetDriver()->GetDescription(), poDataset->GetDriver()->GetMetadataItem(GDAL_DMD_LONGNAME)); printf("Size is %dx%dx%d\n", poDataset->GetRasterXSize(), poDataset->GetRasterYSize(), poDataset->GetRasterCount()); ``` #### 访问单个波段数据 对于多光谱遥感影像而言,通常会包含多个不同的波段。这里展示如何单独提取某个特定编号的波段,并将其转换成适合进一步分析的形式: ```cpp for(int iBand=1;iBand<=poDataset->GetRasterCount();iBand++) { GDALRasterBand *poBand; float *pafScanline; poBand = poDataset->GetRasterBand(iBand); int nBlockXSize, nBlockYSize; double adfGeoTransform[6]; pafScanline = new float[nPixels]; CPLErr err = poBand->ReadRaster( 0, 0, nCols, nRows, pafScanline, nCols, nRows, GDT_Float32 ); delete[] pafScanline; } GDALClose((GDALDatasetH) poDataset); return 0; ``` 上述代码片段展示了怎样使用 C++ 结合 GDAL 来完成对 TIFF 文件的基本操作流程。需要注意的是,在实际应用过程中还需要考虑错误处理机制等问题以确保系统的健壮性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值