SNAP(Sentinel Application Platform)是欧洲空间局(ESA)开发的一款软件,主要用于处理和分析遥感数据,特别是来自其 Sentinel 卫星系列的数据。SNAP 提供了多种工具和功能,支持用户进行数据的预处理、可视化、分析和产品生成。
最近有需要借助 esa_snappy(也就是 ESA SNAP 的 Python 接口)库处理 Sentinel 1 卫星数据,但是其资料较少。因此需要先搞懂 esa_snappy所有算子(函数)、参数和功能,然后进行下一步使用。
本文介绍通过 ESA SNAP 软件的 Python 接口(esa_snappy),获取软件的所有算子及其参数、帮助和说明,并对说明进行中文翻译,以便更详细的了解 ESA SNAP 软件的功能。
安装 SNAP 及其 Python 扩展
不做介绍,参考百度。
(ESA SNAP 软件启动界面)
from esa_snappy import GPF# 获取参数信息def get_param_info(param): param_info = {'data type': param.getDataType().getSimpleName(), 'default value': param.getDefaultValue(), 'description': param.getDescription()} return param_info# 全部和某个算子类class RegistrySPIs: '''注册算子''' def __init__(self): self._ospis = GPF.getDefaultInstance().getOperatorSpiRegistry() def __iter__(self): op_spi_it = self._ospis.getOperatorSpis().iterator() while op_spi_it.hasNext(): yield op_spi_it.next() def get_operator_alias(self): '''列出所有支持的算子''' alias = {op_spi.getOperatorAlias(): op_spi.getOperatorDescriptor().getDescription() for op_spi in self} return alias def get_method(self, op_name): '''获得 op_name 算子''' return OperatorMethod(op_name, self._ospis)class OperatorMethod: '''算子操作方法''' def __init__(self, op_name, ospis): self._ospi = ospis.getOperatorSpi(op_name) self._op_desc = self._ospi.getOperatorDescriptor() self._name = op_name def _iter_params_(self): param_descriptors = self._op_desc.getParameterDescriptors() for param in param_descriptors: yield param def get_params_info(self): '''算子的所有参数信息等''' params_info = {} for param in self._iter_params_(): p_info = get_param_info(param) params_info[param.getName()] = p_info return params_info def get_info(self): '''算子的所有信息:名称、描述、参数说明等''' info = {'op_name': self._name, 'description': self._op_desc.getDescription(), 'params': self.get_params_info()} return info
ospis = RegistrySPIs()op_alias = ospis.get_operator_alias()
from deep_translator import GoogleTranslatortran = GoogleTranslator(source = 'en', target='zh-CN')op_alias_zh = {}for k, v in op_alias.items(): if v: v = tran.translate(v) op_alias_zh[k] = v
查询某个算子及其参数(以多视处理 Multilook 为例):
op_spi = ospis.get_method('Multilook')md_info = op_spi.get_info()
md_info_zh = md_info.copy()md_info_zh['description'] = tran.translate(md_info_zh['description'])for k, v in md_info['params'].items(): md_info['params'][k]['description'] = tran.translate(v['description'])