fix(B04): 도엽 서피스 npz에 bounds를 넣어 등고선과 메시 원점을 맞춘다
dtm_sheet.npz에 bounds가 없어 등고선 API가 LAS structured.npz bounds로 폴백했고, 메시(glb)는 sheet 격자 중심으로 만들어져 등고선이 X -7.1m, Y +3.4m, Z +3.3m 떠 보였다. LAS 없는 프로젝트면 등고선 생성 자체가 실패한다. glb와 같은 bounds(3x2)를 npz에 저장해 두 산출물이 같은 원점을 공유한다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -144,17 +144,9 @@ def build_sheet_surface_model(
|
||||
stem = f"dtm_{SHEET_SOURCE_FILTER}"
|
||||
model_path = models_dir / f"{stem}.npz"
|
||||
preview_path = models_dir / f"{stem}_preview.glb"
|
||||
atomic_npz(
|
||||
model_path,
|
||||
x=x_coords,
|
||||
y=y_coords,
|
||||
z=z_grid,
|
||||
valid_mask=valid_grid,
|
||||
resolution=np.array([SHEET_SURFACE_GRID_M], np.float32),
|
||||
)
|
||||
|
||||
vertices, faces = _preview_mesh(x_coords, y_coords, z_grid, valid_grid)
|
||||
finite_z = z_grid[valid_grid]
|
||||
# bounds를 npz에 같이 넣는다 — 등고선 API가 이 값을 화면 원점으로 쓴다. 없으면
|
||||
# LAS structured.npz로 폴백해 메시(glb) 원점과 어긋난다(LAS 없는 설계는 아예 실패).
|
||||
bounds = np.array(
|
||||
[
|
||||
[x_coords[0], x_coords[-1]],
|
||||
@@ -162,6 +154,17 @@ def build_sheet_surface_model(
|
||||
[float(finite_z.min()), float(finite_z.max())],
|
||||
]
|
||||
)
|
||||
atomic_npz(
|
||||
model_path,
|
||||
x=x_coords,
|
||||
y=y_coords,
|
||||
z=z_grid,
|
||||
valid_mask=valid_grid,
|
||||
bounds=bounds,
|
||||
resolution=np.array([SHEET_SURFACE_GRID_M], np.float32),
|
||||
)
|
||||
|
||||
vertices, faces = _preview_mesh(x_coords, y_coords, z_grid, valid_grid)
|
||||
write_glb(preview_path, vertices, faces, bounds)
|
||||
|
||||
logger.info(
|
||||
|
||||
Reference in New Issue
Block a user