Files
Aislo/common_util/common_util_grid_cell.py
T
eomsangdonandClaude Opus 5.5 a1092b6c7c fix(633): 격자 칸 = 좌표 간격 — B05 급경사 · 음영 · 0차곡 칸 크기 틀림 고침(요구 538)
- 공용 grid_cell_m — 적힌 칸과 좌표 간격이 1 % 넘게 다르면 좌표 간격 · 로그 한 줄
- D03 급경사 · 음영 · 0차곡(상자 · DEM 길) · B07 도곽 음영이 공용 함수로
- 판 올림 — 급경사 · 음영 2 → 3 · 0차곡 DEM 길 따로 판 4
- B04 평활 격자는 넓힌 실제 칸을 적음
- 검증_sub2 B 평활: 급경사 중앙 146 → 67 % · 빨강 89.4 → 26.7 % · 0차곡 21 가닥 989 m → 99 가닥 4,110 m · D · B 수치지형도 그림 전후 같음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015uTVHHXDsevXBHePbAoqUv
2026-10-31 22:52:53 +09:00

28 lines
918 B
Python

"""격자 칸 크기(m) — 적힌 칸(`resolution`)보다 좌표 간격을 믿음(633).
B04 평활 격자는 꼭짓점이 많으면 칸을 넓히고 적힌 칸은 요청값 그대로라 둘이 어긋남.
둘이 맞으면(1 % 안) 적힌 값을 그대로 돌려줘 옛 결과와 같음.
"""
from __future__ import annotations
import logging
import math
from typing import Any
import numpy as np
logger = logging.getLogger(__name__)
def grid_cell_m(dem: Any, x: Any) -> float:
"""npz 격자(`dem`)의 칸 — `x` = 열 좌표."""
spacing = abs(float(x[1] - x[0]))
if "resolution" not in dem.files:
return spacing
written = float(np.asarray(dem["resolution"]).reshape(-1)[0])
if math.isclose(written, spacing, rel_tol=0.01):
return written
logger.warning("격자 칸 %.3f m 로 적힘 · 좌표 간격 %.3f m — 좌표 간격을 씀", written, spacing)
return spacing