Skip to main content

用于读取、写入和简单处理复杂 SAR 数据和其他相关数据的 Python 工具。

项目描述

萨皮

SarPy 是一个基本的 Python 库,用于使用 NGA SICD 格式(标准链接如下)读取、写入和对复杂的 SAR 数据进行简单处理。它由 NGA 发布,以鼓励在整个国际 SAR 社区使用 SAR 数据标准。SarPy 补充了 SIX库 (C++) 和 MATLAB SAR 工具箱,它们以其他语言实现,但具有相似的目标。

可以在 此处找到一些示例 SICD 文件。

相关标准文件

本自述文件中提到了多种 SAR 格式标准,这里有相关参考资料。

传感器独立复杂数据 (SICD) - 最新版本 (1.2.1; 2018-12-13)

  1. 第 1 卷,设计与实施说明文档
  2. 第 2 卷,文件格式说明文档
  3. 第 3 卷,图像投影描述文档
  4. 架构

传感器独立派生数据 (SIDD) - 最新版本 (2.0; 2019-05-31)

  1. 第 1 卷,设计和实施说明文档
  2. 第 2 卷,NITF 文件格式说明文档
  3. 第 3 卷,GeoTIFF 文件格式说明文档
  4. 架构

补偿相历史数据 (CPHD) - 最新版本 (1.0.1; 2018-05-21)

  1. 设计与实施说明
  2. 设计与实施架构

SICD 和 SIDD 文件都是遵循特定准则的 NITF 文件 国家影像传输格式 (NI​​TF) - 最新版本(2.1,修订版 C;2017-06-06)

  1. 国家影像传输格式

对于其他 NGA 标准查询,可以在 此处搜索标准注册表。

基本能力

SarPy 中提供的基本功能通常是特定于 SAR 的,主要用于读取和操作以 NGA SAR 文件格式提供的数据。目前提供了对读写 SICD、SIDD、CPHD 和 CRSD(标准待定)和相关元数据结构的全面支持,这是本项目的主要重点。

还支持从各种商业或其他来源(包括

  • 卡佩拉(部分支持
  • COSMO-SkyMed(第一代和第二代)
  • GFF(桑迪亚格式)
  • 冰眼
  • 尼萨
  • 帕尔萨2
  • 雷达卫星-2
  • 雷达星座任务 (RCM)
  • 哨兵一号
  • TerraSAR-X。

对于此 SLC 格式数据,直接读取它就好像它来自 SICD 文件一样。这种读取能力通常不适用于 SLC 或 1 级产品以外的数据产品,并且这些产品通常没有直接的 NGA 标准模拟。

提供了一些通用的 TIFF 和 NITF 读取支持,但这不是 SarPy 库的主要目标。

文档

该项目的文档可在 readthedocs 获得

如果无法访问此文档,则可以在使用 sphinx 通过命令签出此存储库后在本地构建它python setup.py build_sphinx。这取决于 python 包sphinxsphinxcontrib-napoleon.

起源

SarPy 是在国家地理空间情报局 (NGA) 开发的。MIT 许可证中规定了软件的使用、修改和分发权利。

依赖项

核心库功能仅依赖于numpy >= 1.11.0scipy

可选的依赖和行为

有一小部分表示功能的依赖项可能不是大多数 sarpy 目标任务的核心要求。需要尽可能少的核心功能依赖关系列表和没有导致意外失败的意外未说明依赖关系之间的紧张关系在这里很明显。很明显,有许多可行的论据来建立任何或所有这些正式声明的依赖关系。此处做出的选择以实际情况为指导,而不是通常认为的最佳实践。

对于此列表中的所有包,尝试导入(如果相关),并捕获和处理这些可选依赖项的任何导入错误。换句话说,缺少的可选依赖项不会显示为导入时间。除了需要的功能h5py外,这种导入错误处理可能是无声的。

sarpy中的每个模块都可以成功导入,前提是环境中有numpy和scipy。尝试使用依赖于缺少的可选依赖项的功能将在运行时生成错误,并伴随消息指示缺少的可选依赖项。

  • 支持从某些提供 hdf5 格式数据的来源读取单一外观复杂数据需要该h5py软件包,这包括 Cosmo-Skymed、ICEYE 和 NISAR 数据。

  • 使用 jpeg 或 jpeg 2000 压缩读取 NITF 文件中的图像片段和/或写入 kmz 图像覆盖需要该pillow软件包。

  • 模块中显示的 CPHD 一致性检查sarpy.consistency取决于 lxml>=4.1.1networkx>=2.5shapely>=1.6.4pytest>=3.3.2。请注意,这些是经过合规性测试的版本。

  • 一些不太常用的(在 sarpy 领域)NITF 功能需要使用和解释 UTM 坐标,这需要pyproj包。

  • 构建 sphinx 文档(如下所述)需要包sphinxsphinxcontrib-napoleonsphinx_gallery.

  • 运行单元测试的可选部分(不太可能与未在核心 sarpy 包本身上执行开发的任何人相关)需要该lxml

安装

从 PyPI,使用 pip 安装(可能需要升级权限,例如 sudo):

pip install sarpy

请注意,此处pip表示所需 Python 环境的 pip 实用程序。

有关从源代码安装的详细说明,请参见 此处。建议仍然在本地构建包并使用 pip 安装,这允许适当的包更新机制,而python setup.py install 不允许使用.

问题和错误

已放弃对 Python 2 的支持。核心 sarpy 功能已针对 Python 3.6、3.7、3.8、3.9 和 3.10 进行了测试。

不太可能考虑仅出于支持超过生命周期结束的 Python 版本的目的而对 sarpy 进行更改。

非常感谢有关任何已发现错误的信息,因此请随时创建 github 问题。如果更合适,请联系wade.c.schwartzkopf@nga.mil

拉取请求

当然欢迎直接为该项目做出贡献的努力,请随时提出拉取请求。请注意,对这个项目的任何和所有贡献都将在 MIT 许可下发布。

之前在开源许可下发布并由 NGA 工作人员修改的软件源代码被视为“共同工作”(参见 17 USC 101);它是部分受版权保护的,部分是公共领域的,并且作为一个整体受非政府作者的版权保护,并且必须根据原始开源许可的条款发布。

相关的 GUI 功能

一些相关的 SAR 特定图形用户界面工具在 sarpy_apps 项目中维护。