前几天在DMSP数据预处理中介绍了利用gdal.warp()来实现影像裁剪,今天介绍如何通过代码一步步实现影像裁剪功能。影像裁剪的过程其实就是读取影像数据,获取影像数据的仿射、投影信息,将地理坐标转换成像素坐标,读取用于裁剪的矢量数据,获取相应的投影信息,将矢量数据范围坐标转换成像素坐标,生成用于裁剪的掩膜文件(0,1),根据掩膜文件,生成掩膜范围内实际裁剪array(可以理解为矩阵点乘,掩膜文件为1的保留有影像数据值,为0的则影像数据值变为0),最后对数据进行写入,生成裁剪后的影像文件。
结合实际操作,逐步说明吧。
首先第一步影像数据、栅格数据的读入,及相关信息的生成(主要就是放射信息,地理坐标转换为像素坐标)。先是影像数据读入。
#定义基础数据打开及基础信息获取函数
def Get_Imgdata(filepath):
ds = gdal.Open(filepath)
#img_band = ds.GetRasterBand(1)
#band_arr = img_band.ReadAsArray()
#bandnum = img_ds.RasterCounter
#img_width =img_band.XSize
#img_height = img_band.YSize
#img_bandnum = img_ds.RasterCount
geo = ds.GetGeoTransform()
prj = ds.GetProjection()
return ds,geo,prj
影像数据读入及相关基础信息获取还是比较容易的&#