diff --git a/docs/questions/2026-06-16-反演剖面竖向字段(y-z-elevation)语义待确认.md b/docs/questions/2026-06-16-反演剖面竖向字段(y-z-elevation)语义待确认.md index a7a3e57..c0f986e 100644 --- a/docs/questions/2026-06-16-反演剖面竖向字段(y-z-elevation)语义待确认.md +++ b/docs/questions/2026-06-16-反演剖面竖向字段(y-z-elevation)语义待确认.md @@ -40,11 +40,11 @@ --- -## 3. 客户端当前做法(供确认/纠正) +## 3. 客户端做法演变 -- 竖直坐标用 **`y` 作深度**:每个格子 Z = `-y[j]`(深度向下取负),**未使用 `z` 和 `elevation`**。 -- 这与**二维"数据详情"反演图一致**(详情图 `ContourPlotItem` 也只用 `x`、`y` 画"距离 × 深度"矩形,不用 `z`/`elevation`)。 -- 即:3D 帘面 = 二维"距离×深度"剖面**立起来 + 沿真实测线(lat/lon)弯曲**,**平顶**、不随地表起伏。 +- **早期(已废弃)**:竖直 Z = `-y[j]`(把 `y` 当"深度向下"),平顶、不随地表。加真实地形底图后暴露问题:剖面整体沉到地下。 +- **当前(2026-06-17)**:竖直 Z = `+y[j]`(把 `y` 当**真实高程**),与同样按真实高程渲染的地形底图同系对齐 → 剖面顶≈地表、露出地面(复刻原版观感)。详见 §6。 +- 仍**未使用 `z` 和 `alt/elevation`**。 --- @@ -66,3 +66,19 @@ - 现状 (A) 已能正确渲染(与 2D 详情一致),可继续使用。 - 若业务要 (B) 地形跟随,需上面第 2/3/4 项的明确定义后,客户端按真实竖向模型实现(避免凭猜测导致渲染错误)。 + +--- + +## 6. 进展(2026-06-17):原版 web 代码已部分解答,但仍有跨数据集风险 + +拿到原版 `commercial-admin` 代码(`dataView/threeMap/threeMap.vue` `addEntityToMap`)后确认其做法: +- **`data.y` = 真实高程**(不是深度)。原版 `originY = data.y[0]`、`localY = data.y - originY`(相对形状),剖面世界 Z = `originY + localY = data.y`,并用 **`alt`(测线每点地表高程)** 算坡度/地表偏移;地形用 Mapbox 真实 DEM。两者同在真实高程系 → 剖面顶≈地表、露出地面。 +- **无垂直夸张**(`scale.y = 1`,真实比例)。 + +**客户端据此已改为 Z = `+y`(§3 当前)**,对 `y ≈ 真实高程` 的数据集(如射洪 `y`≈`elevation`≈287~353)对齐良好。 + +**⚠️ 仍未解决:§2 表中 `y` 跨数据集不一致**——香港 `T120526003-3`(`y`=13~26 但 `elevation`=41~51,差 ~28m)、演示 `ERT1-WS`(`y`=9.8~26.7 但 `elevation`=36~38,差 ~10~26m)这类,`y` 并不等于真实地表高程。对它们,仅用 `+y` 会让剖面整体偏离地表一个常量。 + +**稳妥的完整做法(= 原版)**:取 `alt`(测线每点地表高程)把剖面**顶部贴到地表**,`data.y` 只决定相对形状/深度跨度。即 `Z(列i, 行j) = altSurface(i) - (data.y[top] - data.y[j])`(或等价:用 alt 定地表、y 定相对位置)。这需要客户端**解析并使用 `alt`/`elevation` 字段**(当前未取)。 + +**待办**:客户端拉取 `alt`(或 `elevation`),按"地表 alt + y 相对形状"摆放剖面,消除跨数据集垂直偏移。在此之前,`+y` 是对 `y≈高程` 数据集成立的近似。