# 高密度电法数据切割工具说明

## 软件功能

本工具用于从长剖面高密度电法 DAT 数据中切割指定电极范围的数据段。软件在浏览器本地运行，不上传数据，适合分发给现场或客户使用。

主要功能：

- 自动读取 DAT 文件并推断点距、原始道数、原始层数和测线长度。
- 输入起始电极号、结束电极号后切割指定剖面段。
- 可输出两种坐标格式：
  - 坐标重置版：切割段起点重新作为 0m。
  - 原始坐标版：保留原始长剖面的坐标。
- 可选择是否线性插值补齐缺失数据。
- 插值模式下，先对整条原始剖面逐层补齐，再执行切割。

## 输入格式

输入文件为文本 DAT 文件，前 6 行为文件头，后续为三列数据：

```text
原始道数或测线信息
点距
参数
数据行数
参数
参数
X坐标 Z坐标 数据值
X坐标 Z坐标 数据值
...
0
0
0
0
```

示例：

```text
11
5
1
11
1
0
7.50 5.00 100.000000
12.50 5.00 110.000000
17.50 5.00 120.000000
27.50 5.00 140.000000
```

## 输出格式

输出仍为同类 DAT 文本格式：

- 第 1 行：切割后的电极数。
- 第 2 行：点距。
- 第 4 行：切割后的数据行数。
- 后续三列为 `X坐标 Z坐标 数据值`。
- 文件末尾保留 `0 0 0 0` 控制行。

## 插值规则

勾选“线性插值补齐缺失点”后：

- 先按每一层理论列数补齐整条剖面。
- 中间缺点：用同层左右相邻真实点线性插值。
- 左边缘缺点：用右侧最近两个真实点斜率反推。
- 右边缘缺点：用左侧最近两个真实点斜率外推。
- 完成整体补齐后，再按起止电极号切割。

## 注意事项

- 电极号按 1 起始编号。
- 软件会自动推断最大电极号，文件选择后结束电极号默认填最大值。
- 如果原始数据首尾大面积缺失，自动推断测线长度可能受影响，应检查页面提示的“支持该长度的层数”。
- 插值值仅用于补齐缺失点，不会修改原始真实点数据。
- 坐标重置版和原始坐标版的数据值相同，只是第一列 X 坐标不同。

## 测试样例

样例文件：

- 输入：[sample_input.dat](sample_input.dat)
- 不插值输出：[sample_output_E1_E10_raw_reset.dat](sample_output_E1_E10_raw_reset.dat)
- 插值输出：[sample_output_E1_E10_interpolated_reset.dat](sample_output_E1_E10_interpolated_reset.dat)

测试方法：

1. 打开 `high_density_splitter.html`。
2. 选择 `sample_input.dat`。
3. 起始电极号填 `1`，结束电极号填 `10`。
4. 不勾选插值，切割后结果应与 `sample_output_E1_E10_raw_reset.dat` 一致。
5. 勾选插值，切割后结果应与 `sample_output_E1_E10_interpolated_reset.dat` 一致。
