前面给大家分享过使用rgee获取IGBP土地覆被数据的代码rgee土地覆被变化检测——2001~2019中国土地覆被变化,但是由于GEE API更新,rgee无法正常使用了,推荐使用吴秋生老师开发的Python版本GEE,非常方便,而且Python是GEE官方提供的接口语言,不会像R那样由于更新无法使用,功能相比JS版上限更高,推荐大家学习。
将上述R中的rgee代码转换为Python中的geemap代码,可以使用以下步骤和示例代码:
import ee
import geemap
import os
# Initialize Earth Engine
ee.Initialize()
# Define a region of interest with a shapefile using geemap
ee_roi = geemap.shp_to_ee('./SHP/ChinaSizhi.SHP')
# Call MODIS land cover dataset (MCD12Q1)
cmr_lucc = ee.ImageCollection("MODIS/006/MCD12Q1") \
.select('LC_Type1') \
.filterBounds(ee_roi)
# Mosaic the image collection and clip to the region of interest
cmr_lucc1 = cmr_lucc.mosaic().clip(ee_roi)
# Visualization parameters for IGBP land cover
igbp_landcover_vis = {
'min': 1,
'max': 17,
'palette': ['05450a', '086a10', '54a708', '78d203', '009900', 'c6b044', 'dcd159',
'dade48', 'fbff13', 'b6ff05', '27ff87', 'c24f44', 'a5a5a5', 'ff6d4c',
'69fff8', 'f9ffa4', '1c0dff']
}
# Create a Map instance
Map = geemap.Map(center=[40, 117], zoom=8)
# Add layers to the map
Map.addLayer(cmr_lucc1, igbp_landcover_vis, 'cmrlucc')
Map.addLayer(ee_roi, {'palette': 'red'}, "roi")
Map.centerObject(ee_roi)
# Display the map
Map
# Define a function to export raster images to Google Drive
def export_image_to_drive(image, description, folder, scale):
task = ee.batch.Export.image.toDrive(**{
'image': image,
'description': description,
'folder': folder,
'scale': scale,
'region': ee_roi.geometry().getInfo()['coordinates'],
'maxPixels': 1e13
})
task.start()
# Batch download
for j in range(2001, 2020):
date_start = ee.Date.fromYMD(j, 1, 1)
date_end = ee.Date.fromYMD(j, 12, 31)
cmrlucc_composite = cmr_lucc \
.filter(ee.Filter.date(date_start, date_end)) \
.mosaic() \
.clip(ee_roi)
tiff_name = date_start.format('YYYY-MM-dd').getInfo()
# Export the image to Google Drive
export_image_to_drive(cmrlucc_composite, description=tiff_name, folder='CNlucc', scale=500)
说明:
导入库和初始化:
ee.Initialize()
初始化 Earth Engine。import geemap
导入 geemap 库,它提供了易于使用的界面来与 Earth Engine 进行交互。
定义地区兴趣区域(ROI):
ee_roi = geemap.shp_to_ee('./SHP/ChinaSizhi.SHP')
使用geemap.shp_to_ee
将 Shapefile 转换为 Earth Engine 中的 FeatureCollection。
调用 MODIS 数据集:
cmr_lucc = ee.ImageCollection("MODIS/006/MCD12Q1")
调用 MODIS 的 MCD12Q1 数据集。.select('LC_Type1')
选择数据集中的特定波段。.filterBounds(ee_roi)
根据 ROI 过滤数据集。
影像处理和可视化:
cmr_lucc1 = cmr_lucc.mosaic().clip(ee_roi)
将图像集合进行镶嵌并裁剪到 ROI。Map.addLayer(cmr_lucc1, igbp_landcover_vis, 'cmrlucc')
将处理后的影像添加到地图中进行可视化。
导出影像到 Google Drive:
export_image_to_drive
函数定义了导出影像到 Google Drive 的过程。