You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

请求帮助从旧版sentinelsat(哥白尼开放获取中心)迁移至哥白尼数据空间生态系统

请求帮助从旧版sentinelsat(哥白尼开放获取中心)迁移至哥白尼数据空间生态系统

嘿,我完全懂你想尽量少改动原有工作流的需求——毕竟之前用Excel导出CSV配合sentinelsat脚本一直跑得顺,突然要适配新的哥白尼数据空间生态系统确实头疼。下面给你一套极简修改方案,完全能保留你现有从CSV读坐标日期、批量处理的流程:


第一步:先升级sentinelsat到最新版本

旧版本的sentinelsat不支持新的哥白尼数据空间生态系统API,所以先跑这条命令升级:

pip install --upgrade sentinelsat

第二步:修改你的核心代码(仅改关键部分,其余逻辑完全保留)

原来的代码只需要调整认证信息、API地址,以及一个小细节修复,其余查询、下载、写入CSV的逻辑都不用动。修改后的完整函数如下:

from sentinelsat import SentinelAPI
from pathlib import Path
from tqdm import tqdm

def s5papi(latitude, longitude, startdate, enddate, xy):
    # 🔴 替换成你在哥白尼数据空间生态系统注册的用户名和密码
    # 注意:原来的s5pguest公共账号已经失效,必须用自己注册的账号
    username = "你的注册用户名"
    password = "你的注册密码"
    
    # 🔴 新的哥白尼数据空间生态系统Sentinel-5P专属API地址
    url = "https://catalogue.dataspace.copernicus.eu/resto/api/collections/Sentinel5P/search.json"

    lat = str(latitude[xy])
    lon = str(longitude[xy])  # 顺手补了个小bug:原来没转字符串,拼接坐标时可能报错
    startdate1 = str(startdate[xy])
    enddate1 = str(enddate[xy])

    point = f"intersects({lat}, {lon})"

    # 初始化API,新版sentinelsat已经适配新系统的认证逻辑
    api = SentinelAPI(username, password, url)

    tqdm.write('Fetching products...\n')
    products = api.query(
        date=(startdate1, enddate1),
        footprint=point,
        platformname='Sentinel-5 Precursor',
        producttype='L2__CH4___'
    )

    if len(products) == 0:
        tqdm.write('No products found\n')
        return
    else:
        tqdm.write(f'{len(products)} Products found\nFetching Done\n')
        tqdm.write(f'Total product size : {api.get_products_size(products)} GB\n')
        tqdm.write('Downloading products...\n')
        # 下载逻辑完全不变,依然指定你的data目录
        api.download_all(products, directory_path=Path('data'))
        tqdm.write('Download finished.\n')

    products_df = api.to_dataframe(products)

    # 控制CSV表头的逻辑也完全保留,不用改
    header = True if xy == 0 else False
    products_df.to_csv(Path('data.csv'), mode="a", header=header)
    
    return products_df

关键修改点说明

  1. 必须用自己注册的账号:新的哥白尼数据空间生态系统不再支持公共访客账号,你得先去完成注册并验证邮箱,否则会返回认证失败
  2. API地址替换:旧的s5phub.copernicus.eu/dhus/已经停用,换成新系统的专属目录地址
  3. 小bug修复:原来的lon = longitude[xy]没有转成字符串,拼接坐标查询语句时可能触发类型错误,顺手补上了str()转换

额外提示

如果遇到下载速度慢的问题,可以给download_all方法加个并发参数:

api.download_all(products, directory_path=Path('data'), max_connections=5)

备注:内容来源于stack exchange,提问作者msalpiq95

火山引擎 最新活动