Files
Aislo/docs/raw/plans/2026-07-20_plan_B05_longitudinal_grade_line.md
T
eomsangdonandClaude Opus 5 eb30b774f8 chore(docs): docs 폴더 git 추적 전환 · PLAN·OWNERS 최상위 이관
- `docs/` 를 .gitignore 에서 빼 git 추적 대상으로 전환 (위키·완료 이력·검증 기록)
- `docs/raw/PLAN.md` · `docs/raw/OWNERS.md` 를 저장소 최상위로 이동 후 .gitignore 에 등록
  — 창끼리 공유하되 저장소에는 안 올리는 장부
- 살아 있는 경로 참조 7개 파일 정정 (아카이브 107건은 그때 사실이라 그대로 둠)
- graphify 날짜별 산출물(`docs/wiki/graphify-out/20*/`) 제외 — `graphify update` 가 다시 만듦

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-09 18:19:07 +09:00

3.2 KiB
Raw Blame History

PLAN Archives: B05 종단 계획선(계획고) 자동 생성

  • 완료 일시: 2026-07-20
  • 이관 문서: docs/raw/plans/2026-07-20_plan_B05_longitudinal_grade_line.md

1. 목표

B05 하단 종단면도에 현황 지반선(기존) 위에 계획선(공사 예정 노면고) 을 추가한다. 계획선은 직선(일정 종단기울기) + 원곡선(종단곡선) 만으로 구성되며, 절토량과 성토량이 균형을 이루도록(∫(계획고−지반고)ds ≈ 0) 자동 산출한다. 실행 시점은 [최적 경로 계산] 버튼 처리 파이프라인의 마지막 단계 (종횡단 생성 직후).

2. 설계 기준값 — 법정 근거 및 Config 설계

출처: 「임도설치 및 관리 등에 관한 규정」 [별표 1-2] 임도의 설계 및 시설기준(제9조의19 관련). 기준은 임도등급이 아니라 설계속도 × 지형구분(일반/특수) 으로 규정되어 있다.

2-1. 종단기울기 (순기울기 상한)

설계속도 (km/h) 일반지형 특수지형 역기울기
40 7% 이하 10% 이하 5% 이하
30 8% 이하 12% 이하 5% 이하
20 9% 이하 14% 이하 5% 이하
  • 예외: 특수지형에서 기준 적용이 어려운 경우 노면포장 시에 한하여 18% 범위 내 조정 가능.
  • 합성기울기 12% 이하 (부득이 시 간선임도 13%, 지선임도 15%).

2-2. 종단곡선

설계속도 (km/h) 최소 반경 (m) 최소 곡선길이 (m)
40 450 이상 40 이상
30 250 이상 30 이상
20 100 이상 20 이상
  • 예외: 비포장 도로이면서 종단기울기 대수차(A)가 5% 이하이면 종단곡선을 넣지 않는다 → 알고리즘 3단계에 조건 분기로 반영.

3. 구현 체크리스트 (완료)

  • config_system.pyFOREST_ROAD_PROFILE_CRITERIA 법정 기준 사전 추가 (경로찾기 값과 분리 확인)
  • B05_wf2_Route_Engine_Grade.py 계획선 엔진 신규 작성 (구역분할·PVI최적화·종단곡선·균형보정)
  • 종단곡선 법정 예외(비포장 & 대수차 5% 이하) 분기 구현
  • run_section_generation() 연동 및 longitudinal.json design_profiles 배열 스키마 확장
  • Schema / Router 옵션 6종 및 응답 필드 확장 (요청→DB→Config 3단 폴백)
  • longitudinal_sections DB 저장 확장 (get_latest_grade_options 헬퍼 신설)
  • 좌측 패널 계획선 옵션 폼 + 등급→설계속도 연동 기본값
  • 종단면도 SVG 계획선·절성토 음영·균형 지표 렌더링
  • 새로고침 복원(GET /route/latest) 시 계획선 재표시 확인
  • ruff format / prettier 실행

4. 구현 중 발생 편차 및 수정사항

  1. 엔진 파일 분할: B05_wf2_Route_Engine_Grade.py (560줄) 및 B05_wf2_Route_Engine_Grade_Solver.py (352줄)로 분할.
  2. 역기울기 오적용 및 V/Λ자 지형 대응: _detect_main_direction()을 통해 계곡 횡단/능선 통과 노선의 방향 오판 방지.
  3. 스티키 기본값 버그 방지: DB에 오버라이드값(grade_overrides)과 해석결과(grade_options)를 분리.
  4. 경사 단위(%) 통일: UI/Schema/DB 모두 % 단위로 일관화 및 레거시 비율 자동 환산.