遥感影像处理9.21作业
本文最后更新于:3 months ago
用的是Python语言和gdal库,效果为
数据
来源是USGS,位置是北京,可以看到西北有张家口,我的家乡~
导入gdal包
下载gdal包还有numpy,因为我的python是3.9版本,所以直接pip install numpy老出错,所以,可以直接进入这个网站
然后在win+r中输入cmd打开命令行,再进入Python的包的安装文件夹,pip install +轮子的文件名,可以看到安装成功,如下图所示
GDAL同理
导入包和指定landset文件夹所在位置
1 |
|
打开蓝波段,在创建输出图像之前,你需要此波段对象,因为它具有输出文件所需要的基本信息(尺寸大小、投影、坐标等)。
1 |
|
使用GeoTIFF驱动程序创建新数据集
1 |
|
创建数据集
1 |
|
- filename->’nat_color.tif’是要创建的数据集在当前文件夹下的路径。
- xsize->in_band.XSize是新数据集中的列数。
- ysize->in_band.YSize是新数据集中的行数。
- 3是新数据集中的波段数,可以不写。默认值为1。
- in_band.DataType是将存储在新数据集中的数据类型。默认值为GDT_Byte。
读取第1波段数据
因为Landsat图像的波段1是蓝色波段,你需要将其放入输出图像的第三个波段以获得RGB顺序的波段。接下来要做的是从out_ds获取第三个波段,然后使用WriteArray将in_data数组中的值复制到新数据集的第三个波段1
2
3in_data = in_band.ReadAsArray()
out_band = out_ds.GetRasterBand(3)
out_band.WriteArray(in_data)
读取第2波段数据
1 |
|
读取第3波段数据
1 |
|
统计像元
在计算统计数据之前,你必须确保数据已写入磁盘而不是仅缓存在内存中,因此这是对FlushCache的调用。然后循环遍历波段并计算每个波段的统计数据。将False传递给此函数会告诉你需要实际统计信息而不是估计值,它可能来自概览图层(尚不存在)或从像元子集中采样。如果估计值可以接受,那么你可以传递True;这也将使计算更快,因为不是每个像元都需要检查。
1 |
|
分别是最小值,最大值,平均值,均方差
抽样构建金字塔
遥感领域许多图片的大小动辄上G。读取、显示这样的图片极为耗时,影响用户体验。金字塔技术在几乎不降低显示效果的前提下,大大降低了图片处理的耗时,改善了用户体验Tutorial1
2out_ds.BuildOverviews('average', [2, 4, 8, 16, 32])
del out_ds