gdal合成葵花八号卫星nc格式数据为envi格式、tiff格式图像

gdal合成葵花八号卫星nc格式数据为envi格式、tiff格式图像

背景

在看文献时发现作者使用Satpy合成葵花八号数据为三通道图像,但是经过自己尝试后发现Satpy只能支持葵花八号标准数据HSD
在这里插入图片描述
该类型数据只有最近三十天,而我需要使用一整年的数据,故选用的是/jma/netcdf文件夹下的nc格式数据,然而Satpy并不能识别这种格式,所以经过查找资料,选用gdal可以成功融合。

1.数据下载

可见上一文章葵花八号卫星多任务数据下载

2.python包准备

需要的包和版本如下

1.gdal
gdal包下载需要使用oseg
在这里插入图片描述

2.netcdf
在这里插入图片描述

3.numpy
在这里插入图片描述
要维护好环境,不然随时会崩,缺少关键包导致跑不起来,特别是numpy和matplotlib经常导致版本冲突。

3.gdal函数分析

driver = gdal.GetDriverByName('ENVI')

创建一个gdal驱动,名字可选ENVI、GTiff、JPEG、PNG、Shp等

out_tif = driver.Create(fileName,width,height,bands,eType)

fileName:文件地址
width:图像宽度
height:图像高度
bands:通道数
eType:图像格式(float32、uint32、int16等)

out_tif.SetProjection(srs.ExportToWkt())

设置投影

out_tif.GetRasterBand(1).WriteArray(band1)

通道读取并写入

4.合成关键代码

'''
1-图像融合
'''
import calendar
from osgeo  import gdal,osr
import numpy as np
import netCDF4 as nc
import os

def layerStack(file_path):
    file_path = file_path
    f_list=os.listdir(file_path)
    images=[]
    for i in f_list:
        # os.path.splitext():分离文件名与扩展名
        if os.path.splitext(i)[1] == '.nc':
            images.append(i)
    count = 1
   
    for dataName in images:
        # 通过netcdf读取数据
        d = nc.Dataset(file_path + '/'+dataName)
        # 选取通道 band1、band2、band3分别是R、G、B
        band1 = np.asarray(d['albedo_01'][:])
        band2 = np.asarray(d['albedo_02'][:])
        band3 = np.asarray(d['albedo_03'][:])
        # 获取地理信息
        lat = d.variables['latitude'][:]
        lon = d.variables['longitude'][:]
        latMin, latMax, lonMin, lonMax = lat.min(), lat.max(), lon.min(), lon.max()
        # 分辨率
        lat_Res = (latMax - latMin) / (lat.shape[0] - 1)
        lon_Res = (lonMax - lonMin) / (lon.shape[0] - 1)

        # 保存的路径和名称,可选GTiff、ENVI
        # driver = gdal.GetDriverByName('GTiff')
        driver = gdal.GetDriverByName('ENVI')
        split=dataName.split('_')
        #合成图像保存路径
        out_path=file_path+'/dat/'
        out_tif_name = str(count-1)+'.dat'
        out_tif = driver.Create(out_path+out_tif_name, lon.shape[0], lat.shape[0], bands=3, eType=gdal.GDT_Float32)

        # 输出结果
        geotransform = (lonMin, lon_Res, 0, latMax, 0, -lat_Res)
        out_tif.SetGeoTransform(geotransform)
        srs = osr.SpatialReference()
        srs.SetWellKnownGeogCS('WGS84')
        out_tif.SetProjection(srs.ExportToWkt())

        out_tif.GetRasterBand(1).WriteArray(band1)

        out_tif.GetRasterBand(2).WriteArray(band2)

        out_tif.GetRasterBand(3).WriteArray(band3)

        print('融合完成第',count)
        count=count+1
        out_tif.FlushCache()
        out_tif = None
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
向日葵是一款远程控制软件,可以帮助用户在远程设备上进行操作和管理。在Ubuntu系统下,可以通过设置自动启动来实现向日葵软件的开机自启动功能,这样可以方便用户在重启后自动连接到服务器。要在Ubuntu系统下设置向日葵软件的开机自启动,首先需要设置Ubuntu系统的开机自动登录功能,然后在开机后配置向日葵软件的自动连接。 要设置Ubuntu系统的开机自动登录功能,可以按照以下步骤进行操作: 1. 进入Ubuntu桌面环境。 2. 点击桌面右上角的开关机按钮,选择菜单中的设置。 3. 在打开的设置窗口中,向下滑动到最底部,点击“详细信息”选项。 4. 在详细信息中选择“用户”。 5. 在右侧找到“自动登录”选项,将其打开。 完成以上步骤后,Ubuntu系统将会在开机时自动登录到指定的用户账号。 接下来,我们需要配置向日葵软件的自动连接功能。具体步骤如下: 1. 打开向日葵软件,并登录到需要远程连接的服务器。 2. 在向日葵软件界面中,找到自动连接的设置选项。 3. 根据软件提供的选项,设置自动连接的服务器和相关配置。 4. 确认设置后,关闭向日葵软件。 这样,在服务器重启后,向日葵软件将会自动连接到指定的服务器,并实现远程控制功能。通过以上步骤,您可以方便地实现在Ubuntu系统下设置向日葵软件的开机自启动和自动连接功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值