Skip to main content

高光谱光谱分析 · 专家规则计算 · 过程可视化(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.2.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.2-py3-none-any.whl (14.8 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: geoahsi-1.2.2.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.2.tar.gz
Algorithm Hash digest
SHA256 48dbea12cc9a2a617e9d83dc8b6ab347e22ea1e65dcfe89e4f6e9f423c5354d0
MD5 80954ab55f4c1bda8427af501c840bd8
BLAKE2b-256 6ba27755e89f67d1f194b16a8b34e4c30f7e38072054b0f8a3d28d539df6bcf7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: geoahsi-1.2.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ca04bde8e54d52afdaba640e7bb50c9e4a95a96aefd5f3ce98d5b6b30994a92d
MD5 590504339f5dc40a2b456b230305e0f8
BLAKE2b-256 c0806eeb9c2937ebb6db03f7465faf5db9b2a26ef5c0ad5cf45a7c7f893640ef

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