GEE前沿教程|geemap多线程、网格化数据集极速下载

文摘   2024-12-25 23:35   美国  

我们前面提到geemap是基于GEE的基础上进行的二次开发,使用的是python语言。由于python语言在开源、功能集成等方面具有“遥遥领先”的特点,所以geemap相比于GEE来说,肯定有过人之处。在遥感云计算平台中,我们在乎的无外乎是API算子对于算法的可实现性、海量数据处理的能力以及数据使用的便捷性。因此,相比于官方的GEE版本(Javascript),geemap有更多的可能性。本节我们主要推送geemap在数据下载方面的极大便利性,体现在:1)数据下载可以多线程(卡bug);2)一个函数调用实现全球任意区域格网化;3)数据集合(ImageCollection)的一键下载;4)云平台与本地的直接交互(无需通过Google Drive)

01

下载数据到本地


使用ee_export_image函数可以直接将影像下载到当前文件夹下,里面涉及到(ee_Object,filename,scale,crs,crs_transform,region)等多个参数。通常来说,只需要设置(ee_Object,filename,scale,region)四个参数即可。如果需要使得像元无偏差,最好设置(ee_Object,filename,crs,crs_transform,region)这五个参数,具体参考代码如下:

import osimport eeimport geemapgeemap.set_proxy(port=10809)Map = geemap.Map()image = ee.Image('LANDSAT/LC08/C02/T1_TOA/LC08_044034_20140318').select(    ['B5', 'B4', 'B3'])region = ee.Geometry.BBox(-122.5955, 37.5339, -122.0982, 37.8252)fc = ee.FeatureCollection(region)projection = image.select(0).projection().getInfo()crs = projection['crs']crs_transform = projection['transform']geemap.ee_export_image(    image,    filename="landsat_crs.tif",    crs=crs,    crs_transform=crs_transform,    region=region,)

02

网格化数据下载


如果需要进行网格化数据下载,可以使用geemap的fishnet函数一键生成任意区域的网格,非常高效便捷。这里,我们以单幅的Landsat影像为例,对其进行网格化下载(4*4),代码和显示结果如下:

fishnet = geemap.fishnet(image.geometry(), rows=4, cols=4, delta=0.5)style = {'color': 'ffff00ff', 'fillColor': '00000000'}Map.addLayer(fishnet.style(**style), {}, 'Fishnet')out_dir = os.path.expanduser('~/Downloads')geemap.download_ee_image_tiles(    image, fishnet, out_dir, prefix="landsat_", crs="EPSG:3857", scale=30)

03

数据集合极速下载


如果在javascipt下载影像集合,我们通常需要自己写一个函数或者采用for循环对里面的每一景影像进行下载,从而实现下载影像集合的目的。在geemap里面,他已经将这个功能写在了ee_export_image_collection函数里面,从而高效的将数据集合下载到本地,实现云平台与本地数据的无缝衔接,代码如下:

point = ee.Geometry.Point(-99.2222, 46.7816)collection = (    ee.ImageCollection('USDA/NAIP/DOQQ')    .filterBounds(point)    .filterDate('2008-01-01', '2018-01-01')    .filter(ee.Filter.listContains("system:band_names", "N")))out_dir = os.path.expanduser('~/Downloads')geemap.ee_export_image_collection(collection, out_dir=out_dir, scale=10)

04

下载到google drive和Asset


与javascipt版本一样,他也可以实利用ee_export_image_collection_to_drive函数实现将数据下载到google drive,代码如下:

geemap.ee_export_image_collection_to_drive(collection, folder='export', scale=10)

老粉估计都知道,我们也可以将数据下载到asset,以此来解决数据处理过程中“超载”的问题,代码如下:

geemap.ee_export_image_collection_to_asset(collection)

参考文献:https://book.geemap.org/chapters/07_data_export.html

05

更多阅读


1. GEE前沿教程|利用geemap进行本地数据交互、数据显示及下载

2. 武汉大学一区TOP发表ChatGPT与GEE地理分析模型知识提取与重用框架

3. GEE+ChatGPT实战特训教学

GEE遥感训练营
分享GEE遥感领域实用教程、最新科研成果及资讯,交流、合作等事宜请加V:GeeStudy_2020
 最新文章