You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何使用命名空间读取Sentinel XML元数据获取云像素占比参数

问题解决代码及说明

你查询失败的核心原因是两点:一是没有写全节点的层级路径,ElementTree默认不会递归查询所有深层子节点,只会检索当前节点的直接子节点;二是只有带n1前缀的节点需要加上命名空间标识,没有前缀的子节点直接写原名称即可。

可直接运行的实现代码如下:

import xml.etree.ElementTree as ET

# 路径部分根据你的实际存储位置修改即可
xml_path = project_output+"sentinel_s2_l1c/55HGV_20180311/"
xml_file = 'metadata.xml'

tree = ET.parse(xml_path+xml_file)
root = tree.getroot()

# 定义命名空间,和XML头部的n1声明完全对应
namespaces = {'n1': 'https://psd-14.sentinel2.eo.esa.int/PSD/S2_PDI_Level-1C_Tile_Metadata.xsd'}

# 按完整层级路径查询:带n1前缀的节点加命名空间前缀,无前缀的子节点直接写原名
cloud_node = root.find('./n1:Quality_Indicators_Info/Image_Content_QI/CLOUDY_PIXEL_PERCENTAGE', namespaces=namespaces)

# 非空判断避免部分文件无对应节点时报错
if cloud_node is not None:
    # 提取数值,转成int或float按需选择
    cloud_percentage = float(cloud_node.text)
else:
    # 无参数时可以自定义默认值
    cloud_percentage = None

print(cloud_percentage)

如果需要批量处理多景Sentinel影像的元数据,把上述逻辑封装成函数,循环遍历所有XML文件调用即可。

内容的提问来源于stack exchange,提问作者Karen Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 22:27:02