# 高密度电法数据可视化处理工具 - 客户测试简短说明

## 1. 软件功能

本软件用于高密度电法数据的导入、检查、可视化、交互编辑、插值滤波预览和 RES2DINV 格式导出。

第一版主要支持：

- 导入 CSV、XLS、XLSX 表格数据。
- 导入 RES2DINV DAT 数据。
- 支持 Wenner-alpha 温纳 alpha 排列。
- 自动识别点距、测线长度、层数、测点数。
- 显示倒梯形剖面，可切换色点、按层曲线、连续填充三种显示模式。
- 支持点选、双击修改 rho、曲线模式拖拽修改 rho、右键或 Delete 删除点。
- 修改 rho 后可按当前设置同步重算 U 或 I。
- 支持撤销、重做和操作日志。
- 导出处理后的 RES2DINV DAT、CSV、项目 JSON 和图片。

## 2. 输入格式

### 2.1 CSV / XLS / XLSX 输入

建议字段如下：

```text
id,U,I,rho,M0,layer_n,point_m,x,z,K_file,A,M_elec,N,B
```

字段说明：

- `id`：数据点编号。
- `U`：电压。
- `I`：电流。
- `rho`：视电阻率。
- `M0`：极化率或其他附加参数，可为空。
- `layer_n`：层号 n。
- `point_m`：层内测点序号 m。
- `x`：测点横坐标。
- `z`：伪深度。CSV 中如未提供 z，软件默认按 `z = layer_n * spacing` 生成。
- `K_file`：文件中的几何因子。
- `A/M_elec/N/B`：四个电极编号。

注意：如果原始表格存在重复表头，例如同时存在两个 `M`，请在字段映射界面按列号区分，一个映射为极化率或参数列，另一个映射为 M 电极列。

### 2.2 RES2DINV DAT 输入

第一版支持普通 RES2DINV DAT 和带地形 DAT。

当前仅支持阵列代码：

```text
1 = Wenner-alpha
```

其他阵列类型可识别，但第一版不建议编辑和导出。

## 3. 输出格式

### 3.1 RES2DINV DAT 输出

导出 DAT 采用 RES2DINV 风格：

```text
标题
点距
阵列代码
数据点数
0
0
x z rho
x z rho
...
0
0
0
0
```

说明：

- `x` 为测点横坐标。
- `z` 为导出伪深度。
- `rho` 为处理后的视电阻率。
- 删除点不会导出。
- 插值点如已应用，会作为普通数据点导出。

### 3.2 CSV 输出

CSV 输出会保留关键处理字段，包括：

```text
id,status,x,z,layer,point_m,rho,U,I,M0,K_file,K_calc,A,M,N,B
```

其中 `status` 会记录有效点是否被编辑、插值或滤波。

当前版本导出 CSV 时只导出有效点。已删除点不会写入 CSV；如果导入旧版本导出的 CSV，状态中包含 `Deleted` 的行会被自动跳过。

## 4. 注意事项

- 第一版只支持 Wenner-alpha 数据的编辑和可靠导出。
- CSV 导入后必须检查字段映射，尤其是重复表头。
- 修改 rho 后，软件会根据“U/I推算”开关选择以 U 推算 I，或以 I 推算 U。
- 显示用深度系数只影响画布显示，不等同于 DAT 导出深度。
- 连续填充只是显示效果，不会新增实际数据点。
- 正式插值必须通过“插值预览 -> 应用”生成数据。
- 缺点识别按每层理论起止边界检查，删除层内端点也会被识别为缺点。
- 插值点会按“U/I推算”开关补齐 U/I：以 U 推算 I 时先插值 U，再计算 I；以 I 推算 U 时先插值 I，再计算 U。
- 导出前建议检查数据点数量、缺点数量、K_file 与 K_calc 差异。

## 5. 客户测试样例

本目录提供两个样例文件：

- `客户测试样例_输入.csv`
- `客户测试样例_输出_RES2DINV.dat`

建议测试步骤：

1. 打开原型页面 `prototype_v1_1.html`。
2. 导入 `客户测试样例_输入.csv`。
3. 检查字段映射是否自动识别。
4. 确认点距为 5 m，测线长度为 35 m，测点数为 8，数据点为 7。
5. 切换三种显示模式，确认 rho 数值均可叠加显示。
6. 导出 RES2DINV DAT。
7. 与 `客户测试样例_输出_RES2DINV.dat` 比对前 7 行数据点是否一致。
