445f51bbcbb63628bd8976771e1f3d634d1fd6cb
영구저장소 데이터를 오프라인 재현해 원인을 특정한 뒤 방식을 바꿨다.
진단 (실데이터 536,708셀, 저장본과 정확히 일치 재현)
- 파랑 셀 365,303개의 사슬 종료 사유가 100% 싱크. 영역 이탈 0%.
- 싱크 3,974개의 표고가 전부 5의 배수(600.0/765.0/585.0) = 등고선 값.
- 원인: 등고선 TIN 보간이 만든 평탄면을 EDT 로 해소할 때 가장 가까운
비평탄 셀을 출구로 삼는데, 그게 오르막이면 물이 나갈 수 없어 싱크로 남는다.
싱크 하나가 상류 유역 전체를 삼켰다(최대 10,171셀).
- 화살표(기울기 32방위)와 추적(D8)이 서로 달라 2,055셀에서 어긋났다.
교체 방식 — Watershed_Descent.py 신설
1. 등고선을 격자에 직접 굽는다(보간면을 만들지 않는다)
2. 셀마다 가장 가까운 등고 라인의 표고를 밴드로 삼는다
3. 높은 밴드부터 내려오며 한 단 낮은 등고 라인까지 거리를 잰다
4. 위치에너지 = 밴드 순위 x 큰 수 + 그 거리
5. 수신 셀 = 위치에너지가 더 낮은 8이웃 중 화살표 방향에 가장 가까운 셀
위치에너지가 흐름을 따라 반드시 감소하므로 웅덩이도 순환도 원리적으로
생기지 않는다 — 채움/평탄해소 자체가 불필요해졌다. 수신 셀을 화살표에서
고르므로 화면 화살표와 실제 경로가 항상 일치한다.
실측 (같은 데이터)
적색 파랑 싱크 화살표=경로
TIN 방식 171,405 (32%) 365,303 (68%) 3,974 불일치 2,055셀
등고선 하강 424,193 (79%) 112,515 (21%) 15,911 일치 100%, 불일치 0셀
부수 수정
- 최하단 밴드 셀을 무효가 아닌 정지 셀로 남겨 도로/세류면 적색으로 잡히게 함
- 저장에 receiver / band_elevation 추가 (사후에 사슬을 다시 따라갈 수 있게)
- manifest 에 row_spans 가 통째로 들어가 110KB 가 되던 것 정리
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Aislo
Aislo 웹앱
Languages
Lasso
99.4%
Python
0.3%
TypeScript
0.3%