Skip to main content

GeoAHSI — EMIT 高光谱矿物识别引擎(USGS MICA 算法)

Project description

geoahsi

高光谱光谱分析 · 专家规则计算 · 过程可视化 —— 一个把"光谱 → 矿物识别 → 计算过程可视图"打通的引擎。基于 USGS MICA 算法,内置 77 矿物专家规则库与 USGS splib06b 光谱库,对高光谱影像或单条光谱逐像元判别矿物,并把每一道专家规则的判定过程渲染为出版级 PDF。

光谱分析 ─► 专家规则计算 ─► 过程可视化
连续统去除 + 最小二乘拟合   三层规则过滤 + 加权判定   逐特征曲线 + 每道关卡 PASS/FAIL

核心功能

1. 光谱分析

  • 连续统去除(continuum removal):按特征端点归一化参考与待识别光谱
  • 闭式 2×2 最小二乘拟合:每特征产出 k0 / k1 / R² / 吸收深度(含 det==0 奇异守卫,无需迭代)
  • 参考光谱重采样:按目标波段 FWHM 高斯重采样 USGS splib06b,与输入逐波段对齐
  • 支持整景立方体(逐像元并行)与单条光谱两种入口

2. 专家规则计算

内置 77 条矿物专家规则(纯端元 + 混合配方),每条规则经三层关卡过滤:

  1. 连续统约束(left/mean/right/ratio 的 min/max,8 项)
  2. 诊断特征 + 非特征排除not_absolute / not_relative:应缺失的吸收不得出现)
  3. 加权约束min_weighted_fit / min·max_weighted_depth / min_fit_depth_product
  • 可选深度比值约束max_depth_ratio_feat1_over_feat0
  • 产出每像元:最佳矿物、加权 fit、吸收深度、fit×depth 联合置信度(fd)、白云母 2.2μm 吸收中心
  • 支持按指定矿物 key 单独匹配(返回 accept/fit/fd + 哪道关卡否决)

3. 过程可视化(Nature 风格 PDF,需 geoahsi[viz]

  • Top-N 识别 PDF:每个候选矿物一页,全部诊断/非特征连续统去除曲线 + k0/k1/R²/depth + 约束范围 + not-feature 参考光谱 key 标注
  • 单矿物匹配 PDF:逐特征曲线 + 每道专家规则关卡的 PASS/FAIL 判定 + 最终 fit/depth/fd + ACCEPT/REJECT,让"为什么接受/拒绝"一目了然
  • Okabe-Ito 色盲安全配色、自适应纵轴、面板字母、共享图例、固定 GridSpec 布局

安装

pip install geoahsi                  # 基础:光谱分析 + 专家规则 + GeoTIFF
pip install 'geoahsi[viz]'           # + PDF 过程可视化
conda install -c conda-forge gdal    # GeoTIFF 输出需要 GDAL(conda 安装)

输入数据:支持 EMIT L2A NetCDF(自动剔除水汽坏波段 285→244)。库本身零外部资源依赖,光谱库与规则库全部内置。

命令行:

geoahsi -i EMIT_xxx.nc -o output/                 # 整景 → 3 张 GeoTIFF
geoahsi -i EMIT_xxx.nc -o output/ --raw            # 额外输出 mus_center + fd

快速上手

整景:光谱分析 + 专家规则 → GeoTIFF

from geoahsi import MicaEngine

engine = MicaEngine()                                   # 零参数,资源全内置
spectrum, lon, lat, w, bp = engine.load_emit("EMIT_xxx.nc")   # 坏波段已剔除
orth, color, mus = engine.spectrum_analysis(
    spectrum, w, bp, n_workers=8,
)
engine.write_tiff("result", lon, lat, orth, color, mus)
# → result_mapping_orth.tiff        矿物分类图
# → result_color_enhanced_orth.tiff 深度调制彩色图
# → result_mus_orth.tiff            白云母专题图

单条光谱:Top-N 识别 + 过程可视化 PDF

pixel = spectrum[row, col, :]                          # 已是有效波段
top = engine.classify_spectrum(pixel, w, bp, top_n=10,
                               pdf_path="topN_features.pdf")
# [{"name": "calcite.8+montmorilloniteNa.2_mix_intimate", "fit": 0.9457, "fd": 0.0659}, ...]

单条光谱 vs 单条参考光谱匹配

r = engine.match_reference(pixel, w, bp,
                           mineral_key="calcite",        # rf.json 中的 key
                           pdf_path="match.pdf")          # 可选过程可视化
# {"name": "calcite", "fit": 0.4007, "fd": 0.0194, "accept": False}
# PDF 标注:weighted: fit>=0.64 → FAIL 0.4007(一眼看出拒绝原因)

主要 API

方法 功能
MicaEngine.load_emit(path) 读影像 + 坏波段剔除 → spectrum, lon, lat, w, bp
MicaEngine.spectrum_analysis(spectrum, w, bp, n_workers, raw) 整景光谱分析 + 专家规则 + 渲染
MicaEngine.classify_spectrum(pixel, w, bp, top_n, pdf_path) 单光谱 Top-N 识别(+可选 PDF)
MicaEngine.match_reference(pixel, w, bp, mineral_key, pdf_path) 单光谱 vs 指定参考光谱匹配(+可选过程 PDF)
MicaEngine.write_tiff(prefix, lon, lat, orth, color, mus) 写 3 张 GeoTIFF(UTM 投影)
MicaClassifier.classify / classify_spectrum / get_resample 底层三组件(自定义流程)
ResultRenderer.render / write_tiff / plot_features_pdf / plot_rule_match_pdf 渲染 + GeoTIFF + PDF

内置资源与算法

  • USGS splib06b 光谱库(21 MB)、77 矿物专家规则库 rf.json、矿物 RGB 颜色表、白云母 10 档色表 —— 全部内置,MicaEngine() 零参数即用
  • 算法:连续统去除 + 闭式 2×2 最小二乘(R² + 吸收深度)→ 三层规则过滤 → 加权判定;白云母 2.2μm 吸收中心抛物线拟合
  • 并行:矿物级 multiprocessing + memmap 只读共享

性能

实测 1280×1242 EMIT 影像:8 进程 ~75–95s,已分类 ≈99.8%;输出与 MICA 原版逐比特一致。

致谢

  • USGS MICA 算法与 splib06b 光谱库
  • NASA EMIT 高光谱影像

许可

MIT License(见 LICENSE)。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

geoahsi-1.2.1.tar.gz (14.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

geoahsi-1.2.1-py3-none-any.whl (14.8 MB view details)

Uploaded Python 3

File details

Details for the file geoahsi-1.2.1.tar.gz.

File metadata

  • Download URL: geoahsi-1.2.1.tar.gz
  • Upload date:
  • Size: 14.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for geoahsi-1.2.1.tar.gz
Algorithm Hash digest
SHA256 c52bfc1990cd5d123c8bd06244a9230fd47b67267561a91b7337c5ce8c8aff82
MD5 d6278392e7c24a8986e1ff168854852c
BLAKE2b-256 edbda9589afaeed4b132ae6ccaaff63151e83980e0bb7b7d3a774e0a4671088c

See more details on using hashes here.

File details

Details for the file geoahsi-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: geoahsi-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 14.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for geoahsi-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d73e8622297bbfc68585745bcfa891afff910c4654f7c1d602ea6493283fe6be
MD5 f8e129cdb754f85b0ae94a3b18f90ae7
BLAKE2b-256 e57ce035b6016fb49de01441b7c2786aa229f33b1dbdd61de82beba325b82080

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page