GEE批量下载逐日北京市地区的MAIAC AOD数据,并进行控制

问题如题,目前需要使用GEE批量下载逐日的北京地区的MAIAC AOD数据,下载的时候需要进行质量控制,本人GEE刚入门,希望能提供有效答案(不要使用GPT进行回答)

前面没有看到你的评论,我写了篇文章希望能帮到你 https://blog.csdn.net/weixin_42182090/article/details/129677522

该回答由OKX安生编写:

该回答由OKX安生编写:

你可以使用 Google Earth Engine Python API 进行批量下载逐日的北京地区的 MAIAC AOD 数据,并进行质量控制。具体步骤如下:

  • 在 GEE 上找到相应数据集(例如 MODIS/006/MYD08_D3),并选择您需要的变量(例如 AOD_550_Dark_Target_Deep_Blue_Combined),然后将该数据集导入到您的代码中。
  • 使用 ee.ImageCollection.filterDate() 方法来筛选您需要的时间范围内的数据。
  • 使用 ee.Geometry.Polygon() 或 ee.Geometry.Rectangle() 方法来定义您需要下载的北京地区的范围。
  • 对于每一天的数据,使用 ee.Algorithms.Landsat.simpleCloudScore() 方法来计算其云覆盖百分比,然后使用 ee.Filter.lessThanOrEquals() 方法来筛选出云覆盖率低于某个阈值的像素点。
  • 将所有符合条件的像素点合并成一个 Image 并下载保存。

用于下载 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和自己的思路:

您好,针对您的问题,以下是一些可能有帮助的答案:

  1. 首先,建议您使用GEE Python API进行批量下载。在Python环境下使用GEE,可以更方便地对数据进行处理和控制。
  2. 对于MAIAC AOD数据的质量控制,可以使用MODIS的“quality_flag”进行筛选。通常情况下,值为0或1的像素表示是“good quality data”,而其他值则有不同的含义。具体的筛选方式可以参考相关文献或资料。
  3. 下载的代码示例如下:
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');