GDAL入门学习
1 GDAL介绍及应用1
1.1 介绍
GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式,并且提供了一系列命令行工具来进行数据转换和处理。此外,GDAL还包括OGR,这是一个提供对矢量数据支持的分支。GDAL使用抽象数据模型来解析它所支持的数据格式,这些模型包括数据集、坐标系统、仿射地理坐标转换、大地控制点、元数据、栅格波段、颜色表、子数据集域、图像结构域和XML域等。有很多著名的GIS类产品都使用了GDAL/OGR库,例如ESRI的Arcgis。
1.2 应用
1.GDAL提供了一系列命令行工具,用于进行矢量和栅格数据转换和处理。这些工具可以方便地处理地理空间数据,如重投影、裁剪、格式转换等。
2.gdal常用于批量处理栅格和矢量数据。在科研中和生产中,有几十或者上百幅影像需要处理,比如对长时序的栅格数据进行裁剪,并计算每幅影像的均值,或者进行栅格计算。即使使用Arcgis的批处理功能进行这些操作也不太方便,但是使用gdal就很方便,只需要几行代码就可以实现。
GDAL官网地址https://gdal.org/
GDAL官网python-api文档 https://gdal.org/api/index.html#python-api
2 GDAL安装2
2.1 安装numpy、six、setuptools
pip install numpy six setuptools
2.2 安装GDAL
2.2.1 命令行窗口在线安装
使用pip命令进行在线安装
pip install gdal #如需要指定路径,可在库名后面加上存储路径。例如pip install gdal D:\Python\
2.2.2 离线安装
下载安装包:前往GDAL官网或其他可靠来源,下载与你的Python版本和系统类型相匹配的GDAL文件包。文件包通常是.whl格式的。
#D:\GDAL-3.8.4-cp39-cp39-win_amd64.wh为存放路径
pip install D:\GDAL-3.8.4-cp39-cp39-win_amd64.wh
gitHub地址:https://github.com/cgohlke/geospatial-wheels/releases/tag/v2024.2.18
** 百度网盘:**下载了windows64位python3.9、3.10版本的 https://pan.baidu.com/s/1n0QLw5KunDy3sOtdHg9Kxg 提取码:1apd
3 入门案例3
3.1 读取TIF影像
#导入gdal,注意导入的名称
import matplotlib
matplotlib.use('TkAgg') # 选择合适的后端,如Agg
import matplotlib.pyplot as plt # 画图模块
from osgeo import gdal # 或者直接用import gdal
# 启用异常处理
gdal.UseExceptions()
raster_path = r'D:\mapProjects\projects\Sentinel2landcover\49Q_20210101-20220101.tif'
# 读取影像
dataset = gdal.Open(raster_path)
# 打开波段1(注意:用索引1,而不是0,来获取第一个波段)
band = dataset.GetRasterBand(1)
elevation = band.ReadAsArray()
print(elevation.shape) # 行列数
print(elevation) # 行列矩阵
# cmap='gist_earth'以gist_earth色带形式展示
plt.imshow(elevation, cmap='gist_earth')
plt.show()
注:⑴如果运行程序报错AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘. Did you mean: ‘FigureCanv,可以加上以下代码:
import matplotlib
matplotlib.use('TkAgg') # 选择合适的后端,如Agg
可参考https://blog.csdn.net/qq_44154915/article/details/135418244
⑵如果报错FutureWarning: Neither gdal.UseExceptions() nor gdal.DontUseExceptions() has been explicitly called. In GDAL 4.0, exceptions will be enabled by default,可以加上以下代码:
# 启用异常处理
gdal.UseExceptions()