问题如题,目前需要使用GEE批量下载逐日的北京地区的MAIAC AOD数据,下载的时候需要进行质量控制,本人GEE刚入门,希望能提供有效答案(不要使用GPT进行回答)
前面没有看到你的评论,我写了篇文章希望能帮到你 https://blog.csdn.net/weixin_42182090/article/details/129677522
该回答由OKX安生编写:
该回答由OKX安生编写:
你可以使用 Google Earth Engine Python API 进行批量下载逐日的北京地区的 MAIAC AOD 数据,并进行质量控制。具体步骤如下:
用于下载 2020 年 1 月份的 MAIAC AOD 数据,并进行质量控制:
import ee
ee.Authenticate()
ee.Initialize()
# 定义需要下载的日期范围和地理范围
start_date = '2020-01-01'
end_date = '2020-01-31'
geometry = ee.Geometry.Rectangle([115.70, 39.40, 117.30, 41.00])
# 获取数据集
dataset = ee.ImageCollection('MODIS/006/MYD08_D3') \
.filterDate(start_date, end_date) \
.select('AOD_550_Dark_Target_Deep_Blue_Combined')
# 针对每一天的数据进行质量控制并下载
for i in range(31):
date = start_date[:8] + str(i+1).zfill(2)
image = dataset.filterMetadata('system:index', 'equals', date).first()
cloud_mask = ee.Algorithms.Landsat.simpleCloudScore(image).select(['cloud']).lt(10)
filtered_image = image.updateMask(cloud_mask)
task = ee.batch.Export.image.toDrive(
image=filtered_image.clip(geometry),
description='MAIAC_AOD_' + date,
folder='MAIAC_AOD',
scale=500,
region=geometry,
maxPixels=int(1e13)
)
task.start()
在这个代码中,我首先使用 ee.ImageCollection.filterDate() 方法来获取 2020 年 1 月份的数据集,并选择了 AOD_550_Dark_Target_Deep_Blue_Combined 变量。接着,我们使用 ee.Geometry.Rectangle() 方法来定义了需要下载的北京地区的范围。然后,我们使用 for 循环针对每一天的数据进行质量控制,并使用 ee.batch.Export.image.toDrive() 方法将筛选后的结果保存到 Google Drive 中。
参考GPT和自己的思路:
您好,针对您的问题,以下是一些可能有帮助的答案:
import ee
ee.Initialize()
# 设置范围(这里以北京为例)
aoi = ee.Geometry.Polygon([[115.5, 41.7], [117.5, 41.7], [117.5, 40.3], [115.5, 40.3], [115.5, 41.7]])
# 设置时间范围
start_date = ee.Date('2021-01-01')
end_date = ee.Date('2021-01-31')
# 选择需要下载的影像并进行质量控制
image_collection = ee.ImageCollection('MODIS/006/MCD19A2_GRANULES') \
.filterBounds(aoi) \
.filterDate(start_date, end_date) \
.select(['Optical_Depth_047', 'quality_flag']) \
.map(lambda img: img.updateMask(img.select('quality_flag').eq(0)))
# 批量下载影像
task_list = ee.batch.Export.image.toDrive(image_collection, 'test_image', scale=500, region=aoi.getInfo()['coordinates'])
以上仅是一个简单的示例代码,具体细节需要根据实际情况进行修改。希望对您有所帮助,如有不明白的地方欢迎随时提问。
代码中的变量start_date和end_date分别代表需要下载的数据的起始日期和结束日期。代码中的变量aoi代表需要下载的区域,这里是北京市。代码中的变量quality_band代表需要进行质量控制的波段,这里是quality_flag。代码中的变量output_folder代表您需要将数据下载到的文件夹。
这里只获得了北京的部分区域,如果你想要获得北京全部区域的,你需要自己上传北京的矢量数据作为roi;
var start_date = '2022-01-01';
var end_date = '2022-12-31';
var aoi = ee.Geometry.Point([116.4074, 39.9042]).buffer(10000);
var quality_band = 'quality_flag';
var output_folder = 'MAIAC_AOD';
var collection = ee.ImageCollection('MODIS/006/MCD19A2_GRANULES')
.filterBounds(aoi)
.filterDate(start_date, end_date)
.select('AOD_550_Dark_Target_Deep_Blue_Combined')
.map(function(image) {
var quality = image.select(quality_band);
var mask = quality.eq(0);
return image.updateMask(mask);
});
print('影像数量有: ', collection.size());
var export_collection = function(collection, folder, scale, crs) {
var list = collection.toList(collection.size());
var n = list.size().getInfo();
for (var i = 0; i < n; i++) {
var image = ee.Image(list.get(i));
var id = image.id().getInfo();
var name = id.replace(/[^0-9]/g, '');
var description = id;
var region = image.geometry().bounds().getInfo()['coordinates'];
Export.image.toDrive({
image: image,
description: description,
folder: folder,
fileNamePrefix: name,
region: region,
scale: scale,
crs: crs
});
}
};
export_collection(collection, output_folder, 500, 'EPSG:4326');