python-gdal-处理Landsat8影像
程序员文章站
2024-03-24 22:13:28
...
之前处理图像的时候都是用ENVI软件进行的,一个个用鼠标点,这次学习了python-arcgis处理图像,真的是太方便了,相融合哪个波段,改几个字符就可以了。
下面展示一些代码。
#用landsat8 数据的三个波段合成一张图像融合的是5、6、4波段,主要表示陆地和水。
from osgeo import gdal
import os
os.chdir(r'F:\烨叶\work\study\ENVI\LC81160272018129LGN00\LC81160272018129LGN00')
band4_fn='LC08_L1TP_116027_20180509_20180517_01_T1_B4.tif'
band5_fn='LC08_L1TP_116027_20180509_20180517_01_T1_B5.tif'
band6_fn='LC08_L1TP_116027_20180509_20180517_01_T1_B6.tif'
in_ds=gdal.Open(band4_fn)
in_band=in_ds.GetRasterBand(1) #使用GetRasterBand()函数时,波段数一直是从1开始的,不是从0开始的
giff_driver=gdal.GetDriverByName('GTiff') #用GTIFF的驱动对象
#下面一句是用了Create的函数,driver.Create('fielname,xsize,ysize,[bands],[datatype],[options])
out_ds=giff_driver.Create('nat_color1.tif',in_band.XSize,in_band.YSize,3,in_band.DataType)
#了解使用的投影类型,并获得投影
out_ds.SetProjection(in_ds.GetProjection())
out_ds.SetGeoTransform(in_ds.GetGeoTransform())
in_data=in_band.ReadAsArray()
out_band=out_ds.GetRasterBand(3)
out_band.WriteArray(in_data)
in_ds=gdal.Open(band6_fn)
out_band=out_ds.GetRasterBand(2)
out_band.WriteArray(in_ds.ReadAsArray())
out_ds.GetRasterBand(1).WriteArray(gdal.Open(band5_fn).ReadAsArray())
#FlushCache函数遍历波段,计算每一个波段的统计数值,False告诉他你需要的是实际的统计数据,而不是估计值
out_ds.FlushCache()
for i in range(1,4):
out_ds.GetRasterBand(i).ComputeStatistics(False)
#建立数据集的概视图层
out_ds.BuildOverviews('average',[2,4,8,16,32])
del out_ds
上一篇: Android Ble蓝牙开发总结
下一篇: 在windows下查看网卡的MTU
推荐阅读
-
GDAL+Python实现栅格影像处理之重采样
-
python GDAL 影像处理系列之裁剪与合并影像(三)
-
python-gdal-处理Landsat8影像
-
区域医疗移动医疗影像基于HTML5的PACS--HTML5图像处理(5)图像旋转
-
区域医疗移动医疗影像基于HTML5的PACS--HTML5图像处理(3)图像缩放
-
区域医疗移动医疗影像解决方案--基于HTML5的PACS--HTML5图像处理
-
GDAL+Python实现栅格影像处理之栅格矢量化及矢量栅格化
-
[AE] AE处理Landsat8
-
arcgis怎么去黑边? arcgis影像黑边处理技巧
-
【ArcGIS遇上Python】ArcGIS批量处理栅格影像(NDVI)归一化完整案例代码