diff --git a/docs/raw/요구_1025/_분석_520-5.md b/docs/raw/요구_1025/_분석_520-5.md new file mode 100644 index 000000000..5675cb91e --- /dev/null +++ b/docs/raw/요구_1025/_분석_520-5.md @@ -0,0 +1,51 @@ +# 요구 341-1 검토 — 노선 바뀐 부분만 배수유역 다시 셈 (PLAN 520-5) + +결론: 「바뀐 부분만」은 할 가치 없음 — 흐름 셈 자체는 격자 전체 한 번에 0.1~0.6 s · 오래 걸리는 곳은 노선 무관 단계 · 그쪽을 저장본으로 고정(B) + 확장 10 회를 한 번으로(D) = [업데이트] 초안 8~13 s → 1.5~3 s · 저장 노선 5.4~7.2 s → 2.5~4 s · 노선을 조금 · 많이 바꾸든 같음. +전제 바로잡음: DEM · Whitebox · 채움 단계 없음 — 도엽 등고선에서 흐름 방향을 바로 셈(rasterio · scipy · shapely · numpy) · 흐름 방향 저장본(347-1) 이미 있음. + +## 잰 것 (검증_랩탑메인 · 함수 직접 · 쓰기 없음) +크기 = 흐름 방향장 1545×1836(284 만 셀 · 1 m) · 해석 격자 1095×1236 · 도로로 오는 셀 459,972(46 ha) · 도로 셀 5,705 · 노선 1,080 m · 등고선 4,200 개 · 세류 1,252 개. + +| # | 단계 | 노선 의존 | 시간 | file:line | +|---|---|---|---|---| +| 1 | 준비(DB · 노선 · 도엽 피클 33 MB) | 읽기 | 0.3~0.6 s | Router_Watershed.py:158-187,206-267 | +| 2 | 등고선 → 점 구름 | 무관(자르는 범위만) | 0.5~1.1 s | Grid.py:146-210 · Analyze.py:97-99 | +| 3 | 세류 상 · 하류 가름 + 1차 영역(버퍼 100 m) | 의존 | 0.2~2.5 s(보간 편차 큼) | Stream.py:52-139,219-280,336-388 | +| 4 | 흐름 방향장(등고선 하강 · EDT) | 지형만 · 단 열쇠에 노선 최저점 하한 | 저장본 0.03 s / 새로 4.7~10.7 s | Descent.py:253-353,365-395 · Expand.py:165,180 | +| 5 | 도로 굽기 · 세류 새김 · 도달 판정 · 확장 10 회 | 의존 | 1.8~2.9 s(회당 0.1~0.3) | Expand.py:88-137,186-263 · Flow.py:92-134,182-242,300-413 | +| 6 | 흐름 강도 · 외곽선 · 기본 관 · 화살표 | 의존 | 0.2 s | Analyze.py:208-225 · Flow.py:140-179,565-575 | +| 7 | 응답 · 저장(primary-region 길만) | — | 0.8~1.1 s | Router_Watershed.py:467-580 | +| 8 | 세부유역(관 → 도로 셀 → 라벨 → 폴리곤) | 관만 | 0.03~0.2 s | Router_Basins.py:83-118 · drainage_detail.py:169-250,536-640 | + +- 초안 [업데이트] 8~13 s 원인 = 초안 길은 노선 z 로 하한(최저점 −10 m)이 생겨 방향장 열쇠가 달라짐 + 저장본 2 벌만 남겨(Descent.py:362) 서로 밀어냄 → 다시 지음(+5 s) · 하한 820 m 실측 9.95 s(없이 4.1~4.9 s) · 도로로 오는 셀 차이 0. +- 확장 10 회 → 저장 큰 방향장 위 한 번 = 0.58 s · 도로로 오는 셀 459,972 개 셀 하나까지 같음. + +## 「바뀐 부분만」 실험 (전체 셈 두 번 대조) +- 작은 변경(100 m 구간 20 m 옆) = 바뀐 셀 16,811(3.6 %) · 그중 7,417 은 구간 밖 하류로 번짐. +- 큰 변경(600 m 구간 40 m 옆) = 바뀐 셀 292,435(63 %) · 격자 거의 전체(세류 상류망 1 → 3 갈래). +- 방식 자체는 맞으나 하류 번짐(옛 · 새 도로 격자 직접 비교) · 세류 가름 바뀜 · 구간 길이 바뀌면 뒤 측점 전부 밀림을 같이 처리해야 함 → 아끼는 것 ≤ 0.5 s(큰 변경 0) · 위험만 큼. + +## 길 비교 +- (A) 바뀐 구간 상류만 — 큼 · 위험 높음 · (B)+(D) 위에 ≤ 0.5 s. +- (B) 노선 무관 저장본 고정(하한 빼기) — 몇 줄(Expand.py:165,180 · Descent 열쇠) · 낮음(실측 차이 0) · 초안 −5 s. +- (D) 확장 → 한 번 + 도엽 메모리 보관 — 중간(Expand.py:140-274 · Router_Watershed.py:158-187) · −2~3 s. +- (C) = (B)+(D) 추천. + +## 추천 설계 (③ 서버 단독 · 창 둘) +- 창 1 · B04 엔진(Expand · Descent · Analyze) — 방향장 열쇠 · 짓기에서 하한 뺌(Expand.py:165,180 · 대체 길 :108) → 프로젝트마다 지형 저장본 1 벌 · `expand_by_red_boundary`(Expand.py:140-274) 안만 바꿈(저장 큰 방향장 위 `analyze_domain` 1 회 → 「도로로 오는 셀 + 50 m 띠」로 잘라 spec · domain 돌려줌 · 가장자리에 닿으면 지금 길) · 부르는 쪽 Analyze.py:186 그대로 · 끊기(superseded)는 1차 영역 뒤 · 한 번 셈 앞 두 곳. +- 창 2 · B04 라우터 + B05 화면(520-2 와 합침) — 도엽 피클 · 등고선 구름 메모리 보관(열쇠 contour_key · Router_Watershed.py:158-187 · Analyze.py:97-99 · −1 s) · 저장 노선 기준 [업데이트] 결과를 파생 저장본으로(Router_Watershed.py:462-580 → `_Output.py`) · 구조물 추가 · 삭제 0.2 s 자동 · 화면이 끊으면 서버 차례 번호 올려 셈 멈춤. + +## 위험 · 막을 장치 +- 하한 제거 = 노선보다 낮은 띠 방향 바뀔 수 있음(이번 차이 0 · 다른 프로젝트로 확인). +- 한 번 셈 = 해석 영역 밖으로 나갔다 들어오는 물길도 도달(더 맞음) · 화면 값 바뀜(rounds · closed · added_cells · row_spans · 화살표 개수). +- 큰 격자 여유 400 m 밖까지 번지면 지금처럼 넓혀 다시 지음(첫 회만 5 s). +- 장치 ① tmp 일회 대조 — 검증 프로젝트 2~3 개 옛 길 · 새 길 · 도로로 오는 셀 · road_slot · 관별 면적 셀 단위 같음. +- 장치 ② resources/tester 지킴 시험 — 합성 등고선에서 한 번 셈 = 확장 셈 · 방향장 열쇠가 하한과 무관. +- `[계측]` 줄 남김. + +## 결정 거리 (추천 먼저) +1. 길 = (B)+(D) · 「바뀐 부분만」 보류 / (A)까지. +2. 노선 최저점 하한 = 없앰 / 둠. +3. 해석 영역(파란 띠) = 「도로로 오는 셀 + 50 m ∪ 1차 영역」 / 저장 방향장 전체. +4. 빨라진 뒤 노선 바뀜 = 3 s 안이면 뒤에서 자동 셈 / 수동 [업데이트] 유지. +5. 세류 상 · 하류 판정 보간(0.2~2.3 s) = 그대로 + 계측 / 지표면 DTM 표본으로.