当前位置: 首页 > news >正文

GEE 批量删除 Assets 资产文件夹

批量删除 Google Earth Engine (GEE) 资产文件夹及其内容的脚本介绍 🗑️

在处理大规模遥感数据时,尤其是在 Google Earth Engine (GEE) 平台上进行数据分析和处理,管理海量的文件夹和资产成为一项关键任务。手动删除这些资产不仅耗时且容易出错。本文将介绍一个高效的 Python 脚本,用于批量删除 GEE 中指定的文件夹及其所有内容,包括递归删除子文件夹和文件,帮助您快速清理不需要的资产,优化存储和管理效率。


完整版地址

  • 详细原文见:
    • https://mp.weixin.qq.com/s?__biz=Mzk0MTU1MjU5Mw==&mid=2247485088&idx=1&sn=fc2bd166d9e63613bef3ebec6bd283a1&chksm=c2d1e01ef5a669083618d141fdc51428d981044a7aabd9947c2dac0259ed2303c7efd308b4b2#rd

应用场景 🌐

在 GEE 平台中,若要删除资产文件夹,需要提前将子内容全部删除,而批量的清理总是麻烦的:

  • 释放存储空间:清理旧的、无用的资产,优化存储资源。
  • 自动化资产管理:通过编程方式批量管理大量文件夹结构,提升工作效率。

使用方法 🛠️

在使用此脚本前,请确保完成以下步骤:

1. 环境准备

  • 安装必要的库:确保已安装 earthengine-api。可以通过以下命令安装:

    pip install earthengine-api
    
  • 配置网络代理(如有需要):如果您的网络环境需要代理,请设置相应的环境变量。

2. GEE 账户授权

  • 首次使用时授权:运行 ee.Authenticate() 以完成 GEE 账户的授权认证。

    import ee
    ee.Authenticate()
    

3. 初始化 GEE API

  • 初始化 API:使用您的 GEE 项目 ID 初始化 Earth Engine API。

    ee.Initialize(project='your_project_id')
    

4. 指定删除路径

  • 修改删除路径:在 main() 函数中,将 folder_delete_path 修改为您需要删除的资产文件夹路径。

    folder_delete_path = 'users/xxxx/aim_folder'
    

5. 运行脚本

  • 执行脚本:运行 Python 文件,脚本将递归删除指定文件夹中的所有文件及子文件夹,最终删除目标文件夹本身。

代码详情 🖥️

以下是用于批量删除 GEE 资产文件夹及其内容的完整 Python 脚本:

# -*- coding:utf-8 -*-
"""
此代码用于批量删除 Google Earth Engine (GEE) 资产存储中的指定文件夹及其所有内容。
递归删除指定文件夹中的所有资产(包括子文件夹和文件),并最终删除目标文件夹本身。"""import ee
import os
import time# 配置网络代理(如无代理,请注释以下两行)
os.environ['HTTP_PROXY'] = 'http://127.0.0.1:xxxx'
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:xxxx'# 解决 OpenSSL 3.0 兼容性问题
os.environ['CRYPTOGRAPHY_OPENSSL_NO_LEGACY'] = '1'# 授权并初始化 Earth Engine API
ee.Authenticate()
ee.Initialize(project='ee-xxxx')def delete_asset_folder(delete_path):"""递归删除指定的资产文件夹及其所有内容。参数:delete_path (str): 要删除的文件夹路径,例如 'users/xxxx/aim_folder'"""try:print(f"正在处理删除路径: {delete_path}")# 获取该文件夹下的所有资产assets = ee.data.getList({'id': delete_path})for asset in assets:asset_id = asset['id']asset_type = asset['type']if asset_type == 'FOLDER':# 递归删除子文件夹delete_asset_folder(asset_id)else:# 删除文件资产ee.data.deleteAsset(asset_id)print(f"已删除资产: {asset_id}")# 为避免触发速率限制,添加短暂延时time.sleep(1)# 删除空文件夹ee.data.deleteAsset(delete_path)print(f"已删除文件夹: {delete_path}")except ee.EEException as e:if "not found" in str(e):print(f"资产 {delete_path} 不存在,无需删除。")else:print(f"删除资产 {delete_path} 时出错: {e}")raise  # 重新抛出异常以便进一步处理或终止脚本def main():"""主函数,删除指定的 GEE 资产文件夹及其所有内容。"""# 要删除的文件夹路径(确保不以斜杠结尾)folder_delete_path = 'users/xxxx/aim_folder'# 调用删除函数delete_asset_folder(folder_delete_path)if __name__ == '__main__':main()

代码优势 ✨

  1. 自动化批量删除:能够递归删除文件夹及其所有内容,适合处理复杂的文件夹结构,显著提升效率。
  2. 稳定性强:通过捕获和处理异常,避免因个别错误导致整个删除流程中断,确保操作的连续性。
  3. 速率控制:在删除过程中加入短暂的延时,避免触发 GEE 的速率限制,保证脚本在长时间运行时的稳定性。
  4. 易于配置和修改:用户只需修改少量代码即可适应不同的使用场景,便于扩展和维护。

注意事项 ⚠️

  1. 删除操作不可逆:执行删除操作后,文件夹及其内容将无法恢复。请在使用前确认要删除的资产路径正确无误
  2. 确保正确的网络代理配置:如果使用代理访问 GEE,请确保正确设置 HTTP_PROXYHTTPS_PROXY,否则可能无法正常连接 GEE。
  3. OpenSSL 兼容性问题:如果遇到 OpenSSL 相关错误,请确保设置了 CRYPTOGRAPHY_OPENSSL_NO_LEGACY = '1' 以解决兼容性问题。
  4. 速率限制:Google Earth Engine 对 API 调用有速率限制。在删除大量资产时,保持适当的延时,以避免触发限制。

相关函数讲解 📚

函数名称功能描述参数说明
ee.Authenticate()用户身份验证。执行该函数时,系统会提示用户通过浏览器登录 Google 账户,并授权使用 GEE API。
ee.Initialize(project='your_project_id')初始化 Google Earth Engine API。project 参数指定了用户的 GEE 项目 ID,确保后续 API 操作能够正确执行。project:GEE 项目 ID。
delete_asset_folder(delete_path)递归删除指定的资产文件夹及其所有内容,包括子文件夹和文件。delete_path:要删除的文件夹路径,例如 'users/nicexian0011/_DGS_GSV_Grids'
ee.data.getList({'id': delete_path})获取指定文件夹路径下的所有资产列表,返回每个资产的 idtype,用于区分是文件还是子文件夹。{'id': delete_path}:字典形式的请求参数,包含要获取的文件夹路径。
ee.data.deleteAsset(asset_id)删除指定的 GEE 资产(文件或文件夹)。在递归遍历到某个文件夹或文件时,调用此函数进行删除。asset_id:要删除的资产路径,例如 'users/nicexian0011/_DGS_GSV_Grids/subfolder'
time.sleep(1)在删除每个资产后添加短暂的延时(单位:秒),用于避免频繁调用 GEE API 导致的速率限制问题。1:延时的秒数。

结论 🎯

本文介绍了一个实用的 Python 脚本,用于批量删除 Google Earth Engine (GEE) 资产文件夹及其所有内容。该脚本通过递归删除和速率控制,实现了高效且稳定的批量删除任务,极大地简化了资产管理流程。用户在实际应用中应注意确认删除路径的准确性,以避免误删重要数据,同时遵守 GEE 的速率限制,确保脚本顺利执行。


希望本文对您在 GEE 数据管理和遥感数据处理工作中有所帮助!如果有任何问题或建议,欢迎在评论区交流讨论。😊

术语解释表 📖

术语解释
earthengine-apiGoogle 提供的 Python 库,用于与 GEE 进行交互。
ee.Authenticate()Earth Engine API 的认证函数,用于验证用户身份。
ee.Initialize()初始化 Earth Engine API,准备进行数据操作。
ee.data.getList()获取指定文件夹路径下的所有资产列表。
ee.data.deleteAsset()删除指定的 GEE 资产(文件或文件夹)。

如果这对您有所帮助,希望点赞支持一下作者! 😊

详细全文-点击查看

file


http://www.mrgr.cn/news/51150.html

相关文章:

  • 能源水务储能的可视化需求真多,我都忙不过来了。
  • 蓝紫激光模组常见的基本特性
  • 和数集团东南亚市场工作会议圆满举行
  • 给el-dialog的整体加动态class
  • NumPy 数组操作:从入门到精通
  • 2024年Flutter从入门到精通全网最全学习路线指南
  • 基于Cesium.js的可视化大屏,效果绝对的震撼!
  • JVM篇(学习预热 - JVM正式展开 - (实战课程学习总结))(持续更新迭代)
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——7.list(无习题)
  • 【C++】STL篇 string类(使用)
  • C嘎嘎入门篇:类和对象(3)
  • 爬虫逆向学习(十一):实战分享反爬机制快速定位与破解
  • 【深度学习|地学应用】遥感与深度学习:揭示梦柯冰川奥秘的前沿应用与实践解析(二)
  • 【相位失配】阻抗管双传递函数法测量吸声系数:交换双传声器的位置
  • 自动驾驶系列—加速自动驾驶系统开发:多型号SoC快速适配的最佳实践
  • 世界粮食日
  • python基于大数据的电影市场预测分析
  • Python语法进阶:从基础到熟练的飞跃
  • 5 -《本地部署开源大模型》在Ubuntu 22.04系统下ChatGLM3-6B高效微调实战
  • MySQL学习(六):视图和存储过程以及函数