Algorithm
# 简介
算法(Algorithm)针对特定卫星影像(包括但不限于哨兵1/2号、Lansat8、葵花8、风云4A、高分3)提供专用算法。
# Himawari8
针对葵花8(Himawari8)数据的显示和专题产品合成算法集。
# AOT
葵花8数据的气溶胶光学厚度产品算法,返回气溶胶Image。
函数 | 返回值 |
---|---|
AOT(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的葵花8影像数据 |
//选择葵花8数据
var filter = pie.Filter.calendarRange(11, 12,"hour");
var imageCollection = pie.ImageCollection("H08/AHI-L1-G").filter(filter);
var image = imageCollection.first();
//计算AOT
var AOT = pie.Algorithm.Himawari8.AOT(image).select("B1");
//默认分级
var visParam= {
min: 0.05,
max: 1.5,
opacity:1,
palette: '00ff7f,ffff00,de9037,dd104e,b0287c,9c3741'
};
Map.setCenter(108.92, 34.54, 4);
Map.addLayer(AOT,visParam);
var data = {
title: "AOT",
colors: ["#00ff7f","#ffff00","#de9037","#dd104e","#b0287c","#9c3741"],
labels: ["0-0.3","0.3-0,55","0.55-0.8","0.8-1.05","1.05-1.3","1.3-1.5"],
step: 1
};
var style = {
left: "75%",
top: "75%",
height: "70px",
width: "350px"
};
var legend = ui.Legend(data, style);
Map.addUI(legend);
# cloudMask
葵花8数据的云掩膜算法,返回云掩膜Image,云值为1,其余为0。
函数 | 返回值 |
---|---|
cloudMask(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的葵花8影像数据 |
//选择葵花8数据
var image_H8 = pie.ImageCollection("H08/AHI-L1-G").first();
//计算云掩膜
var cloudMask = pie.Algorithm.Himawari8.cloudMask(image_H8);
//选择前3个波段做掩膜运算
var image_rm_cloud = image_H8.select(["B1","B2","B3"]).updateMask(cloudMask.eq(0));
var visParam = {
min: 0,
max: 3000,
bands: ["B3","B2","B1"]
};
// 添加到地图
Map.addLayer(image_rm_cloud.select(["B1","B2","B3"]),visParam);
# legend
葵花8数据的RGB合成图例,目前支持气团模式、夜间云微物理模式、白天云微物理模式、白天对流风暴模式等。
函数 | 返回值 |
---|---|
legend(type) | Legend |
参数 | 类型 | 说明 |
---|---|---|
type | String | 合成类型字符标识,主要包括: Airmass:气团模式 Night_Microphysics:夜间云微物理模式 Day_Microphysics:白天云微物理模式 Day_Convective_Storms:白天对流风暴模式 |
// 添加渲染图例
var legend = pie.Algorithm.Himawari8.legend("Airmass");
Map.addLegend("气团", legend.labels, legend.colors, legend.infos);
# PM25
葵花8数据的PM2.5产品算法,返回PM2.5 Image。
函数 | 返回值 |
---|---|
PM25(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的葵花8影像数据 |
//选择葵花8数据
var filter = pie.Filter.calendarRange(11, 12,"hour");
var imageCollection = pie.ImageCollection("H08/AHI-L1-G").filter(filter);
var image = imageCollection.first();
//计算pm2.5
var PM25 = pie.Algorithm.Himawari8.PM25(image).select("B1");
//分级
var visParam = {
opacity:1,
classify:'35,75,115,150,250,500',
palette: '00ff7f,ffff00,de9037,dd104e,b0287c,9c3741'
};
Map.setCenter(108.92, 34.54, 4);
Map.addLayer(PM25,visParam);
//图例
var data = {
title: "PM2.5(ug/m3)",
colors: ["#00ff7f","#ffff00","#de9037","#dd104e","#b0287c","#9c3741"],
labels: ["优","良","轻度污染","中度污染","重度污染","严重污染"],
step: 1
};
var style = {
left: "75%",
top: "75%",
height: "70px",
width: "350px"
};
var legend = ui.Legend(data, style);
Map.addUI(legend);
# PM100
葵花8数据的PM10产品算法,返回PM10 Image。
函数 | 返回值 |
---|---|
PM100(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的葵花8影像数据 |
//选择葵花8数据
var filter = pie.Filter.calendarRange(11, 12,"hour");
var imageCollection = pie.ImageCollection("H08/AHI-L1-G").filter(filter);
var image = imageCollection.first();
//计算pm10
var PM100 = pie.Algorithm.Himawari8.PM100(image).select("B1");
//默认分级
var visParam = {
min: 32,
max: 38,
opacity:1,
palette: '00ff7f,ffff00,de9037,dd104e,b0287c,9c3741'
};
Map.setCenter(108.92, 34.54, 4);
Map.addLayer(PM100,visParam);
var data = {
title: " PM10(ug/m3)",
colors: ["#00ff7f","#ffff00","#de9037","#dd104e","#b0287c","#9c3741"],
labels: ["优","良","轻度污染","中度污染","重度污染","严重污染"],
step: 1
};
var style = {
left: "75%",
top: "75%",
height: "70px",
width: "350px"
};
var legend = ui.Legend(data, style);
Map.addUI(legend);
# rgb
葵花8数据的多模式的RGB合成算法,返回合成后的影像Image,目前支持气团模式、夜间云微物理模式、白天云微物理模式、白天对流风暴模式、沙尘模式、对流云模式、强风暴模式、山火灰模式、积雪雾模式、自然色模式和真彩色模式等。
函数 | 返回值 |
---|---|
rgb(image,type) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的葵花8影像数据 |
type | String | 合成类型字符标识,主要包括: Airmass:气团模式 Night_Microphysics:夜间云微物理模式 Day_Microphysics:白天云微物理模式 Day_Convective_Storms:白天对流风暴模式 Dust:沙尘模式 Clouds_Convection:对流云模式 Severe_Storm:强风暴模式 Ash:山火灰模式 Snow_Fog:积雪、雾模式 Natural:自然色模式 TrueColor:真彩色模式 |
var imageCollection = pie.ImageCollection("H08/AHI-L1-G");
var filter = pie.Filter.calendarRange(11, 12,"hour");
var images_result = imageCollection.filter(filter);
var imageRGB = pie.Algorithm.Himawari8.rgb(images_result.getAt(0),"Airmass");
Map.addLayer(imageRGB, {min:0,max:255}, "LayerRGB", true);
var legend = pie.Algorithm.Himawari8.legend("Airmass");
Map.addLegend("气团", legend.labels, legend.colors, legend.infos);
Map.setCenter(112.6, 32.5, 2);
# sst
葵花8数据的海表温度产品提取算法,返回海温影像Image。
函数 | 返回值 |
---|---|
sst(image,type) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的葵花8影像数据 |
// 影像海表温度产品生成,并加载到地图
var image = pie.ImageCollection('H08/AHI-L1-G').first();
var imageSST = pie.Algorithm.Himawari8.sst(image);
var visParam = {
opacity:0.8,
classify:'0,' +
'0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10,' +
'10.5,11,11.5,12,12.5,13,13.5,14,14.5,15,15.5,16,16.5,17,17.5,18,18.5,19,19.5,20,' +
'20.5,21,21.5,22,22.5,23,23.5,24,24.5,25,25.5,26,26.5,27,27.5,28,28.5,29,29.5,30,' +
'30.5,31',
palette: '00008B,' +
'000097,0000AF,0000BB,0000C7,0000DF,0000EC,0000F8,0010FF,001CFF,0028FF,0040FF,004CFF,0058FF,0070FF,007CFF,0087FF,0093FF,00ABFF,00B7FF,00C3FF,' +
'00DBFF,00E7FF,00F3FF,0cFFF8,18FFEC,24FFDF,3CFFC7,48FFBB,54FFAF,6CFF97,78FF8B,83FF80,8FFF74,A7FF5C,B3FF50,BFFF44,D7FF2C,E3FF1F,EFFF14,FFFB00,' +
'FFEF00,FFE300,FFCB00,FFBF00,FFB300,FF9B00,FF8F00,FF8300,FF7800,FF6000,FF5400,FF4800,FF3000,FF2400,FF1800,FF0000,F30000,E70000,CF0000,C30000,' +
'B70000,9F0000'
};
Map.addLayer(imageSST,visParam,"SST", true);
Map.setCenter(112.6, 32.5, 2);
# LandSat8
针对LandSat8数据的显示和专题产品合成算法集。
# cloudMask
LandSat8数据的云掩膜算法,返回云掩膜Image,云值为1,其余为0。
函数 | 返回值 |
---|---|
cloudMask(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的LandSat8影像数据 |
//选择LandSat8数据
var LC8Image = pie.Image("LC08/01/T1/LC08_121031_20171117");
//计算云掩膜
var cloudMask = pie.Algorithm.Landsat8.cloudMask(LC8Image);
//选择2,3,4波段做掩膜运算
var LC8_rm_cloud = LC8Image.select(["B4","B3","B2"]).updateMask(cloudMask.eq(0));
// Landsat8数据去云显示
var visParam = {
min: 0,
max: 3000,
bands: ["B4","B3","B2"]
};
Map.addLayer(LC8_rm_cloud.select(["B4","B3","B2"]),visParam,"MaskImage");
Map.setCenter(120.190, 41.694, 6);
# Sentinel1
针对Sentinel1数据的显示和专题产品合成算法集。
# coastlineExtract
海岸线提取算法,返回二值图Image,陆地为1,海洋为0。
函数 | 返回值 |
---|---|
coastlineExtract(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 海洋陆地二值图Image,陆地为1,海洋为0 |
参考GF3下的coastlineExtract用法
# shipDetection
舰船检测算法,返回二值图Image,舰船为0值的矩形框。
函数 | 返回值 |
---|---|
shipDetection(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 舰船二值图Image,舰船为0值的矩形框 |
参考GF3下的shipDetection用法。
# Sentinel2
针对哨兵2(Sentinel2)数据的显示和专题产品合成算法集。
# cloudMask
Sentinel2数据的云掩膜算法,返回云掩膜Image,云值为1,其余为0。
函数 | 返回值 |
---|---|
cloudMask(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的Sentinel2影像数据 |
var S2Image = pie.Image("S2/L1C/43SED_20200704");
//计算云掩膜
var cloudMask = pie.Algorithm.Sentinel2.cloudMask(S2Image,"Sentinel2");
//选择2,3,4波段做掩膜运算
var S2_rm_mask = S2Image.select(["B4","B3","B2"]).updateMask(cloudMask.eq(0));
// Sentinel2数据去云显示
var visParam = {
min: 0,
max: 3000,
bands: ["B4","B3","B2"]
};
Map.addLayer(S2_rm_mask.select(["B4","B3","B2"]),visParam,"MaskImage");
Map.centerObject(S2Image,8);
# GF-3
针对高分三号(GF3)数据的显示和专题产品合成算法集。
# coastlineExtract
海岸线提取算法,返回二值图Image,陆地为1,海洋为0。
函数 | 返回值 |
---|---|
coastlineExtract(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 海洋陆地二值图Image,陆地为1,海洋为0 |
//选择影像
var image = pie.Image('user/101/public/Raster/GF3_FSII').select('B1');
//加载影像
Map.addLayer(image, { min: 0, max: 0.3 });
//海岸线提取
var result = pie.Algorithm.GF3.coastlineExtract(image);
//加载二值图结果
Map.addLayer(result, { palette: '2D8CF0' }, "coastline");
Map.setCenter(113.792, 22.503, 8);
# shipDetection
舰船检测算法,返回二值图Image,舰船为0值的矩形框。
函数 | 返回值 |
---|---|
shipDetection(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 舰船二值图Image,舰船为0值的矩形框 |
//选择影像
var image = pie.Image('user/101/public/Raster/GF3_FSII').select('B1');
//加载影像
Map.addLayer(image, { min: 0, max: 0.3 });
//海岸线提取
var result = pie.Algorithm.GF3.shipDetection(image);
//加载二值图结果
Map.addLayer(result, { palette: 'FF0000' }, "ship");
Map.setCenter(113.792, 22.503, 8);
# FY4A
针对风云4A(FY4A)数据的显示和专题产品合成算法集。
# AOT
FY4A数据的气溶胶光学厚度产品算法,返回气溶胶Image。
函数 | 返回值 |
---|---|
AOT(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的FY4A影像数据 |
//选择FY4A数据
var image= pie.ImageCollection("FY4A/AGRI/L1").first();
//计算AOT
var AOT = pie.Algorithm.FY4A.AOT(image).select("B1");
//默认分级
var visParams = {
min: 0.05,
max: 1.5,
opacity: 1,
palette: '00ff7f,ffff00,de9037,dd104e,b0287c,9c3741'
};
Map.setCenter(108.92, 34.54, 2);
Map.addLayer(AOT,visParams);
var data = {
title: "AOT",
colors: ["#00ff7f","#ffff00","#de9037","#dd104e","#b0287c","#9c3741"],
labels: ["0-0.3","0.3-0,55","0.55-0.8","0.8-1.05","1.05-1.3","1.3-1.5"],
step: 1
};
var style = {
left: "75%",
top: "75%",
height: "70px",
width: "350px"
};
var legend = ui.Legend(data, style);
Map.addUI(legend);
# cloudMask
FY4A数据的云掩膜算法,返回云掩膜Image,云值为1,其余为0。
函数 | 返回值 |
---|---|
cloudMask(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的FY4A影像数据 |
//获取9点-10点的风云4A数据中的第8景
var filter = pie.Filter.calendarRange(9, 10,"hour");
var image = pie.ImageCollection("FY4A/AGRI/L1").filter(filter).getAt(8);
//进行去云处理后加载显示
var imageCloud = pie.Algorithm.FY4A.cloudMask(image)
var img = image.select(["B1","B2","B3"]).updateMask(imageCloud.eq(0));
Map.addLayer(img, {min:0, max: 3000},"cloudMask");
Map.setCenter(112.6, 32.5, 2);
# PM25
FY4A数据的PM2.5产品算法,返回PM2.5 Image。
函数 | 返回值 |
---|---|
PM25(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的FY4A影像数据 |
var filter = pie.Filter.calendarRange(9, 10,"hour");
var image = pie.ImageCollection("FY4A/AGRI/L1").filter(filter).getAt(10);
var PM25 = pie.Algorithm.FY4A.PM25(image).select("B1");
var visParam = {
opacity:1,
classify:'35,75,115,150,250,500',
palette: '00ff7f,ffff00,de9037,dd104e,b0287c,9c3741'
};
Map.setCenter(108.92, 34.54, 4);
Map.addLayer(PM25,visParam);
var data = {
title: "PM2.5(ug/m3)",
colors: ["#00ff7f","#ffff00","#de9037","#dd104e","#b0287c","#9c3741"],
labels: ["优","良","轻度污染","中度污染","重度污染","严重污染"],
step: 1
};
var style = {
left: "75%",
top: "75%",
height: "70px",
width: "350px"
};
var legend = ui.Legend(data, style);
Map.addUI(legend);
# PM100
FY4A数据的PM10产品算法,返回PM10 Image。
函数 | 返回值 |
---|---|
PM100(image) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的FY4A影像数据 |
var filter = pie.Filter.calendarRange(9, 10,"hour");
var image = pie.ImageCollection("FY4A/AGRI/L1").filter(filter).getAt(10);
var PM100 = pie.Algorithm.FY4A.PM100(image).select("B1");
var visParam = {
min: 32,
max: 38,
opacity:1,
palette: '00ff7f,ffff00,de9037,dd104e,b0287c,9c3741'
};
Map.setCenter(108.92, 34.54, 4);
Map.addLayer(PM100,visParam);
var data = {
title: " PM10(ug/m3)",
colors: ["#00ff7f","#ffff00","#de9037","#dd104e","#b0287c","#9c3741"],
labels: ["优","良","轻度污染","中度污染","重度污染","严重污染"],
step: 1
};
var style = {
left: "75%",
top: "75%",
height: "70px",
width: "350px"
};
var legend = ui.Legend(data, style);
Map.addUI(legend);
# rgb
风云4A(FY4A)数据的多模式的RGB合成算法,返回合成后的影像Image,目前支持气团模式、夜间云微物理模式、白天云微物理模式、白天对流风暴模式、沙尘模式、对流云模式、强风暴模式、山火灰模式、积雪雾模式、自然色模式等。
函数 | 返回值 |
---|---|
rgb(image,type) | Image |
参数 | 类型 | 说明 |
---|---|---|
image | Image | 要进行计算的FY4A影像数据 |
type | String | 合成类型字符标识,主要包括: Airmass:气团模式 Night_Microphysics:夜间云微物理模式 Day_Microphysics:白天云微物理模式 Day_Convective_Storms:白天对流风暴模式 Dust:沙尘模式 Clouds_Convection:对流云模式 Severe_Storm:强风暴模式 Ash:山火灰模式 Snow_Fog:积雪、雾模式 Natural:自然色模式 |
// 影像RGB模式渲染,并加载到地图
var imageCollection = pie.ImageCollection("FY4A/AGRI/L1");
var filter = pie.Filter.calendarRange(11, 12,"hour");
var images_result = imageCollection.filter(filter);
var imageRGB = pie.Algorithm.FY4A.rgb(images_result.getAt(0),"Airmass");
Map.addLayer(imageRGB, {min:0,max:255}, "LayerRGB", true);
// 添加渲染图例
var legend = pie.Algorithm.Himawari8.legend("Airmass");
Map.addLegend("气团", legend.labels, legend.colors, legend.infos);
// 设置地图显示范围
Map.setCenter(112.6, 32.5, 2);
# snowPercent
风云4A数据的积雪百分比产品算法,返回积雪百分比结果影像。
函数 | 返回值 |
---|---|
snowPercent(input , landuseFile, cloudMask) | Image |
参数 | 类型 | 说明 |
---|---|---|
input | Image | 要进行计算的FY4A影像数据 |
landuseFile | Image | 土地利用类型影像数据,如MCD12C1数据 |
cloudMask | Image | 云掩膜影像数据,默认为null |
var filter = pie.Filter.calendarRange(9, 10,"hour");
var image = pie.ImageCollection("FY4A/AGRI/L1").filter(filter).getAt(10);
var imageLanduse = pie.Image('user/pieadmin/public/Raster/MCD12C1').select("B1");
var result=pie.Algorithm.FY4A.snowPercent(image,imageLanduse);
var visParam = {
min: 0,
max: 1,
opacity:1,
palette: 'E0F8F7,A9F5F2,81F7F3,58FAF4,2EFEF7,00FFFF'
};
var visParamFy = {
min: [20,0,342],
max: [10102,4320,5352],
opacity:0.9,
bands:["B3","B6","B5"]
};
Map.addLayer(result,visParam);
Map.addLayer(image.select(["B3","B6","B5"]), visParamFy, "Layer", true);