利用USGS EarthExplorer 批量下载sentinel-2、landsat 8 Level1、2等影像

打开USGS  EarthExplorer网站

https://earthexplorer.usgs.gov/ (要注册登录)

                                                 选择自己的研究区 (单击鼠标左键或者放大到自己的研究区use map)

                                                                                               选择时间 

                                                                                      选择数据集及结果显示 

                                                                                            云量筛选 

                                                                                    筛选云量后结果 

                                                                                            设置 

                                                                            将100多景影像显示在一页 

                                                                                 add all results  to bulk Download

                                                                                               提交订单 

    继上一步会出现 https://earthexplorer.usgs.gov/bulk下载并安装软件

 

                                                                                      提示输入自己账号 

                                                                         显示自己提交的订单即可批量下载 

欢迎关注个人公众号

 

//********************************************************************************* //Function to mask clouds using the Sentinel-2 QA band. //********************************************************************************* function maskS2clouds(image) { var qa = image.select('QA60') // Bits 10 and 11 are clouds and cirrus, respectively. var cloudBitMask = 1 << 10; var cirrusBitMask = 1 << 11; // Both flags should be set to zero, indicating clear conditions. var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and( qa.bitwiseAnd(cirrusBitMask).eq(0)) // Return the masked and scaled data, without the QA bands. return image.updateMask(mask).divide(10000) .select("B.*") .copyProperties(image, ["system:time_start"]) } //********************************************************************************* var collection = ee.ImageCollection("COPERNICUS/S2") .filter(ee.Filter.lt("CLOUDY_PIXEL_PERCENTAGE", 10)) .filterDate('2020-01-01' ,'2020-12-31') .filterBounds(geometry) .map(maskS2clouds); var medianS2 = collection.median().clip(geometry); var NDWI = medianS2.normalizedDifference(['B3', 'B8']).rename('NDWI') var MNDWI = medianS2.normalizedDifference(['B3','B11']).rename(['MNDWI']); Export.image.toDrive({ image: NDWI, description: 'S2_NDWI', crs: "EPSG:4326", scale: 10, region: geometry, maxPixels: 1e13, folder: 'S2_NDWI' }); Export.image.toDrive({ image: MNDWI, description: 'S2_MNDWI', crs: "EPSG:4326", scale: 10, region: geometry, maxPixels: 1e13, folder: 'S2_MNDWI' }); 请你根据上述代码,给出中国2009-2018年的NDWI100m分辨率使用上述方法下载的代码
最新发布
04-02
<think>好的,用户想要修改现有的Google Earth Engine代码,生成中国地区2009至2018年的NDWI指数图像集合,设置分辨率为100米,并导出到Google Drive。首先,我需要确定用户提到的现有代码是指哪一个引用中的。根据提供的引用,引用[2]和[4]都涉及NDWI计算,可能用户参考的是这些代码。 首先,NDWI的计算通常使用绿光波段和近红外波段,比如在Landsat中,SR_B3和SR_B5(对于Landsat 8)。但用户需要100米分辨率的数据,这可能意味着需要选择合适的数据源。Landsat数据的分辨率通常是30米,而MODIS则有更高分辨率的数据吗?不,MODIS的NDWI产品一般是250米或500米,可能不够。或者用户可能希望重采样到100米?需要明确数据源。或者用户可能指的是Sentinel-2数据,其分辨率是10米,但时间范围可能覆盖2015年以后,而用户需要从2009年开始。这时候可能需要使用Landsat数据,然后通过重采样到100米,或者使用其他数据集。 检查引用中的代码,引用[2]使用的是Landsat 5的SR数据,其中计算NDWI的波段是B2和B4,而引用[4]使用的是Landsat 8的TOA数据,波段为B3和B5。但用户的时间范围是2009-2018年,覆盖了Landsat 5(到2012年)和Landsat 8(从2013年开始)。可能需要合并多个Landsat数据集,比如包括Landsat 5、7、8的Collection 2表面反射率数据,以确保时间覆盖。 接下来,用户需要生成中国区域的NDWI图像集合,并设置分辨率为100米。可能需要在计算NDWI后,使用reproject()或者resample()来调整分辨率,或者在导出时指定scale参数为100米。同时,导出到Google Drive需要注意导出方法,可能使用Export.image.toDrive,但需要处理每个影像或者将整个集合批量导出。 现在,步骤大致分为:选择合适的数据集(时间范围覆盖2009-2018,中国区域),定义NDWI计算函数,过滤时间和空间,处理分辨率,导出结果。需要注意不同Landsat卫星的波段名称差异,比如Landsat 5的绿光波段是SR_B2,近红外是SR_B4,而Landsat 8的绿光是SR_B3,近红外是SR_B5。需要统一处理这些差异,可能需要根据影像的元数据判断卫星类型,或者合并不同集合。 或者,使用Landsat的联合集合,比如使用Landsat表面反射率的联合集合(比如USGS Landsat 8 Collection 2 Tier 1和类似的Landsat 5/7)。例如,在GEE中可以使用'LANDSAT/LT05/C02/T1_L2'(Landsat 5)、'LANDSAT/LE07/C02/T1_L2'(Landsat 7)和'LANDSAT/LC08/C02/T1_L2'(Landsat 8)的组合,然后进行时间过滤。 然后,计算NDWI的函数需要根据不同的卫星调整波段名称。例如,对于Landsat 5和7,绿光波段是SR_B2,近红外是SR_B4;对于Landsat 8,绿光是SR_B3,近红外是SR_B5。可以在函数中通过卫星的编号(如从影像ID中提取)来判断使用哪个波段,或者使用影像的属性来区分。 另外,需要考虑云遮蔽的问题。用户是否需要应用云掩膜?例如,使用QA波段或现有的云掩膜函数。在引用[2]中没有处理云,但引用[3]提到影像修复可能涉及云处理。所以可能需要添加云掩膜步骤,以提高NDWI的准确性。 接下来,设置分辨率为100米。这可能需要在计算NDWI后,使用reproject()方法,或者在导出时设置scale参数为100米。注意,GEE在处理导出时,scale参数决定了输出的分辨率,所以可能需要在导出时指定scale: 100,同时确保投影正确。 另外,中国区域的边界需要使用GEE中的FeatureCollection,例如'users/giswqs/public/countries'中的中国几何,或者用户自己上传的Shapefile。在代码中需要定义区域为中国的几何边界,并应用到过滤器中。 时间范围是2009-2018年,需要设置date过滤器,从2009-01-01到2018-12-31。 对于导出,可能需要将整个ImageCollection批量导出,或者按时间分片导出。由于导出整个集合可能效率较低,可能需要对每个影像进行循环,逐个导出。或者,如果进行合成(如年最大NDWI),则可以减少数据量。 现在,整合这些步骤,编写代码的大致结构: 1. 定义中国区域的几何。 2. 加载Landsat 5/7/8的Surface Reflectance集合,合并。 3. 过滤时间和区域。 4. 应用云掩膜。 5. 定义计算NDWI的函数,根据卫星类型选择波段。 6. 映射计算NDWI到每个影像。 7. 可选:进行合成(如按月或年合成最大NDWI)。 8. 设置分辨率为100米(可能通过reproject或导出时的scale参数)。 9. 导出到Google Drive,可能需要批量导出或合成后导出。 例如,代码可能如下: ```javascript // 定义中国边界 var china = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017') .filter(ee.Filter.eq('country_na', 'China')); // 定义时间范围 var startDate = '2009-01-01'; var endDate = '2018-12-31'; // 加载Landsat 5、7、8的Surface Reflectance集合 var l5 = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2') .filterDate(startDate, '2012-05-01'); // Landsat 5于2012年停止 var l7 = ee.ImageCollection('LANDSAT/LE07/C02/T1_L2') .filterDate('1999-01-01', endDate); var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') .filterDate('2013-04-01', endDate); // 合并三个集合 var landsatCollection = l5.merge(l7).merge(l8) .filterBounds(china) .filterDate(startDate, endDate); // 云掩膜函数 function maskClouds(image) { var qa = image.select('QA_PIXEL'); var cloudMask = qa.bitwiseAnd(1 << 3).or(qa.bitwiseAnd(1 << 4)); return image.updateMask(cloudMask.not()); } // 应用云掩膜 var landsatMasked = landsatCollection.map(maskClouds); // NDWI计算函数(根据卫星类型选择波段) function calcNDWI(image) { var sensor = ee.String(image.get('SPACECRAFT_ID')); var greenBand = sensor.match('LANDSAT_5|LANDSAT_7').length() ? 'SR_B2' : 'SR_B3'; var nirBand = sensor.match('LANDSAT_5|LANDSAT_7').length() ? 'SR_B4' : 'SR_B5'; var ndwi = image.normalizedDifference([greenBand, nirBand]).rename('NDWI'); return image.addBands(ndwi); } // 计算NDWI var withNDWI = landsatMasked.map(calcNDWI); // 选择NDWI波段并设置分辨率 var ndwiCollection = withNDWI.select('NDWI') .map(function(image) { return image.reproject({crs: 'EPSG:4326', scale: 100}); }); // 导出到Google Drive(示例导出一年中最清晰的影像) var years = ee.List.sequence(2009, 2018); years.evaluate(function(yrs) { yrs.forEach(function(year) { year = ee.Number(year); var annualNDWI = ndwiCollection.filter(ee.Filter.calendarRange(year, year, 'year')) .median(); // 使用中值合成 Export.image.toDrive({ image: annualNDWI, description: 'NDWI_China_' + year.getInfo(), folder: 'GEE_NDWI_Exports', region: china.geometry(), scale: 100, maxPixels: 1e13, crs: 'EPSG:4326' }); }); }); ``` 可能的注意事项: - 需要处理不同卫星之间的波段差异,可能需要更精确的判断。 - 云掩膜可能需要根据不同的Landsat版本的QA波段进行调整。 - 合成方法可能需要调整,比如使用最大值合成来保留水体信息。 - 导出方式可能需要分批处理,避免超过GEE的导出限制。 - 分辨率设置是否正确,可能需要验证投影和重采样的方法是否正确。 - 时间范围是否正确覆盖,尤其是Landsat 5和7、8的可用时间。 用户可能需要进一步测试和调整参数,例如NDWI的阈值,合成方法,以及处理可能的数据空缺(如某些时间段无数据)。</think>以下是针对中国地区2009-2018年NDWI指数计算与导出的Google Earth Engine脚本修改方案: ```javascript // 定义中国边界(使用FAO国家边界数据集) var china = ee.FeatureCollection("FAO/GAUL/2015/level0") .filter(ee.Filter.eq('ADM0_NAME', 'China')); // 定义时间范围 var startDate = '2009-01-01'; var endDate = '2018-12-31'; // 加载Landsat系列数据 var l5 = ee.ImageCollection('LANDSAT/LT05/C02/T1_L2') .filterDate('2009-01-01', '2011-12-31'); var l7 = ee.ImageCollection('LANDSAT/LE07/C02/T1_L2') .filterDate('2012-01-01', '2013-03-30'); var l8 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') .filterDate('2013-04-01', '2018-12-31'); // 合并数据集并进行预处理 var landsatCol = l5.merge(l7).merge(l8) .filterBounds(china) .map(function(image) { // 云掩膜处理[^3] var qa = image.select('QA_PIXEL'); var cloud = qa.bitwiseAnd(1 << 3).or(qa.bitwiseAnd(1 << 4)); return image.updateMask(cloud.not()); }); // 定义NDWI计算函数 var calcNDWI = function(image) { var sensor = ee.String(image.get('SPACECRAFT_ID')); var bands = sensor.match('LANDSAT_8').length() ? ['SR_B3', 'SR_B5'] : ['SR_B2', 'SR_B4']; var ndwi = image.normalizedDifference(bands).rename('NDWI'); return image.addBands(ndwi); }; // 应用NDWI计算并设置分辨率 var ndwiCol = landsatCol.map(calcNDWI) .select('NDWI') .map(function(image) { return image.reproject({ crs: 'EPSG:4326', scale: 100 }); }); // 按年度合成并导出 for (var y = 2009; y <= 2018; y++) { var annualNDWI = ndwiCol.filter(ee.Filter.calendarRange(y, y, 'year')) .median(); Export.image.toDrive({ image: annualNDWI, description: 'China_NDWI_' + y, folder: 'NDWI_China', region: china.geometry(), scale: 100, maxPixels: 1e13, crs: 'EPSG:4326', fileFormat: 'GeoTIFF' }); } ``` §§关键修改说明§§ 1. **数据源整合**:合并Landsat 5/7/8系列数据,通过`SPACECRAFT_ID`属性自动识别传感器类型[^2] 2. **分辨率控制**:使用`reproject()`方法强制设定100米分辨率输出 3. **时间连续性**:分段处理不同卫星的运行周期,确保2009-2018全覆盖 4. **质量控制**:采用QA_PIXEL波段进行云掩膜处理 5. **批量导出**:采用循环结构实现年度合成影像自动导出
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值