PIE-engine 教程 ——sentinel-2影像数据去云分析(山西省为例)

简介: PIE-engine 教程 ——sentinel-2影像数据去云分析(山西省为例)

   本文我们将介绍哨兵2数据去云分析,同样是使用QA60去云,我们这里先看一下影像

Sentinel-2号是高分辨率多光谱成像卫星,携带一枚多光谱成像仪(MSI),分为2A和2B两颗卫星,其中一颗卫星的重访周期为10天,两颗互补,重访周期为5天(纬度较高的欧洲地区,仅需3天),常用于陆地监测,可提供植被、土壤和水覆盖、内陆水路及海岸区域等图像,还可用于紧急救援服务。

Sentinel-2数据集中包含的数据为L1C级产品数据,是经正射校正和亚像元级几何精校正后的大气表观反射率产品,包含13个UINT16光谱带,3个QA频段,其中一个(QA60)是具有云掩码信息的位掩码频段。

名称 中心波长(nm) 分辨率(m) 描述信息
A B
B1 443.9 442.3 60 Aerosols
B2 496.6 492.1 10 Blue
B3 560 559 10 Green
B4 664.5 665 10 Red
B5 703.9 703.8 20 Red Edge 1
B6 740.2 739.1 20 Red Edge 2
B7 782.5 779.7 20 Red Edge 3
B8 835.1 833 10 NIR
B8A 864.8 864 20 Red Edge 4
B9 945 943.2 60 Water vapor
B10 1373.5 1376.9 60 Cirrus
B11 1613.7 1610.4 20 SWIR 1
B12 2202.4 2185.7 20 SWIR 2
QA10 443.9 442.3 10 --
QA20 -- -- 20 --
QA60 -- -- 60 --
Bitmask for QA60
  • Bits 10: Opaque clouds
    • 0: No opaque clouds
    • 1: Opaque clouds present
  • Bits 11: Cirrus clouds
    • 0: No cirrus clouds
    • 1: Cirrus clouds present

影像属性:

id

string

影像名称

date

string

影像日期

cloudyPixelPercentage

double

云量覆盖百分比

代码:

var geometry0 = pie.FeatureCollection('user/xg346049806/shanxibianjie').first().geometry();
/*******************1. Sentinel-2 利用cloudyPixelPercentage属性筛选含云量**************/
var images1 = pie.ImageCollection("S2/L1C")
                .filterDate('2020-07-01', '2020-07-30')
                .filterBounds(geometry0);
print("images1",images1)
var images2 = pie.ImageCollection("S2/L1C")
                .filterDate('2020-07-01', '2020-07-30')
                .filterBounds(geometry0)
                .filter(pie.Filter.lt('cloudyPixelPercentage',5));
print("images2",images2)
//定义显示的样式
var visParam = {
    min:0,
    max:3000,
    bands:["B4","B3","B2"]
};
//分别加载不同影像
//添加云量2.66%的影像
var image = pie.Image("S2/L1C/43SED_20200701")
               .select(["B4","B3","B2"]);
Map.centerObject(image,7)
Map.addLayer(image, visParam, "2.66%Cloud");
//添加云量11.83%的影像
var image = pie.Image("S2/L1C/43SED_20200704")
               .select(["B4","B3","B2"]);
Map.addLayer(image, visParam, "11.83%Cloud");
/**********2. Sentinel-2 利用QA波段实现去云操作***************/
function maskS2clouds(image) {
  var qa = image.select("QA60");
  var cloudBitMask = 1 << 10;
  var cirrusBitMask = 1 << 11;
  var mask = qa
    .bitwiseAnd(cloudBitMask)
    .eq(0)
    .and(qa.bitwiseAnd(cirrusBitMask).eq(0));
  return image.updateMask(mask);
}
//按数据id加载Sentinel-2 MSI单景影像
var img = pie.Image("S2/L1C/43SED_20200704").select(["B4", "B3", "B2", "QA60"]);
print("img", img);
var rmCloud = maskS2clouds(img);
print("rmCloud", rmCloud);
//定位地图中心
Map.centerObject(img, 8);
//加载显示影像
Map.addLayer(
  img.select(["B4", "B3", "B2"]),
  { min: 0, max: 3000 },
  "Sen-rawImage"
);
Map.addLayer(
  rmCloud.select(["B4", "B3", "B2"]),
  { min: 0, max: 3000 },
  "Sen-rmCloud"
);

原始影像结果:

image.png

去云后影像结果:

image.png

影像去云:

image.png

利用算法进行去云后的结果:

var geometry0 = pie.FeatureCollection('user/xg346049806/shanxibianjie').first().geometry();
//************************3. Sentinel-2 算法去云 ******************/
 var S2Image = pie.ImageCollection("S2/L1C")
.filterBounds(geometry0)
.filterDate("2020-06-01","2020-06-09")
.select(["B4", "B3", "B2", "QA60"]).mosaic().clip(geometry0);
//计算云掩膜
var cloudMask = pie.Algorithm.Sentinel2.cloudMask(S2Image,"Sentinel2");
//选择2,3,4波段做掩膜运算
var S2_rm_mask = S2Image.select(["B4","B3","B2"]).updateMask(cloudMask.not());
// Sentinel2数据去云显示
var visParam = {
  min: 0,
  max: 3000
};
Map.centerObject(S2Image,8)
Map.addLayer(S2_rm_mask.select(["B4","B3","B2"]),visParam,"MaskImage");

image.png

 


相关文章
|
7月前
|
编解码 算法 定位技术
GEE时序——利用sentinel-2(哨兵-2)数据进行地表物候学分析(时间序列平滑法估算和非平滑算法代码)
GEE时序——利用sentinel-2(哨兵-2)数据进行地表物候学分析(时间序列平滑法估算和非平滑算法代码)
646 3
|
7月前
|
API
GEE案例分析——利用sentinel-3数据计算空气污染指数(Air Pollution Index,简称API)
GEE案例分析——利用sentinel-3数据计算空气污染指数(Air Pollution Index,简称API)
213 0
|
7月前
|
传感器 编解码 区块链
Google Earth Engine(GEE)——Landsat8/modis/sentinel2 NDVI时序影像差异对比分析图表
Google Earth Engine(GEE)——Landsat8/modis/sentinel2 NDVI时序影像差异对比分析图表
190 0
|
7月前
|
Java 测试技术 Nacos
|
传感器 编解码 算法
Sentinel-1的GRD和SLC数据的区别和联系
Sentinel-1的GRD和SLC数据的区别和联系
1226 1
|
7月前
|
人工智能 数据挖掘 Sentinel
Google Earth Engine ——Sentinel1/2/3/5p 影像集合介绍
Google Earth Engine ——Sentinel1/2/3/5p 影像集合介绍
125 2
|
7月前
Google Earth Engine(GEE)——Sentinel-2影像在同一区域同一时间段有多个不同的ID影像,如何进行筛选其中单景影像
Google Earth Engine(GEE)——Sentinel-2影像在同一区域同一时间段有多个不同的ID影像,如何进行筛选其中单景影像
161 0
|
Sentinel Python
使用 ChatGPT 和 Python 分析 Sentinel 2 图像
使用 ChatGPT 和 Python 分析 Sentinel 2 图像
132 0
|
XML 数据格式 Sentinel
使用GDAL读取Sentinel数据
GDAL 2.1已经原生支持对于Sentinel数据的读取,我这里使用Sentinel-2光学卫星数据给出使用GDAL工具对其进行读取的方法。 这里我们要大概知道Sentinel数据的组织。下载下来的Sentinel数据是一个ZIP压缩包,里面包含了JPEG2000格式的影像数据以及一些XML格式的元数据文件。 GDAL将Sentinel数据看做一个数据集(概念上类似HDF格式的数据集),里面包含了很多子数据文件。所以,对于Sentinel数据的读取就和对于HDF数据的读取是相同的啦。
203 0
|
资源调度 Java API
使用SNAP JAVA API处理Sentinel-1数据
SNAP软件使用Java语言开发,提供了Python接口snappy,官方教程中也多以Python接口进行示范。但是我在使用Python接口过程中,发现并不是很好用,你必须要同时懂Java语言才能很好地使用Python接口,在IDEA中使用Python接口的代码基本上没有提示,报错了也是Java的错误提示。而且,Java本来是运行在虚拟机上的语言,效率不高,再用Python包一层,更加降低了运行效率。
192 0