哨兵2号在SNAP中去云处理

1.Fmask软件对1C级产品进行处理,识别像素类别

不知道Fmask是什么可以先去百度一下
软件下载,链接到github地址
在这里插入图片描述
我下载的是4.5版本,无脑安装即可。
双击打开软件(需要等一会),长这样
在这里插入图片描述
路径选择E:\S2\S2A_MSIL1C_20220806T032531_N0400_R018_T49RBQ_20220806T054540\S2A_MSIL1C_20220806T032531_N0400_R018_T49RBQ_20220806T054540.SAFE\GRANULE\L1C_T49RBQ_A037195_20220806T033824
在这里插入图片描述
点击run
在这里插入图片描述
状态会发生变化
在这里插入图片描述
当然也可以采用python实现,详见这个链接
Python会运行快一些,但是生成的是.img格式,转成tif好像多了些奇怪的值。故还是用软件吧!哪个简单用哪个
在这里插入图片描述
显示finished表示运行完毕
在这里插入图片描述
可以看到里面多了一个t文件夹,里面是Fmask.tif文件。

DN值所代表的含义如下:
0 => clear land pixel

1 => clear water pixel

2 => cloud shadow

3 => snow

4 => cloud

255 => no observation

运行完之后,我们会得到一个tif文件,因为我们只需要云掩膜也就是保留0和1的像元(纯净的陆地像素与纯净的水像素),其他和云相关的像元删掉,也就是将云所在的像素去掉。这里采用python实现,代码如下:

from osgeo import gdal, ogr, osr
import os
import datetime

path = r"cloud.tif"

if __name__ == '__main__':
    start_time = datetime.datetime.now()

    inraster = gdal.Open(path)
    inband = inraster.GetRasterBand(1)
    prj = osr.SpatialReference()
    prj.ImportFromWkt(inraster.GetProjection())

    outshp ="mask_cloud.shp"#记得改一下文件名路径
    drv = ogr.GetDriverByName("ESRI Shapefile")
    if os.path.exists(outshp):
        drv.DeleteDataSource(outshp)
    polygon = drv.CreateDataSource(outshp)
    poly_layer = polygon.CreateLayer(path[:-4], srs=prj, geom_type=ogr.wkbMultiPolygon)
    newfield = ogr.FieldDefn('value', ogr.OFTReal)
    poly_layer.CreateField(newfield)

    gdal.Polygonize(inband, None, poly_layer, 0)
    polygon.SyncToDisk()
    polygon = None

    # 打开生成的 Shapefile 文件
    shp_datasource = ogr.Open(outshp, 1)
    shp_layer = shp_datasource.GetLayer()

    # 遍历要素并删除 value 不为 0 或 1 的要素
    shp_layer_def = shp_layer.GetLayerDefn()
    delete_indices = []
    for i in range(shp_layer.GetFeatureCount()):
        feature = shp_layer.GetFeature(i)
        value = feature.GetField("value")
        if value != 0 and value != 1:
            delete_indices.append(i)
        feature = None

    # 从后往前删除要素,避免索引错位
    for idx in reversed(delete_indices):
        shp_layer.DeleteFeature(idx)

    # 重新同步文件
    shp_layer.ResetReading()
    shp_datasource.SyncToDisk()

    end_time = datetime.datetime.now()
    print("Succeeded at", end_time)
    print("Elapsed time:", end_time - start_time)

注意需要有gdal库,推荐本地安装,这里不会可以看这篇文章

这个链接也可以下载gdal

运行完这段代码后会得到一个掩膜文件,用ArcGIS打开长这样,1值代表有效像素
在这里插入图片描述

2.1C级产品生成云掩膜后再批量进行sen2cor大气校正

这我相信你会的!
然后把校正后的2A级产品用SNAP打开

3.批量重采样与掩膜操作

1.导入2A级产品在这里插入图片描述

你应该知道吧,先重采样到你先要的分辨率,这里我们选择10m.

2.导入我们在第1步生成的云掩膜文件

这时候就要进行我们的掩膜操作了(有什么疑问的去看官方文档,点一下“帮助”认真读一下)
在这里插入图片描述
找到vector Data文件夹,选中之后点击上方菜单栏Vector-import-shp
在这里插入图片描述
在这里插入图片描述
记得这里选否不然每个多边形都生成一个文件
在这里插入图片描述
可以看导在Vector Data下面和Masks下面多了一个mask
双击打开可以看到它的属性值,1代表有效像素,0代表无效像素,我们需要抠掉的像素
在这里插入图片描述
在这里插入图片描述
这里最好先重采样到10m,我找了一景重采样之后的影像来做演示
在这里插入图片描述看看效果,mask是否完全覆盖了云
在这里插入图片描述
然后进行掩膜操作,说白了就是把有云的地方抠掉,然后再进行后续的镶嵌操作补上来,云多真没办法,哎!误差大。

3.SNAP掩膜操作

在这里插入图片描述
输入输出参数,选好路径即可
在这里插入图片描述
处理参数选择使用矢量掩膜,拉到最后选择我们之前用Python生成的那个shp文件
在这里插入图片描述
选择所有波段和下图这四个波段
在这里插入图片描述

波段那里全选
。点击run运行即可。
可以看到掩膜之后相当于把云抠掉了
在这里插入图片描述

然后再选取同一传感器,同一地点,相近时间的影像在SNAP软件中做同样的处理
然后把他们镶嵌在一起
在这里插入图片描述
注意是选择dim文件,对话框里面有三个选项卡,I/O Parameters(输入输出参数),Map Projection Definition
(定义投影)和Variables&Coniditions(变量和条件)。首先我们在输入输出参数选项卡中指定输入的影像,点击下面箭头指向的"加号”即可选择所需影像文件。在本选项卡内还需要对Nme(文件名)、文件输出类型和目录进行设置。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
运行完毕!
在这里插入图片描述

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
哨兵2卫星是欧洲空间局(ESA)发射的一颗遥感卫星,用于获取地球表面的高分辨率影像数据。在处理这些影像数据时,需要进行大气校正以消除大气影响,从而更准确地反映地表特征。利用Python语言可以对哨兵2的影像数据进行批量的大气校正处理。 首先,我们可以使用Python中的开源库如GDAL、Rasterio等来读取并处理哨兵2的影像数据。这些库提供了丰富的功能用于读取、处理和写入遥感影像数据。 其次,我们可以利用Python的科学计算库如NumPy、SciPy来进行大气校正的算法实现。常见的大气校正方法包括大气校正模块(AC module)和辐射传输模拟(RTM),可以利用这些库来实现这些算法。 另外,Python中也有一些专门针对遥感影像数据处理的库如Rasterio、Pyshp等,这些库可以用来对影像数据进行裁剪、叠加、融合等操作。 通过以上这些工具和库,我们可以编写Python脚本来批量处理哨兵2的影像数据,进行大气校正处理。同时,由于Python具有较好的可扩展性和易用性,可以很容易地与其他遥感处理工具或者地理信息系统(GIS)进行结合,实现更加复杂的影像处理任务。 总之,利用Python哨兵2进行批量大气校正处理是可行的,也是一种高效和灵活的方式。同时,这也体现了Python在遥感影像处理领域的广泛应用和重要地位。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python与遥感

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值