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 条矿物专家规则(纯端元 + 混合配方),每条规则经三层关卡过滤:
- 连续统约束(left/mean/right/ratio 的 min/max,8 项)
- 诊断特征 + 非特征排除(
not_absolute/not_relative:应缺失的吸收不得出现) - 加权约束(
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c52bfc1990cd5d123c8bd06244a9230fd47b67267561a91b7337c5ce8c8aff82
|
|
| MD5 |
d6278392e7c24a8986e1ff168854852c
|
|
| BLAKE2b-256 |
edbda9589afaeed4b132ae6ccaaff63151e83980e0bb7b7d3a774e0a4671088c
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d73e8622297bbfc68585745bcfa891afff910c4654f7c1d602ea6493283fe6be
|
|
| MD5 |
f8e129cdb754f85b0ae94a3b18f90ae7
|
|
| BLAKE2b-256 |
e57ce035b6016fb49de01441b7c2786aa229f33b1dbdd61de82beba325b82080
|