perf(배수유역): 347-1 흐름 방향 · 도엽 좌표 저장 — 격자 원점 좌표 정수 m · 노선이 범위 안이면 읽기만
- 격자 원점 = 좌표 정수 m(GRID_ORIGIN_XY · 옛 「도로 시작점」 지시를 바꿈 · 사용자 확정) - 흐름 방향 저장본 drainage/descent_<입력 지문>_<범위>.npz — 입력 지문 = 도엽 등고선 지문 + 남긴 등고 단 + 셀 + 계산 규칙 · 덮으면 읽어 잘라 씀 · 최근 2벌 - 도엽(하천 · 등고선) 사업지 좌표 저장본 drainage/00_sheet_metric.pkl — 원본 자국 · 좌표계가 같으면 재투영 안 함 - 검증_sub3 실측: 저장본 읽기 = 지은 것과 칸마다 같음(적색 · 해석 영역 · 화살표 · 귀속 차이 0) · 108 → 10.8 s(붐빔 · 340 기준 약 6 s) · 원점 바뀜으로 적색 460,035 → 459,792칸(−0.05 %) · 관 자리 같음 - 시험 test_347_1_descent_store · 실측 bench 저장본 갈래 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XWh5wNNycMkbwMpACz1rte
This commit is contained in:
@@ -216,6 +216,10 @@ def _outside_bounds(
|
||||
return bounds[2] < clip[0] or bounds[0] > clip[2] or bounds[3] < clip[1] or bounds[1] > clip[3]
|
||||
|
||||
|
||||
# 배수유역 격자 원점 — 셀 모서리가 좌표 정수 m 에 놓인다(347-1 · 프로젝트 공통).
|
||||
GRID_ORIGIN_XY = (0.0, 0.0)
|
||||
|
||||
|
||||
def grid_spec_from_bounds(
|
||||
x_min: float,
|
||||
y_min: float,
|
||||
@@ -226,9 +230,10 @@ def grid_spec_from_bounds(
|
||||
) -> GridSpec:
|
||||
"""범위를 덮는 격자를 만든다. `anchor_xy`를 주면 그 점에 셀 모서리를 맞춘다.
|
||||
|
||||
격자 원점은 **도로 시작점**에 고정한다(2026-07-31 사용자 지시). bbox 좌상단에 맞추면
|
||||
1차 영역이 조금만 달라져도 격자가 통째로 밀려 이전 결과와 셀이 대응되지 않는다.
|
||||
도로 시작점에 맞추면 반경·영역을 바꿔도 같은 자리의 셀은 같은 자리에 남는다.
|
||||
격자 원점은 **좌표 정수 m(`GRID_ORIGIN_XY`)**에 고정한다(347-1 사용자 확정 · 옛 「도로
|
||||
시작점」 지시를 바꿈). bbox 좌상단에 맞추면 1차 영역이 조금만 달라져도 격자가 통째로 밀려
|
||||
이전 결과와 셀이 대응되지 않는다. 좌표 정수 m 에 맞추면 노선 · 반경이 바뀌어도 같은 자리의
|
||||
셀은 같은 자리에 남아 흐름 방향 저장본(`drainage/descent_*.npz`)을 그대로 잘라 쓴다.
|
||||
|
||||
격자 크기는 절대 자동으로 바꾸지 않는다 — config 값이 그대로 쓰인다(사용자 지시).
|
||||
셀 수가 많으면 경고만 남기고 그대로 진행한다.
|
||||
@@ -258,7 +263,7 @@ def grid_spec_from_bounds(
|
||||
def expand_grid_spec(spec: GridSpec, sides: dict[str, bool], step_m: float) -> GridSpec:
|
||||
"""활성 셀이 닿은 방향으로만 격자를 넓힌다.
|
||||
|
||||
셀 정수배로만 넓혀 격자 격자점(도로 시작점 기준)이 그대로 유지되게 한다.
|
||||
셀 정수배로만 넓혀 격자점(좌표 정수 m 기준)이 그대로 유지되게 한다.
|
||||
"""
|
||||
steps = max(1, int(math.ceil(step_m / spec.cell_m)))
|
||||
west = steps if sides.get("west") else 0
|
||||
|
||||
Reference in New Issue
Block a user