按数据类型检索

1. 模块目标

按数据类型检索页对应 dm/tab_databrowser.py 中的 DataBrowserTab。它面向的是“目录级数据发现”,不是数据库元数据编辑。

适合的任务包括:

  • 批量扫描某个数据目录
  • 按数据类型查看文件
  • 快速搜索文件名
  • 预览表格、栅格或矢量

2. 界面结构

界面分为三块:

  • 顶部路径与搜索栏
  • 左侧分类列表与子文件列表
  • 右侧属性表与预览区

布局采用两个 QSplitter,可让用户动态调整:

  • 分类区宽度
  • 详情区与预览区高度

3. 关键类与线程

3.1 DataBrowserTab

负责 UI 组装、目录选择、分类显示、搜索和详情切换。

3.2 InventoryWorker

异步执行 inventory 生成,避免扫描大目录时阻塞界面。

3.3 PreviewPayloadWorker

异步构建预览载荷,避免读取大文件时卡住界面。

4. 数据流

目录级检索的内部数据流可概括为:

$$ \text{目录} \rightarrow \text{InventoryWorker} \rightarrow \text{inventory.csv / grouped_info} \rightarrow \text{分类展示} \rightarrow \text{预览载荷} \rightarrow \text{预览组件} $$

5. 分类逻辑

分类依据来自:

  • dm/data_config.json
  • 文件扩展名
  • 数据类型字段

对应函数包括:

  • load_categories()
  • get_category_by_extensions(...)
  • get_category_by_datatype(...)
  • classify_record(...)

因此,若想新增新的数据类别,通常应先修改类型配置文件,而不是直接改 UI。

6. 检索与预览

6.1 搜索

当前页的搜索目标主要是文件名或 inventory 中的相关条目,适合快速定位某类文件。

6.2 详情表

右侧详情表用于显示当前选中项的关键字段,可作为进入预览前的结构检查层。

6.3 预览区

预览区用于显示:

  • 表格型数据
  • 栅格摘要
  • 矢量摘要
  • 其他格式的简化信息

这层逻辑通过 load_preview_payload()build_preview_widget_from_payload() 统一组织。

7. 与数据库页的区别

二者容易混淆,但职责不同:

页面 主要目标
数据库页 管理正式索引、元数据与可编辑记录
按数据类型检索页 对目录内容做快速发现、分类和预览

换言之,类型检索更偏“浏览器”,数据库页更偏“资产索引管理器”。

8. 使用建议

推荐在以下场景优先使用本页:

  • 接收到一整批外部数据,需要先摸清结构。
  • 需要快速确认某目录下有哪些 raster/vector/csv/npz。
  • 想先做轻量预览,再决定是否入库。

如果你已经确定数据要长期管理,下一步应进入数据库页正式入库。