
landsatxplore 库已停止维护,其基于用户名/密码的认证方式与 USGS 2025 年起启用的 Token 认证机制不兼容,导致初始化失败及“Invalid Endpoint”错误。
`landsatxplore` 库已停止维护,其基于用户名/密码的认证方式与 usgs 2025 年起启用的 token 认证机制不兼容,导致初始化失败及“invalid endpoint”错误。
USGS 自 2025 年 2 月起全面停用旧版基于账号密码的 API 认证流程,转而强制采用基于 OAuth 2.0 的 Token 认证机制(通过 Earth Explorer 或 API Key Portal 获取长期有效的 API Key)。而 landsatxplore(v0.15.0 及更早版本)仍尝试调用已下线的 /login 和 /dataset-catalogs 等 Legacy Endpoints,因此触发 NOT_FOUND: Invalid Endpoint 错误——该错误本质是服务端拒绝响应过时路径,而非客户端代码语法问题。
✅ 推荐替代方案:使用官方 usgs 客户端或直接调用 USGS EROS API
目前最稳定、官方支持的方式是使用 USGS 官方维护的 usgs Python 包(注意:非 landsatxplore),它已适配新版 Token 认证:
pip install usgs
from usgs import api
# 使用从 https://www.php.cn/link/0511a2f27352eb5e146e51b92758cd10 获取的 API Key(非密码!)
api_key = "YOUR_API_KEY_HERE" # 长度约 64 位的十六进制字符串
# 初始化(无需用户名/密码)
api.login(api_key)
# 查询数据集目录(新版 endpoint)
response = api.dataset_list()
print("Available datasets:", [ds['datasetName'] for ds in response])
# 示例:搜索 Landsat Collection 2 场景
results = api.scene_search(
dataset='LANDSAT_8_C2_L2',
latitude=37.7749,
longitude=-122.4194,
start_date='2023-01-01',
end_date='2023-12-31',
max_results=5
)
print(f"Found {len(results)} scenes")⚠️ 重要注意事项:
- API Key 必须通过 USGS Earthdata Login Portal 注册并生成,不可复用旧密码;
-
landsatxplore已归档(Archived),GitHub 仓库标记为read-only,不再接受 PR 或修复(见 issue #126); - 若必须沿用
landsatxplore,可临时降级至 v0.14.0 并配合代理/缓存(不推荐,存在安全与稳定性风险); - 所有请求需遵守 USGS API 使用条款,包括速率限制(默认 10 req/sec)和引用要求。
? 总结:请立即迁移到 usgs 官方库或直接使用 RESTful API(https://m2m.cr.usgs.gov/api/api/json/stable/),以确保长期可用性与合规性。Token 认证不仅更安全,也支持细粒度权限控制和审计追踪。

















