GDAL空间数据处理100讲[02]:用GDAL切图/裁剪(GeoTiff格式)
作者:胡佳辉 2018年11月14日
概述
前面给大家介绍了怎么把GDAL的环境搭建起来,就有朋友迫不及待地问各种开发问题。后续将陆续给大家分享,这一期先介绍怎么用GDAL切图/裁剪(clip),这里采用的是根据指定的矩形框按像素切,其他方式还有根据shp轮廓切等。
前置条件:本文基于Ubuntu16桌面版环境,参见:GDAL空间数据处理100讲[01]:GDAL的Python开发环境搭建
GeoTiff栅格图像基础知识
要对Tif文件切图,对栅格图像的了解很有必要。GeoTiff是很常见的一种遥感影像数据格式,它是一种栅格数据,这种数据是以像素点矩阵的形式存储的。TIF文件中的空间信息包括投影信息和仿射变换信息。其中,仿射变换(经纬度等)的信息分别为:左上角的坐标(经度和维度)、东西和南北方向的像素分辨率(也就是每个像素点的经纬度偏移量)以及图像的旋转系数(正北方向时为零)。这样,每个像素点的坐标就可以通过它与左上角的偏移量和每个像素的分辨率值计算出来。
切图产生的新图的投影信息是不变的,但仿射信息会发生变化,因为左上角的原点可能跟原图不一样了。因此,需要重新计算仿射信息并设置(投影信息也需要设置,但不需要重新计算)。
GDAL切图的关键步骤
[1] Tif文件的读取;
[2] 根据Tif文件中的波段数量,读取相应的波段(Band)。有些Tif可能只包含一个波段,但更常见的包含RGB或者RGBN,分别代表Red、Green、Blue和Near Infrared(近红外)。本文的tif样例文件为RGB文件,共三个通道;
[3] 确定要裁剪的图的起始点和矩形框的大小,并读取相应的数据;
[4] 获取创建文件的驱动并创建裁剪后的新目标文件;
[5] 计算新图的仿射信息,并设置投影和仿射信息;
[6] 将提取出来的数据写入新文件并刷新缓存到磁盘;
[7] 释放文件句柄资源;
其他可选处理可能包括计算统计信息以及构建影像金字塔等。
切图源码
参见github链接:https://github.com/dennishucd/gdal100/blob/master/02/gdal_clip.py
说明:本源码中的样例影像源自哨兵二号成都兴隆湖的影像.
本文原发于"卫星遥感大数据"公众号,欢迎关注!如有兴趣,欢迎加入"卫星遥感大数据"QQ群(877631590)或者加我微信(cddennishu)进"卫星遥感大数据"微信群。