GEEgee遥感第一章节googleearthengine遥感云平台java数据处理遥感大数据处理_第1页
GEEgee遥感第一章节googleearthengine遥感云平台java数据处理遥感大数据处理_第2页
GEEgee遥感第一章节googleearthengine遥感云平台java数据处理遥感大数据处理_第3页
GEEgee遥感第一章节googleearthengine遥感云平台java数据处理遥感大数据处理_第4页
GEEgee遥感第一章节googleearthengine遥感云平台java数据处理遥感大数据处理_第5页
已阅读5页,还剩119页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Modell

01.HelloWorld

print('HelloWorld');

//Variables

varcity='Bengaluru";

varcountry='India';

print(city,country);

varpopulation=8400000;

print(population);

//List

varmajorCities=['Mumbai','Delhi','Chennai','Kolkata'];

print(majorCities);

//Dictionary

varcityData={

'city':city,

,population':8400000,

,elevation':930

):

print(cityData);

//Function

vargreet=function(name){

return'Hello'+name;

};

print(greet('World'));

//Thisisacomment

Inspector1*一1•Tasks

Usetowritetothisconsole.print(...)

HelloWorld

Bengaluru

India

8400000

►[*Mumbai*.*Delhi*.*Chennai*t*Kolkata*]

►Object(3properties)

HelloWorld

//excise1

//Thesearethe5largestcitiesintheworld:

//Tokyo,Delhi,Shanghai,MexicoCity,SaoPaulo

//Createalistnamed'largeCities'

//Thelistshouldhavenamesofalltheabovecities

//Printthelist

varlargeCities=['Tokyo','Delhi','Shanghai','MexicoCity'.'SaoPaulo'];

print(largeCities);

InspectorConsole

Usetowritetothisconsole,print(...)

▼List(5alomants)

0:Tokyo

1:Delhi

2:Shanghai

3:MexicoCity

4:SaoPaulo

02.图像集合WorkingwithImageCollections

从Sentinel-2,1C级页面中复制而来:

/**

*FunctiontomaskcloudsusingtheSentinel-2QAband

*@param{ee.Image}imageSentinel-2image

*@return{ee.Image}cloudmaskedSentinel-2image

*/

functionmaskS2clouds(image){

varqa=image.select('QA60'):

//Bits10and11arecloudsandcirrus,respectively.

varcloudBitMask=1«10;

varcirrusBitMask=1«11;

//Bothflagsshouldbesettozero,indicatingclearconditions.

varmask=qa.bitwiseAnd(cloudBitMask).eq(0)

.and(qa.bitwiseAnd(cirrusBitMask).eq(O));

returnimage.updateMask(mask).divide(10000);

)

//Mapthefunctionoveronemonthofdataandtakethemedian.

//LoadSentinel-2TOAreflectancedata.

vardataset=ee.lmageCollection('COPERNICUS/S2,)

.filterDatef^OlS-Ol-Ol','2018-01-31,)

//Pre-filtertogetlesscloudygranules.

flter(ee.FilteMt('CLOUDY_PIXEL_PERCENTACE',20))

.map(ma$kS2clouds);

varrgbVis={

min:0.0,

max:0.3,

bands:['B4','B3','B2'],

);

Map.setCenter(91695,38.6917,12);〃该函数采用X坐标(经度)、Y坐标(纬度)

和缩放级别参数。取代X和Y与您所在城市的坐标坐标,然后单击“运了以查

看您所在城市的图像Map.setCenter()

Map.addLayer(dataset.median(),rgbVis,'RGB');

可修改经纬度查看自身所在城市,图为广州

MHip.(114.22.544$741112);

35~p.>ddl・y««*(d・t”,t・xdL8(),rfbVls,'**>;

03.过滤FilteringImageCollections

//excise3

varShenzhen=ee.Geometry.Point([114.0545429,22.5445/41]);

vars2=ee.lmageCollection('COPERNICUS/S2_HARMONIZED');

varfiltered=s2

.filtertee.Filter.ltCCLOUDY-PIXEL-PERCENTAGE',30))

.filter(ee.Filter.date('2023-01,))

.filter(ee.Filter.bounds(shenzhen));

print{filtered.size());

y"*MnXMn■««.Oewetry.Wolfit([:11Usetowritetothiscoasoe.piiat

vacs2•C”

v«rfilter^■12

•Jilt-“2W1)》

.fliter(*«.Filt«r.eowvlt(^Mnxh»n));

prlnt(fliters.

04.马赛克、合成图像CreatingMosaicsand

CompositesfromImageCollections

//excise4

varshenzhen=ee.Geometry.Point([114.0545429,22.5445741]);

vars2=ee.lmageCollectionCCOPERNICUS/SZ.HARMONIZED');

vara={

min:0.0,

max:3000,

bands:['B4','B3','B2'],

);

varfiltered=s2.filter(ee.Filter.lt:'CL0UDY_PIXEL_PERCENTAGE',30))

.filterfee.Filter.dateCZOZl-Ol-Ol'^O?2^!^1'))

.filter(ee.Filter.bounds(shenzhen));〃过滤函数

varmosaic=filtered.mosaic。;//马赛克生成

varmedianComposite=filteredmedian。;//合/J戈

Map.center0bject(shenzhen,10);

Map.addLayer(filtered,a,'FilteredCollection');

Map.addLayer(mosaic,a,'Mosaic');

Map.addLayer(medianComposite,a,'MedianComposite');

04b.Mosaic8.and.Composhes.(comp4«te),G»1Unk▼■Run

1varshenxhetwM.Geometry.Point([114.•545429^22.5445741]);

2v«rs2=e«.Iii«cKollection(CCP[P<ICUS/S2.HARM0RIZE0);

4-vara■{

5ain:e.0«

IMX:wee,

bands:[W,B3,,82],

10v«rfiltered=52.filter(ee.Filter.lt(CLOUOV.PIxei.PERCEWTAOE',M))

11.fnxer(«<.Filter.dattC2021-eier,2e22-eier))

12.filter(ee.Filter.bound$(Shenzhen));//:146IV

13

14v«rmosaic»filtered.»»osalc();//

05.特征集合WorkingwithFeatureCollections

varadmin2=ee.FeatureCollection('FAO/GAUL_SIMPLIFIED_500m/2015/level2');

varkarnataka=admin2.filter(ee.Filter.eq('ADM2_NAME','Shenzhen'));

varvisParams={color:'red'};

Map.addLayer(karnataka,visParams,'ShenzhenDistric');

06.引入数据ImportingData

//Importthecollection

varurban=ee.FeatureCollection('users/ujavalgandhi/e2e/ghs_urban_centers');

//Visualizethecollection

Map.addLayer(urban,{color:'blue'},'UrbanAreas');

varurban=ee.FeatureCollection('users/ujavalgandhi/e2e/ghs_urban_centers');

print(urban.first());

vara=urban.filter(ee.Filter.eq(,CTR_MN_NM','China,));

//Map.addLayerfaXcolori'blue'J/Urban');

varb-a.filterfee.Filter.metadataCPlS'/greate^than',1000000));

Map.addLayerfb^colorz'blue'J/rban');

//Exercise

//Applyafiltertoselectonlylargeurbancenters

//inyourcountryanddisplayitonthemap.

//Selectallurbancentersinyourcountrywith

//apopulationgreaterthan1000000

//Hintl:Usetheproperty'CTR_MN_NM'containingcountrynames

//Hint2:Usetheproperty'P15'containing2015Population

//Exercise

//Applyafiltertoselectonlylargeurbancenters

//inyourcountryanddisplayitonthemap.

//Selectallurbancentersinyourcountrywith

//apopulationgreaterthan1000000

//Hintl:Usetheproperty'CTR_MN_NM'containingcountrynames

//Hint2:Usetheproperty'P15'containing2015Population

07.剪裁图像ClippingImages

vars2=ee.lmageCollection('COPERNICUS/S2_HARMONIZED');

varurban=ee.FeatureCollection('users/ujavalgandhi/e2e/ghs_urban_centers');

MapaddLayer(urbar),{colQired'},'lipped');

varfiltered=urban.filter(ee.Filter.eq('UC_NM_MN,,'Guangzhou'));

vargeometry=filtered.geometry();

varrgbVis={

min:0.0,

max:3000,

bands:('B4','B3','B2'],

);

varfiltered=s2.filter(ee.Hlter.lt:'CLUUUY_PixtL_PtKCtNiAbt'z3U))

.filtertee.Filter.dateCZOig-Ol-Ol','2020-01-01,))

.filter(ee.Filter.bounds(geometry));

varimage=filtered.median();

varclipped=image.clip(geometry);

Map.addLayer(clipped,rgbVis,'Clipped');

//Exercise

//Changethefiltertoyourhomecityoranyurbanareaofyourchoice

//Hint:Findthenameoftheurbancentrebyaddingthe

//'urban'layertothemapandusingInspector.

08.导出数据ExportingData

vars2=ee.lmageCollection('COPERNICUS/S2_HARMONIZED');

varurban=ee.FeatureCollection('users/ujavalgandhi/e2e/ghs_urban_centers');

varfiltered=urban.filter(ee.Filter.eq('UC_NM_MN,,'Guangzhou'));

vargeometry=filtered.geometry();

varrgbVis={

min:0.0,

max:3000,

bands:['B4','B3','B2'],

);

varfiltered=s2.filter(ee.Filter.lt:'CLOUDY_PIXEL_PERCENTAGE',30)1

.filterfee.nlter.datef7Oiy-Ul-ul','2020-01-01,))

.filter(ee.Filter.bounds(geometry));

varimage=filtered.median();

varclipped=image.clip(geometry);

Map.centerObject(geometry);

Map.addLayer(clipped,rgbVis,'Clipped');

varexportimage=clipped.select('B.*');

//Exercise

//Changethefiltertoselectyourcity

//Writetheexportfunctiontoexporttheresults

Export.image.toDrive({

image:exportimage,

description:'Guangzhou_Composite_Raw',

folder:'earthengine',

fileNamePrefix:'guangzhou_composite_raw',

region:geometry,

scale:10,

maxPixels:le9

});

作业1:

//Assignment

//ExporttheNightLightsimagesforMay,2015andMay,2020

//Workflow:

//LoadtheVIIRSNighttimeDay/NightBandCompositescollection

//Filterthecollectiontothedaterange

//Extractthe'avg_rad'bandwhichrepresentsthenighttimelights

//Cliptheimagetothegeometryofyourcity

//ExporttheresultingimageasaGeoTIFFfile.

//Hintl:

//Thereare2VIIRSNighttimeCay/Nightcollections

//Usetheonethatcorrectsforstraylight

vardataset=ee.lmageCollectionCNOAA/VIIRS/DNB/MONTHLY-Vl/VCMSLCFG')

.filter(ee.Filter.date('2015-05-01','2020-05-31,));

//Extractthe'avg_rad'bandwhichrepresentsthenighttimelights

varnighttime=dataset.select('avg_rad');

varnighttimeVis={min:0.0,max:60.0};

Map.setCenter(-77.1056,38.8904,8);

Map.addLayer(nighttime,nighttimeVis,'Nighttime');

//Thecollectioncontains1globalimagepermonth

//Afterfilteringforthemonth,therewillbeonly1imageinthecollection

//Youcanusethefollowingtechniquetoextractthatimage

//varimage=ee.lmage(filtered.first());

varurban=ee.FeatureCollection;'users/ujavalgandhi/e2e/ghs_urban_centers')

varguangzhou=urban.filter(ee.Filter.eq(,UC_NM_MN',,Guangzhou'));

vargeometry=guangzhou.geometry();

varimage=nighttime;

varimage=image.median();

varclipp=image.clip(geometry);

vara={min:0.0,max:60};

Map.centerObject(geometry);

Map.addLayer(clipp,a,'CLIP');

Export.image.toDrive({

image:clipp,

description:'Guangzhou_Composite_Raw',

folder:'earthengine,,

fileNamePrefix:'bangalore_composite_raw',

region;geometry,

scale:10,

maxPixels:le9

});

InspectorConsoleTasksI

Searchorcancelmultipletasksin

theTaskManagerM

SUBMITTEDTASKS

BGuangzhou_Composite_RawK3m

BGuangzhou_Composite_Raw11m

BGuangzhou_Composite_Raw18m

BBangalore_Composite_Visualized8m

常用集合:

vars2=ee.lmageCollection「COPERNICUS/S2_HARMONIZED');〃图像集合

varadminl=ee.FeatureCollection('FAO/GAUL_SIMPLIFIED_500m/2015/levell');〃特

征集合

可获得某个城市的地理坐标

取地理坐标

vargeometry=ee.Geometr/.Point([114,22]);

取某个城市的坐标(数据集---Filter.eq------.geometry())

varadmin2=ee.FeatureCollection('FAO/GAUL_SIMPLIFIED_500m/2015/level2,);

varfilteredAdmin2=admin2.filter(ee.Filter.eq('ADM2_NAME\'Guangzhou'));

vargeometry=filteredAdmin2.geometry();

作用:

筛选

varfilteredS2=s2

.filterfee.Filter.ltCCLOUDY.PIXEL.PERCENTAGE',35))

.filterlee.Filter.dateCZOig-Ol-Ol','2020-01-01,))

.filter(ee.Filter.bounds(geometry));

定位

Map.centerObject(geometry);

显示特定图像

Map.addLayerfndvi.clipIgeometry),ndviVis,'ndvi*);

first。函数:

在gee中,first。函数用于获取图像集合中的第一张图像。它可以用于检索图像

集合中的最早时间的图像,或者按照特定条件筛选出符合要求的第一张图像。

first。函数的使用方法如下:

image=ee.lmageCollection("XXX").first()

其中,上.||^8"。归(:甘。4)乂犬)表不一个图像集合对象,可以根据需要替换为具

体的图像集合。通过调用first。函数,可以获取该图像集合中的第一张图像。

sort()函数

在gee中,sort。函数用于对图像集合或特定维度的图像进行排序。它可以按照

指定的属性对图像进行升序或降序排序。sort。函数常用于时间序列分析、数据

可视化和特定屈性的筛选等场景。

语法如下:

、、、

sortfproperty,ascending)

、、、

其中,property表示要排序的属性,可以是图像集合中的任意属性,比如时间、

云量等;ascending表示排序方式,为布尔值,True表示升序排序,False表示降

序排序。

例如,如果要对一个图像集合按照时间进行升序排序,可以使用以下代码:

、、、

varsortedCollection=imageCollection.sortCsystemitime-Start',true);

、、、

云量:'CLOUDY_PIXEL_PERCENTAGE'

Module2:EarthEngineIntermediate

01.对象EarthEngineObjects

//Let'sseehowtotakealistofnumbersandadd1toeachelement歹ij表

varmyList=ee.List.sequence(l,10);

//Defineafunctionthattakesanumberandadds1toit

varmyFunction=function(number){

returnnumber+1;

);

print(myFunction(l));

//Re-DefineafunctionusingEarthEngineAPI

varmyFunction=function(number){

returnee.Number(number).add(l);

};

print(myFunction(l));

//Mapthefunctionofthelist

varnewList=myList.map(myFunction);

print(newList);

〃Extractingvaluefromalist

varvalue=newList.get⑷;〃选择第几个数字

print(345);

print(value);

//Casting

〃Let'strytodosomecomputationontheextractedvalue选出的数字

//varnewValue=value.addll)//Line30:value.addisnotafunction

//print(newValue)

//YougetanerrorbecauseEarthEnginedoesn'tknowwhatisthetypeof'value'

//Weneedtocastittoappropriatetypefirst

varvalue=ee.Number(value);

varnewValue=value.add(li;

print(newValue);

//Dictionary

//ConvertjavascriptobjectstoEEObjects!!!!!!

vardata={'city':'Bengaluru','population':8400000,'elevation':930};

vareeData=ee.Dictionary(data);

//Onceconverted,youcanusethemethodsfromthe

//ee.Dictionarymodule

print(eeData.get('city'));

//Dates

//Foranydatecomputation,youshoulduseee.Datemodule

vardate=ee.Date('2019-01-01');

varfutureDate=date.advance。,'year');〃可换成daymonth

print(futureDate);

InspectorTasks

AUseprintC..)towntetothisconsole.

2

U2.3.4.5.6.0.11]jsos

345

6

I

Bengalurujsas

♦Date(202001-0100:00:00)JSOS

02.计算指数CalculatingIndices

vars2=ee.lmageCollectioni'COPERNICUS/S2_HARMONIZED');

varadmin2=ee.FeatureCollection('FAO/GAUL_SIMPUFIED_500m/2015/level2');

,,

Map.addLayer(admin2/{color:'grey}/'A);

varfilteredAdmin2=admin2.filter(ee.Filter.eq('ADM2_NAME'/'Guangzhou'));

vargeometry=filteredAdmin2.geometry();

Map.centerObject(geometry);

,

varfilteredS2=s2.filter(ee.Filter.lt('CL0UDY_PIXEL_PERCENTAGE,30))

.filterlee.Filter.datel7OlS-Ol-Ol;'2020-01-01,))

.filter(ee.Filter.bounds(geometry));

varimage=filteredS2.median();

Map.addLayer(image.clip(geometry)zrgbVis,'Image');

//

varrgbVis={min:0.0,max:3000,bands:['B4'z'B3','B2']};

varndviVis={min:0,max:l,palette:['white','green']};

varndwiVis={min:0,max:0.5,palette:['white','blue']};

//normalizedDifference()expression()

//'NIR'(B8)and'RED'(B4)'GREEN'(B3)and'SWIR1'(Bll)

//CalculateNormalizedDffereneeVegetationIndex(NDVI)归一化差异植被指数

〃'NIR'(B8)and'RED'(B4)

//varndvi=image.normalizedDifference(['B8\'BA'D.renamed'ndvi']);

Map.addLayer(ndvi.clip(geometry),ndviVis,'ndvi');

//CalculateModifiedNormalizedDifferenceWaterIndex(MNDWI)归♦化差异水指

//'GREEN'(B3)and'SWIR1'(Bll)

varmndwi=image.normalizedDifferenced'BS','Bll']).rencme(['mndwi']);

Map.addLayerfmndwi.clipfgeometry),ndwiVis,'mndwi');

//CalculateSoil-adjustedVegetationIndex(SAVI)土壤调整植被指数

//1.5*((NIR-RED)/(NIR+RED+0.5))

//FortheSAVIformula,thepixelvalues像素值needtoconverted转换成to

reflectances反射率,Multiplyng乘thepixelvaluesby'scale'刻度值givesusthe

reflectancevalue

//Thescalevalueis0.0001forSentinel-2dataset

varsavi=image.expression(

'1.5*((NIR-RED)/(NIR+RED+0.5)),,{

'NIR':image.select('B8').multiply(0.0001),

'RED':image.selectfBA'I.multiplylO.OOOl),

}).rename('savi');

Map.addLayerfsavi.clipfgeometry),ndviVis,'savi');

Exercise

vars2=ee.lmageCollection「COPERNICUS/S2_HARMONIZED');

varadmin2=ee.FeatureCollection('FAO/GAUL_SIMPLIFIED_500m/2015/level2');

,

varfilteredAdmin2=admin2.filter(ee.Filter.eq('ADM2_NAME/'Guangzhou'));

vargeometry=filteredAdmin2.geometry();

Map.centerObject(geometr/);

varfilteredS2=s2.filter(ee.Filter.lt(,CLOUDY_PIXEL_PERCENTAGE,,30))

.filterlee.Filter.dateCZOig-Ol-Ol','2020-01-01,))

.filter(ee.Filter.bounds(geometry));

varimage=filteredS2.median();

varndviVis-{min:0zmax:l,palette:['white','red']};

varrgbVis={min:0.0,max:3000,bands:['B4'z'B3','B2']};

Map.addLayer(image.clip(geometry)zrgbVis,'Image');

//CalculatetheNormalizedDifferenceBuilt-UpIndex(NDEI)fortheimage

//Hint:NDBI=(SWIR1-NIR)/(SWIR1+NIR)

varndbi=image.expressionf

,(SWIR1-NIR)/(SWIR1+NIR)',{

'NIR':image.selectfBS'),

'SWIR1':image.selectCBll'),

}).rename('ndbi');

Map.addLayer(ndbi.clip(geometry),ndviVis,'ndbi');

清远市

小完市

,佛山O市1

江门市।土

o由山市

03.指数ComputationonImageCollections

vars2=ee.lmageCollectionrcOPERNICUS/SZ—HARMONIZED');〃图像集合

varadminl=ee.FeatureCollection('FAO/GAUL_SIMPLIFIED_500m/2015/levell');//^

征集合一一

//SelectanAdminlregion

varfilteredAdminl=adminl.filterfee.Filter.eqCADM^NAME','Guangdong

Sheng'));〃选择广州

vargeometry=filteredAdminl.geometry();〃获取地理位置信息

Map.centerObject(geometiv);〃确定主要地理位置

varrgbVis={min:0.0,max:3000,bands:['B4','B3','B2']};

varfilteredS2=s2.filter(ee.Filter.lt('CL0UDY_PIXEL_PERCENTAGE'/30))

.filter(ee.Filter.date('2019-01-01','2020-01-01,))

.filter(ee.Filter.bounds(geometry));〃三层筛选

varcomposite=filteredS2.median().clip(geometry);〃取中间值+剪裁---图像

c

Map.addLayerfcomposite,rgbVis,'AdminlComposite');

//WriteafunctionthatcomputesNDVIforanimageandaddsitasaband

functionaddNDVI(image){

varndvi=image.normalizedDifferenceffBS','BA'JJ.renameCndvi');

returnimage.addBands(ndvi);

}

//Mapthefunctionoverthecollection

varwithNdvi=filteredS2.map(addNDVI);

varcomposite=withNdvi.medianf);

varndviComposite=composite.select('ndvi');

varpalette=[

,

'FFFFFF;'CE7E45',DF923D'/'F1B555;'FCD163','99B718',

'74A901;'66A000',,529400;'3E8601;'207401;'056201,,

'004C00','023B01;'012E01','011D01','011301'];

varndviVis={miniO,max:0.5,palette:palette};

Map.addLayer(ndviComposite.clip(geometry),ndviVis,'ndvi');

vars2=ee.lmageCollectionl'COPERNICUS/S2_HARMONIZED,);

varadminl=ee.FeatureCollection('FAO/GAUL_SIMPUFIED_500m/2015/levell,);

//SelectanAdminlregion

varfilteredAdminl=adminl.filterlee.Filter.eqCADM^NAME','GuangdongSheng'));

vargeometry=filteredAdminl.geometry();

Map.centerObject(geometry);

varrgbVis={min:0.0,max:3000,bands:['B4'z"B3','B2']};

varfilteredS2=s2.filter(ee.Filter.lt('CL0UDY_PIXEL_PERCENTAGE'/30))

.filtertee.Filter.datet7Oig-Ol-Ol','2020-01-01,))

.filter(ee.Filter.bounds(geometry));

varcomposite=filteredS2.median().clip(geometry);

Map.addLayerfcomposite,rgbVis,'AdminlComposite');

varimage=filteredS2.median();

//CalculateNormalizedDfferenceVegetationIndex(NDVI)归•化差异植被指数

11'NIR'(B8)and'RED'(B4)normalizedDifference()expression()

varndvi=image.normalizecDifference(['B8','BA'JI.renameil'ndvi']);

varndviVis={min:O,max:l,palette:['white','green']};

Map.addLayerfndvi.clipIgeometry),ndviVis,'ndvi');

//ThisfunctioncalculatesbothNDVIandNDWIindices

//andreturnsanimagewith2newbandsaddedtotheoriginalimage,

functionaddlndices(image){

,

varndvi=image.normalizedDifference(['B8'zB4']).rename('ndvi');

varndwi=image.normalizedDifference(['B3','BS'D.renameCndwi');

returnimage.addBands(ndvi).addBands(ndwi);

}

//Mapthefunctionoverthecollection

varwithindices=filteredS2.map(addlndices);

//Composite

varcomposite=withlndices.median();

print(composite);

//Hint:Use.selectf)functiontoselectaband

varndviComposite=composite.select('ndwi');

varpalette=[

,FFFFFF','CE7E45','DF923D','F1B555','FCD163\'99B718',

,74A901;'66A000','529400;'3E8601;'207401;'056201,,

'004C00','023B01','012E01','OllDOl;'011301'];

varndviVis={min。max:0.5,palette:palette};

Map.addLayer(ndviComposite.clip(geometry),ndviVis,'ndvi2');

//Exercise

//DisplayamapofNDWIfortheregion

//Selectthe'ndwi'bandandclipitbeforedisplaying

//Useacolorpalettefrom/

◊XX

|HEXv.

Meb*

“Adobe5«ach

ColonhrMK*e»«e»i*)5M»*y

os

CSSclMSMfortfasuherw

QwmeWBM,加**Gr

Useacolorpalettefrom/

04.云遮罩CloudMasking

完整版:

vars2=ee.lmageCollection('COPERNICUS/S2_HARMONIZED');

vargeometry=ee.Geometr/.PointdllA,22]);

varfilteredS2=s2

.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',35))

.filter(ee.Filter.date('2019-01-01','2020-01-01,))

.filter(ee.Filter.bounds(geometrv));

//Sortthecollectionandpickthemostcloudyimage

vara=filteredS2.sort({

property:'CLOUDY_PIXEL_PERCENTAGE',

ascending:false

});

varimage=a.firstf);

varb={

min:0.0,

max:3000,

bands:['B4'z'B3;'B2'],

};

Map.centerObject(image);

Map.addLayer(image,b,'FullImage',false);

//WriteafunctionforCloudmasking

functionmaskclouds(image]{

varqa=image.select('QA60');

varcloudBitMask=1«10;

varcirrusBitMask=1«11;

varmask=qa.bitwiseAnd(cloudBitMask).eq(0).and(

qa.bitwiseAnd(cirrusBitMask).eq(O));

returnimage.updateMask(mask)

.selectfB.*')

.copyProperties(image,['system:time_start']);

}"

varimageMasked=ee.lmage(maskclouds(image));

Map.addLayerfimageMasked,b,'MaskedImage');

荧光显示的等同于下面这一段:

varqa=image.select('QA60');

varcloudBitMask=1«10;

varcirrusBitMask=1«11;

varmask=qa.bitwiseAnd(cloudBitMask).eq(0).and(

qa.bitwiseAnd(cirrusBitMask).eq(O));

vara=image.updateMask(mask)

.selectCB.*')

.copyPropertiesfimage,['system:time_start']);

varimageMasked=ee.lmage(a);

解析版:

vars2=ee.lmageCollectioni,COPERNICUS/S2_HARMONIZED,);//WS/g|Sf®

vargeometry=ee.Geometr/.Point([114,22]);〃选取地理坐标

varfilteredS2=s2

.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE'/35))

.filtertee.Filter.datet7Oig-Ol-Ol','2020-01-01,))

.filter(ee.Filter.bounds(geometry));〃三层筛选

//Sortthecollectionandpickthemostcloudyimage

vara=filteredS2.sort({

property:'CLOUDY_PIXEL_PERCENTAGE',

ascending:false

});//sort函数对图像进行排序按照云量升降序

varimage=a.first();〃图像集的第一张

varb={这段代码定义了一个变量b,其中包含了一些参数设置:

min:0.0,・.in:e.e:表示数嘉的最小值为0.0.

・ax::表示数据的最大值为3000.

max:3000,•bands:['W,-8J-,82):表示选择了三个波段,分别是

bands:['B4;'B3\'B21伏;'B3'和82'.这五常用于指定由1感影像中显示的波段顺序,

这里选择了红、绿.匹个波段,通常用于自然彩色显示.

);

这样的设置通常用于在可视化遥影像时指定显示的波段就DS1版序.

以满保合适的显示效果和色彩表现.在实际应用中,这些参数可以根据

Map.centerObject(image);具体需求进行,,例如丽最小值最大值或选择不同的波段姐合来

实现不同的显示效果.

Map.addLayer(image,b,'FullImage',false);

//WriteafunctionforCloudmasking

functionmaskclouds(image;{

varqa=image.selectCQA6(T);〃选择名为QA60'的波段

〃定义了用于提取云和卷云的位掩码(bitmask)

varcloudBitMask=1«10;//数字i左移io位,即在第io位上设评为3用J提取匚估日

varcirrusBitMask=1«11;〃同汨.j提取卷云伤息.

1.:这出水Mt»as«And()雷

BWtq-W这两个遥。像皿进行按位与j1作.

varmask=qa.bitwiseAnd(cloudBitMask).eq(0)这个i射向电为了m个!««■»«««*池与运现

2

qa.bitwiseAnd(cirrusBitMask).eq-*«,>:M•*»<,>防《«»1桁圻

厚的比1。发竹.炉司院屋有7M新祐代'曲心写手

//零・

returnimage.updateMask(mask)3g…":

再次送行按位与■作.这次黑格8Kcirn.Uitm.kifi行按位与

.selectCB.*')//拂作,并列《陶知8否等于零.

在Gee中,这棒的表达式通常用于选择以3开头的所有列或字段.这种语法类似于SQL

中的通配符选择.反中.•表示选择所有以特定字符或字符串开头的列或字段.

举个例子,假设有一个朗8集包含以下列:从10»/8<011丁B_col2丁C_co「.如果你使用

这样的表达式,它会选择所有以B.开头的列.即和0coi2、

在Gee中,这的语法可以用于快速选择符合特定馒式的列,而不需要逐一列出列名,特别是在有大■见需

//要处理时更为方便.

.copyPropertiesfimage,['systemitime-Start']);

)

4.return

image.updateMask(mask).select('B・♦').copyPropertie$(image,

['system:ti«e_starf]);:这段代码将生成的掩膜应用到输入影像

image上,并保留影像中所有波段(通过selectCB.-)),最后

豆制脂像的属性,包括'system:time_start'等.

//

varimageMasked=ee.lmage(maskclouds(image));

Map.addLayer(imageMasked,b,'MaskedImage');

Sentinel-2掩码功能,将其应用丁图像

ImagebeforeImageafter

cloudmaskcloudmask

应用像素级QA位掩码

在Google的Gee库中,bitwiseAnd。是一个位运算函数,用于执行按位与操作。

按位与操作是指将两个数的二进制表示中相应的位进行逻辑与运算,只有当两个

对应位都为1时,结果位才为1,否则为0。在Gee库中,bitwiseAnd。函数可以

用来对整数进行按位与操作,返回两个整数按位与的结果。

intnuml-5;//

intnum2=3;//

intresult=bitwiseAnd(numl>nuii2);

print("按位与的结果为:"+result);/.

Exercise

vars2=ee.lmageCollectionl'COPERNICUS/S2_HARMONIZED,);

vargeometry=ee.Geometr/.Point([114,22]);

〃常规选取一张特定时间特定位置的图片

varfilteredS2=s2

〃云量低于的影像

.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE'/35))35%

.filter(ee.Filter.date('2019-01-01'z'2020-01-01,))

.filter(ee.Filter.bounds(geometry));

〃选取最多云量的一张图

〃做法:先对图片根据云量从多到少排序再挑选第一张

vara=filteredS2.sort({

property:'CLOUDY_PIXEL_PERCENTAGE',

ascending:false

});

varimage=a.first();

〃定义一个可视化参数,包含图像选定的波段,控制显示的亮度范围

〃有助于直观理解影像

varrgbVis={

min:0.0,

max:3000,

bands:['B4;'B3','B2'],

);

〃将地图挪到选定照片的中间

Map.centerObject(image);

〃显示的图像是哪一张、如何显示、图层命名

//false:不立即显示图像,需要手动选择该图层

Map.addLayerfimage,rgbVis,'FullImage',false);

//不变的这个函数

functionmaskS2clouds(image){

〃选取特定波段的图像,与云的信息有关

varqa=image.select('QA60');

〃定义两个位掩码

〃云卷云

varcloudBitMask=1«10;〃在第十位上写1

varcirrusBitMask=1«11;〃在第H—位上写1

〃特定波段的图像跟云、卷云两个变量进行位运算,与。比较

varmask=qa.bitwiseAnd(cloudBitMask).eq(0).and(

qa.bitwiseAnd(cirrusBitMask).eq(O));

〃返回

returnimage.updateMask(mask)

.selectfB.*')

.copyPropertiesfimage,[,system:time_start,]);

)

〃经过处理的新图像

varimageMasked=ee.lmage(maskS2clouds(image));

〃显示出来

Map.addLayerfimageMasked,rgbVis,'MaskedImage(QA60Band),,false);

//UseGoogle'sCloudScore+Mask

//CloudScorePlus数据集中获取的Sentinel-2影像数据集。这里使用的数据集是

版本VI中的Sentinel-2Harmonized数据。

varcsPlus=

ee.lmageCollection('GOOGLE/CLOUD_SCORE_PLUS/Vl/S2_HARMONIZED');

〃获取第一幅影像的波段名称列表

varcsPlusBands=csPlus.first().bandNames();

〃LinkS2andCS+results.将Sentinel-2影像数据image与CloudScorePlus数据

集csPlus的结果进行关联

〃关联数据集+关联波段

varimageWithCs=image.linkCollection(csPlus,csPlusBands);

//FunctiontomaskpixelswithlowCS+QAscores.

〃cs+QA分数代表像素的质量或可信度评估,可在影像处理时排除质量差的像素

〃将CS+QA分数低于某个阈值的像素视为低质量数据,并将这些像素标记为无

效或屏蔽掉

functionmaskLowQA(image){

〃阈值,当质量评分大于阈值的时候认为是高质量的像素

varclearThreshold=0.65;

〃从image图像中选择cs波段来进行评分

〃mask:布尔类型的蒙版照片,标记了CS+QA分数大于等于阈值的像素为true,

低于阈值的像素为false

varmask=image.selsct('cs').

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论