knowledge(요구): 요구서 463 · 분석 셋 — 예정노선 화면 개편(위치 칸 · 고르기 · 긋기 · 3D · 지도 받기) · PLAN 594~602 승인 대기
- 분석 A 왼쪽 판 · 위치 · 지점 / B 그리기 · 고르기 · 3D / C 자료 · 성능 · 임도망 - 사용자 결정 둘(지형 격자 · 「지점으로」 뜻) · 정함(브레인) 스물하나 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,276 @@
|
||||
# 요구 463-A — 페이지 이름 · 왼쪽 판(위치 · 서클 · 설명 글 · 지점 · 구역/연도) · 등록 찾기 · 조사
|
||||
|
||||
- 근거 = 요구 463 1~8 · 14 · 26(`docs/raw/요구_1025/사용자요구_1025.md:774-808`) · `_분석_452-B` · `요구서_452`.
|
||||
- 실측 = 코드 읽기만(2026-10-30 · `0f20f6472`). 코드 · git · storage · DB 고침 없음.
|
||||
|
||||
## 0. 한눈에
|
||||
|
||||
| 항목 | 지금 | 고칠 크기 |
|
||||
| --- | --- | --- |
|
||||
| 1 이름 | 글 셋 자리(사전 · 대시보드 단계 이름 · 단축키 표) + 덧글 둘 + 가이드 20 파일 · 시험 단언 2 | 작음 |
|
||||
| 2 서클 | 부품 `createProgressCircle` 있음 · 지금은 칸 안 막대 + 글 | 작음(부품에 귀퉁이 꼴 더함) |
|
||||
| 3~5 위치 | 기준점 = DB `projects.site_*` · D03 은 읽기만 · 고칠 자리 없음(452 물음 9 「대시보드 고침 창」 안 만들어짐) · 처음 진입 = 이미 기준점 둘레 1 km | 중간(찾기 길 + 위치 칸 + [저장] 몸에 site) |
|
||||
| 6 설명 글 | 네 칸에 상태 · 안내 글 열넷 | 작음 |
|
||||
| 7~8 지점 | 우클릭 「지점 놓기」 있음 · [추가] 단추 없음 · 이름 = 차례로 정해짐(저장 칸 없음) · 좌표 = 보기만 | 중간(저장 꼴에 이름) |
|
||||
| 14 구역/연도 | 날 div 줄 · 색 없음(지도 선도 한 색) · 연도 · 이름 · 지움 없음(속성 판에만 연도 · 선 지움) | 중간(선 이름 저장 꼴 + 선 색) |
|
||||
| 26 등록 찾기 | 찾기 없음 · 서버 VWorld 주소 찾기 길은 이미 있음(대시보드 회사 주소 · B08 이 씀) | 작음 |
|
||||
|
||||
## 1. 「노선 분석」 → 「예정노선」
|
||||
|
||||
### 지금(이름이 박힌 자리)
|
||||
|
||||
| 묶음 | 자리 |
|
||||
| --- | --- |
|
||||
| 단계 막대 · 화면 머리 · 대시보드 단계 막대 | `ui_template/ui_template_locale_de.ts:13` `DE_Step_PlanAnalysis` (머리 = `A00_Common/group_workflow.ts:31` · `:74` · 대시보드 = `groupFlowOf`) |
|
||||
| 대시보드 홈 카드 「다음: …」 · 「1 / 2 · …」 | `B01_Dashboard/B01_Dashboard_Summary.py:28` `STAGE_NAMES["PLAN"]` → `B01_Dashboard_UI_Home_Cards.ts:59 · 89 · 208` |
|
||||
| 설정 창 단축키 표 자리 이름 | `A00_Common/key_registry.ts:50` 「D03 노선분석」 |
|
||||
| D04 표 글 | `ui_template_locale_de.ts:31` `D04_NotSaved` 「노선 분석 [저장] 전」 |
|
||||
| D01 지도 안내 | `ui_template_locale_de.ts:93` `DE_Reg_SiteHint` 「노선분석이 처음 자료를 받는 기준」 |
|
||||
| 메뉴(☰) | 따로 없음 — 단계 글을 따름 |
|
||||
| 시험 단언 | `resources/tester/test_547_1_project_summary.py:25 · :125` 「노선 분석」 |
|
||||
| 가이드 | `A05_EduDetail/guide/` D01(00 · 01 · 02 · 04 · 10) · D03(00~08 · 20) · D04(00 · 01 · 04 · 10) = 20 파일 |
|
||||
| 덧글만 | `.env:91` · `A00_Common/b_page_state.ts:187` · D03 파이썬 머리 넷 · CSS 머리 · 시험 머리 여섯 — 고치지 않아도 됨 |
|
||||
|
||||
### 고칠 길
|
||||
|
||||
- 글만 바꿈 — 폴더 `D03_PlanAnalysis` · 주소 `#/d03-plan-analysis` · 열쇠 `DE_Step_PlanAnalysis` · 단계 키 `PLAN_ANALYSIS` 는 그대로(캐시 · 길 · DB 단계 행 · 가이드 촬영 주소가 걸림).
|
||||
- 바꿀 줄 = 사전 셋(13 · 31 · 93) · `Summary.py:28` · `key_registry.ts:50` · 시험 547_1 두 줄.
|
||||
|
||||
### D 그룹 이름 「예정노선」과 겹침
|
||||
|
||||
- 겹침 있음 — 대시보드 [+] 카드 `DE_New_Plan` 「예정노선」 · 프로젝트 종류 꼬리표 「예정노선」 · 「예정노선 등록」 · 「받은 예정노선」.
|
||||
- 보이는 꼴 = 단계 막대 [🧭 예정노선][✅ 확정 · 내보내기] · 대시보드 표 한 줄에 종류 「예정노선」 + 단계 「예정노선」 두 번.
|
||||
- 가(권함) — 「예정노선」 그대로(사용자 말) · 글 속에서는 「예정노선 화면」으로 부름 · 종류 꼬리표는 그대로.
|
||||
- 나 — 「예정노선 그리기」(겹침 없음 · 단계 이름이 하는 일을 말함).
|
||||
|
||||
### 만질 파일 · 위험
|
||||
|
||||
- 파일 = `ui_template_locale_de.ts` · `B01_Dashboard_Summary.py` · `key_registry.ts` · `test_547_1_project_summary.py` · 가이드는 지시 때 한 번에.
|
||||
- 위험 — 거의 없음 · 영문 「Route Analysis」 → 「Planned Route」 함께.
|
||||
|
||||
## 2. 「지형」 칸 → 프로그레스 서클
|
||||
|
||||
### 지금
|
||||
|
||||
- 칸 = `D03_PlanAnalysis_UI_Page.ts:204-218` — 상태 글(`terrainText`) + 막대(`createProgressBar` · 받을 때만) + [다시 받기](실패 때만).
|
||||
- 상태 글 다섯 = `:342-350`(실패 · 「받은 지형 없음 — 기준점 둘레를 받습니다…」 · 「받은 지형 없음」 · 「…밖 — 이어 받습니다」 · 「받은 지형 안」) · 받는 중 = `:389` 「지형 받기 N% · 메시지」.
|
||||
- 받기 자체는 이미 조용히 저절로(`ensureCovered` `:316-325`) · 칸은 보여 주기만.
|
||||
|
||||
### 부품 상자
|
||||
|
||||
- 서클 있음 — `ui_template/ui_template_progress.ts:41` `createProgressCircle({size, label, overlay})` · `set(비율 | null, 글)` · 늘 돎 · `pointer-events: none`(`ui_template_progress.css:9`) → 지도 조작 안 막음.
|
||||
- 쓰는 곳 = B04 지도 · 종단 · 3D 창(모두 `overlay: true` = 그릇 한가운데).
|
||||
- 모자람 — 귀퉁이 꼴 없음(`--overlay` = `inset: 0` 가운데).
|
||||
|
||||
### 고칠 길
|
||||
|
||||
- 가(권함) — 지도 오른쪽 아래 작은 서클(지름 40 · 글 「지형 N%」) · 받을 때만 보임 · 부품에 `corner` 꼴 하나 더함(`ui_template_progress.ts` · `.css` · 부품 모음 견본 `ui_template_ui_kit_parts.ts:341`).
|
||||
- 가운데 꼴(이미 있음)은 지도 한가운데(= 기준점 · 그리는 자리)를 가림 → 안 씀.
|
||||
- 나 — 「위치」 칸 머리 옆 작은 서클(칸을 접으면 안 보임).
|
||||
- 실패 = 서클 숨김 + 알림(지금 그대로) + 「위치」 칸에 한 줄 + [다시 받기](지금 단추 그대로).
|
||||
- 지도 붙임 = `map.root.append(…)`(`Page:199` 꼴 · 속성 판 · 범례와 같은 자리).
|
||||
|
||||
### 만질 파일 · 위험
|
||||
|
||||
- 파일 = `D03_PlanAnalysis_UI_Page.ts`(막대 → 서클 · `bar.set` 두 곳) · `ui_template_progress.ts` · `.css` · `ui_template_ui_kit_parts.ts`.
|
||||
- 시험 — `test_553_4_de_parts.py:35` 가 D03 페이지에 `"createProgressBar()"` 를 단언 → `createProgressCircle(` 로 고침.
|
||||
- 가이드 촬영 — `A05_EduDetail/guide/D03/_scenes.json` 열아홉 장면이 `text=받은 지형 안` 을 기다림 → 글이 없어지면 촬영 멎음(가이드 다시 찍을 때 기다림 조건 바꿈).
|
||||
|
||||
## 3~5. 「지형」 칸 → 「위치」 칸(등록 주소와 연동)
|
||||
|
||||
### 지금 — 저장 자리 · 읽는 길
|
||||
|
||||
| 무엇 | 자리 |
|
||||
| --- | --- |
|
||||
| 저장 | DB `projects.site_lon` · `site_lat` · `site_address`(`db_management/024_plan_site.sql:9-12`) · 폴더 파일엔 없음 |
|
||||
| 쓰는 곳 | D01 [등록] 한 번 — `D01_PlanRegister_Router.py:58-70`(주소 = 서버가 VWorld `reverse_place` 로 다시 찾음) → `common_util_project_kind.py:70 · 87` |
|
||||
| 고치는 곳 | 없음 — D01 은 새로 만들기만 · 대시보드 고침 창(452 물음 9) 안 만들어짐 · `site_` 를 쓰는 B01 코드 0 |
|
||||
| D03 읽기 | `D03_PlanAnalysis_Network.py:246-262` `project_info` → GET plan/network `base.site {lon, lat, address}`(`:223-232`) → 화면 `Page:547-566`(지점 · 선 없으면 기준점 ±1 km 로 맞춤) |
|
||||
| 서버 받기 범위 | `D03_PlanAnalysis_Router.py:61-72` `_plan_ends` — 지점 · 선이 없을 때만 기준점 둘레 · 그 뒤엔 지점 · 선 · 화면이 보낸 `extra` |
|
||||
| 좌표계 | 파일 머리 `epsg` · 없으면 기준점 경도 띠(`Network.py:216-220`) · 굳는 때 = 첫 [저장](파일 머리에 씀) — 지형 받기 때는 안 굳음(머리 덧글과 다름) |
|
||||
|
||||
- 4(처음 진입 = 주소 기준점으로 보여 줌)는 이미 됨 — 지도 맞춤 · 자동 받기 모두 기준점 둘레.
|
||||
- 화면에 주소 글은 지금 안 보임(`site.address` 를 받기만 하고 안 씀).
|
||||
|
||||
### 고칠 길 — 주소 바꿈 → 기준점 바꿈 → 지도 이동 → 받기
|
||||
|
||||
| 걸음 | 하는 일 | 자리 |
|
||||
| --- | --- | --- |
|
||||
| ① 칸 | 「위치」 = 지금 주소 한 줄 + 주소 · 장소 찾기 칸 + 후보 줄(부품 `createFindList` · `ui_template_find_list.ts:33`) + 실패 때 [다시 받기] | 새 `D03_PlanAnalysis_UI_Site.ts`(약 120 줄 · Page 585 줄이라 떼어 냄) |
|
||||
| ② 찾기 | 서버 공용 길 `GET /api/map/search?q=` — 주소 = 있는 `search_address`(`B01_Dashboard_Map.py:65-116` · 도로명 → 지번) · 장소 = VWorld `type=place` 몇 줄 더함 | `common_util/common_util_map_router.py` · `B01_Dashboard/B01_Dashboard_Map.py` (26 과 한 길) |
|
||||
| ③ 고름 | 후보 경위도 → `lonLatToTm` → 기준점 = 캐시 한 걸음(`Snap` 에 `site` 칸 · 되돌리기 · 떠남 물음 저절로) | `D03_PlanAnalysis_UI_Page.ts` `Snap` · `DRAFT_VERSION` 3 → 4 |
|
||||
| ④ 이동 | `map.update({fit: 기준점 ±1 km}); map.fit()`(`update` 는 처음 한 번만 맞춤 → `fit()` 부름 필요 · `UI_Map.ts:504-509 · 534`) | Page |
|
||||
| ⑤ 받기 | 고칠 것 없음 — 지도 보기 가운데가 받은 범위 밖이면 이미 조용히 받음(`viewWatch` `Page:164-187` → `ensureCovered`) · 끝나면 겹도 다시 읽음(`follow` `:370-377`) | — |
|
||||
| ⑥ [저장] | PUT plan/network 몸에 `site: {lon, lat}` 한 칸 · 바뀌었으면 서버가 주소 다시 찾아 `projects.site_*` 씀(같은 잠금 · 같은 트랜잭션) | `D03_PlanAnalysis_Network.py` `Network` 모델 · `put_plan_network` · `D03_PlanAnalysis_Api.ts` |
|
||||
|
||||
- 갈래 — 저장 때
|
||||
- 가(권함) — 캐시 → [저장] 때 함께(5장 데이터 3층 · 되돌리기 · 떠남 물음이 저절로) · 받기는 저장 전에도 바로(⑤).
|
||||
- 나 — 고르는 즉시 서버 PUT `plan/site` 따로(새 길 하나 · 되돌리기 밖 · 「즉시 쓰기」라 3층 규칙과 어긋남).
|
||||
- 좌표계 — 가 길이면 [저장] 때 화면이 들고 있던 epsg 가 머리에 굳음 → 띠 경계(경도 126° · 128°)를 넘는 이동도 안 흔들림. 나 길이면 저장 전 기준점만 바뀐 채 epsg 가 바뀔 수 있음(받은 지형과 어긋남) → 머리를 먼저 굳혀야 함.
|
||||
|
||||
### D01 과 양방향인가
|
||||
|
||||
- 값은 한 벌(DB `projects.site_*`) · D01 = 처음 씀 · D03 = 뒤에 고침 · D01 은 있는 프로젝트를 다시 열지 않음 → 「양방향 연동」은 따로 만들 것 없음(한 칸을 둘이 씀).
|
||||
- 사업 지역 · 프로젝트 이름은 등록 때 주소에서 채움(`D01 UI_Page.ts:125-134`) — D03 에서 위치를 바꿔도 안 바꿈(권함 · 내보내기 「대상지」 · 파일 이름이 걸림 `D04_PlanConfirm_Export.py:121 · 141`).
|
||||
- 452 물음 9(대시보드 고침 창)는 이 칸이 대신함 → 안 만듦(권함).
|
||||
|
||||
### 만질 파일
|
||||
|
||||
- `D03_PlanAnalysis_UI_Page.ts`(지형 칸 걷음 · Snap · 저장 몸) · 새 `D03_PlanAnalysis_UI_Site.ts` · `D03_PlanAnalysis_Api.ts`(찾기 · 몸 꼴) · `D03_PlanAnalysis_Network.py`(몸 `site` · DB 씀) · `common_util_map_router.py` · `B01_Dashboard_Map.py`.
|
||||
- 시험 — `test_591_2_plan_points.py` 에 「몸 site → DB 칸 · 주소 다시 찾음 · 빈 값 = 그대로」 더함 · 찾기 길 시험(VWorld 가짜) 하나.
|
||||
|
||||
### 위험
|
||||
|
||||
- **먼 곳 = 거대 받기** — 서버 받는 범위 = 새 상자 ∪ 받은 범위 상자(`D03_PlanAnalysis_Terrain.py:93-100` `wanted_box`) · 크기 한도 없음 → 10 km 옮기면 10 km 넘는 상자를 통째 받음(도엽 · 위성 · DEM · 지적). 지금도 지도를 멀리 끌면 같은 일(보기 상자 2 km 한도는 「넓이」만 막고 「거리」는 안 막음 `Page:74`).
|
||||
- 막는 길 = 선 · 지점이 없으면 받은 범위를 버리고 새로(서버 `TerrainBody` 에 `fresh` 한 칸) · 있으면 합침 + 상자 한 변이 어느 크기를 넘으면 묻기 → 사용자 결정 3.
|
||||
- storage 가 Synology 로 데스크탑과 맞춰짐 → 먼 곳 받기가 그쪽 디스크까지 불림.
|
||||
- VWorld 장소 찾기(`type=place`) 응답 꼴 · 산 지번 찾기 질 · 하루 한도 = 실측 안 함.
|
||||
- 「위치」 칸은 요구 463-19(임도망 올리기 단추를 이 칸으로)와 같은 칸 → 같은 창에 묶음(끝 「파일 경계」).
|
||||
|
||||
## 6. 칸 안 설명 글
|
||||
|
||||
| 칸 | 글(파일:줄) | 권함 |
|
||||
| --- | --- | --- |
|
||||
| 지형(→ 위치) | 「받은 지형 없음 — 기준점 둘레를 받습니다(길이 · 기울기는 지형을 받은 뒤).」 `UI_Page.ts:346` | 지움(서클이 대신) |
|
||||
| | 「받은 지형 없음」(보기만 계정) `:347` | 지움 |
|
||||
| | 「지점 또는 그은 선이 받은 지형 밖 — 이어 받습니다.」 `:349` | 지움 |
|
||||
| | 「받은 지형 안」 `:350` | 지움 |
|
||||
| | 「지형 받기 N% · 메시지」 `:389` | 서클 글로 옮김 |
|
||||
| | 「지형 받기 실패 — 까닭」 `:343` | 남김(+ [다시 받기]) |
|
||||
| | 「기준점이 없습니다 — 예정노선 등록에서 정하세요.」 `:549` | 남김 → 위치 칸이 생기면 「주소를 찾아 정하세요」 |
|
||||
| | 「불러오지 못했습니다 — 까닭」 `:583` | 남김(오류) |
|
||||
| 지점 | 「보기만 — 지점은 산림청이 놓습니다.」 `UI_Points.ts:185` | 지움(단추 숨김으로 충분) |
|
||||
| | 「지점 없음」 `:186` | 지움 |
|
||||
| | 「핀을 끌면 그 자리 노선 점도 같이 옮깁니다 · 지도 우클릭 「지점 놓기」로 더함.」 `:188` | 지움([추가] 단추가 대신) |
|
||||
| | 「지도 우클릭 「지점 놓기」 — 긋기가 붙는 점(…)」 `:189` | 지움 |
|
||||
| 그리기 | 「[긋기]로 지점 · 선에서 긋습니다 · 지도 우클릭 = … 「연도 마커」를 선 위로 끌면 구역을 나눕니다.」(쉴 때 · 가장 김) `UI_Draw.ts:207` | 지움 |
|
||||
| | 「보기만 — 산림청 계정에서 긋습니다.」 `:202` | 지움 |
|
||||
| | 「지점 · 선 끝 · 선 위를 눌러 시작합니다 — 빈 땅은 우클릭 …」(긋기 첫 누름 전) `:61 · 205` | 지움 |
|
||||
| | 「누름 = 점 · Enter 끝 · Esc 취소 · Backspace 마지막 점 빼기」(긋는 중) `:206` | 남김 또는 지움 — 사용자 결정 5(권함 = 지움 · 키는 [?] 가이드 · 설정 단축키 표) |
|
||||
| | 「≈ N°」 기울기 각 `:176-180` | 남김(값) |
|
||||
| 구역 · 연도 | 「선을 그으면 구역이 생깁니다.」 `UI_Props.ts:237` | 지움(빈 칸) |
|
||||
|
||||
- 지우면 글 그릇(`hint` 요소 · `.d03-plan__hint` `UI_Style.css:80`)도 함께 걷음.
|
||||
- 시험 단언 없음(위 글을 찾는 시험 0) · 가이드 촬영 기다림만 걸림(2장).
|
||||
|
||||
## 7~8. 지점 — [추가] · 이름 · 좌표 손 고침
|
||||
|
||||
### 지금
|
||||
|
||||
| 무엇 | 자리 · 상태 |
|
||||
| --- | --- |
|
||||
| 칸 | `UI_Points.ts:161-190` — 줄 = 부품 `createListRow`(이름 「지점 N」 · 둘째 줄 경위도 6 자리 · 왼 띠 `pointColor(i)` · 🗑) · 보기만 |
|
||||
| 우클릭 메뉴 | 있음 `:106-130` — 핀 위 = 「지점 N에서 긋기 시작」 · 「지점 N 지우기」 / 그 밖 = 긋기 시작 갈래 넷 + 「지점 놓기」(꺾임점 둘레면 그 점에 붙음) |
|
||||
| [추가] 단추 | 없음 |
|
||||
| 이름 | 고칠 수 없음 — 차례로 정해짐(`:68` · 핀 글 `UI_DrawPaint.ts:161`) · 저장 칸 없음(파일 `points: [{x, y}]` `Network.py:337`) |
|
||||
| 좌표 | 고칠 수 없음 — 핀 끌기만(`:135-159` · 그 자리 노선 점 같이 `moveNodesAt`) |
|
||||
| 상한 | 40(`:24` · 서버 `MAX_POINTS`) |
|
||||
|
||||
### 고칠 길
|
||||
|
||||
- [추가] — 칸 머리 오른쪽 작은 단추(부품 `createPanelHead` actions 또는 `createIconButton`) · 누름 = 지금 지도 보기 가운데에 바로 놓음(누름 걸음 없음 · 놓은 뒤 끌기 · 손 고침) · 가운데 = 페이지가 이미 재는 `viewCore` 상자 가운데를 Points 에 넘김.
|
||||
- 이름 · 좌표 — 줄 누름 = 그 줄만 펼침(이름 · 경도 · 위도 칸 셋 · 부품 `createInputField` size 24) · Enter · 칸 떠남 = 한 걸음(되돌리기 · 캐시).
|
||||
- 좌표 = 경위도(권함 · 지금 보이는 값 그대로 · `lonLatToTm` 있음) / TM(m).
|
||||
- 좌표를 손으로 옮길 때도 그 자리 노선 점 같이(핀 끌기와 같은 규칙 · 권함) — 463-15(지점 ↔ 노드 연동)와 같은 규칙이라 그쪽 결론을 따름.
|
||||
- 저장 꼴 — 이름 칸 더함
|
||||
- 가(권함) — 화면 상태는 `points: Vertex[]` 그대로 + 곁 목록 `pointNames: string[]`(차례 같음 · Draw · Edit · 겹이 쓰는 꼴 안 바뀜) · 몸 `point_names` · 파일 `points: [{x, y, name}]` · GET `base.points[].name`.
|
||||
- 나 — 몸 · 화면 모두 `{x, y, name}` 객체(쓰는 곳 열 남짓 · 시험 591_2 몸 꼴 모두 고침).
|
||||
- 빈 이름 = 「지점 N」 보임(저장은 빈 값) · 지우면 이름도 같이 빠짐 · 색은 지금처럼 차례 색.
|
||||
|
||||
### 만질 파일
|
||||
|
||||
- `D03_PlanAnalysis_UI_Points.ts`(209 줄 · 칸 · 추가 · 펼침) · `UI_DrawPaint.ts:140-165`(핀 글 = 이름) · Page `Snap` 에 이름(3~5 와 같은 자리) · `D03_PlanAnalysis_Network.py:63-71 · 223-232 · 335-337` · `D03_PlanAnalysis_Api.ts` `BasePoint`.
|
||||
- 시험 — `test_591_2_plan_points.py` 이름 오감 · 빈 값 · 길이 한도.
|
||||
|
||||
### 사용자 결정 · 위험
|
||||
|
||||
- 이름 길이 · 글자 — 핀 글이 지도를 가림 → 20 자 안쪽(권함).
|
||||
- 40 줄 펼침 칸은 왼쪽 판을 길게 함 → 한 줄만 펼침.
|
||||
|
||||
## 14. 「구역 · 연도」 칸 — 선 색 · 연도 · 이름 · 지움
|
||||
|
||||
### 지금
|
||||
|
||||
| 무엇 | 자리 · 상태 |
|
||||
| --- | --- |
|
||||
| 목록 꼴 | `UI_Props.ts:179-239` — 날 div 줄 셋 갈래: 해 줄(「2027년 · 구간 3 · 512.4 m」) · 선 머리 줄(「본선 · 812.3 m」) · 구간 줄(「No.0 ~ No.12+5.0 (245.0 m)」 + 「2027년」) · 누름 = 고름만 · 줄 꼴 = 페이지 CSS `.d03-plan__piece*`(`UI_Style.css:103-197`) |
|
||||
| 선 색 | 없음 — 지도 선도 모두 한 색(`UI_DrawPaint.ts:103` `routeLineColor` · 그리는 선만 보라) |
|
||||
| 연도 지정 | 목록엔 없음(445-A 에서 「고치는 길 한 곳 = 속성 판」으로 정함) · 속성 판 고름 칸 `UI_Props.ts:98-108` · 셈은 `setPiecesYear` · `setLineYear`(`logic/D03_PlanAnalysis_Plan.ts:512 · 537`) 있음 |
|
||||
| 이름 | 고칠 수 없음 — 「본선 · 본선 N · 갈래 N」 차례로 정함(TS `lineNames` `Plan.ts:267` ↔ 파이썬 `line_names` `D04_PlanConfirm_Repository.py:28` · 거울 시험 530-3) · 저장 칸 없음 |
|
||||
| 지움 | 목록엔 없음 · 속성 판 [선 지움](선 하나 고름 때 `UI_Props.ts:139-145`) · 셈 `removeLine`(갈래 붙은 선은 막음 `Plan.ts:438-446`) |
|
||||
|
||||
### 고칠 길
|
||||
|
||||
- 줄 꼴 — 날 div → 부품 `createListRow`(지점 칸과 같음 · 왼 띠 = 선 색 · `trailing` = 연도 고름 + 🗑) · 측점 글은 둘째 줄 흐리게 또는 뺌 · 페이지 CSS 줄 꼴 걷음(부품 규칙 맞춤).
|
||||
- 선 색 — 지도 선 · 목록 띠 같은 값
|
||||
- 가(권함) — 선(본선 · 갈래)마다 차례 색 · 부품 `ui_template_palette.ts` 에 `lineColor(i)`(지점 색 여섯과 안 겹치는 `--draw-*` 값 · 모자라면 새 `--draw-plan-*`) · `paintNetwork` 선 붓 색.
|
||||
- 나 — 연도마다 색(해 줄 띠) · 한 선 안에서 색이 갈림.
|
||||
- 연도 — 선 머리 줄 = 고름 칸(「여러 해」 포함 · `setLineYear`) · 구간 줄 = 고름 칸(`setPiecesYear`) · 고를 해 목록 = 있는 `yearOptions`(`UI_Props.ts:63-68`) · 속성 판 고름은 그대로(두 곳 · 같은 셈).
|
||||
- 이름 — 선 머리 줄 ✎ 또는 두 번 누름 → 부품 `askText`(`ui_template_modal.ts:178`) → `PlanLine.name`.
|
||||
- 저장 꼴 = TS `PlanLine` 에 `name?` · 서버 `Line` 모델에 `name: str | None`(지금 Pydantic 이 모르는 칸을 조용히 버림) · 파일엔 저절로 실림 · 짝 둘(`lineNames` · `line_names`) = 「이름 있으면 그것 · 없으면 차례 이름」 · 거울 시험 고침.
|
||||
- 지움 — 선 머리 줄 🗑 → `removeLine` 한 걸음(갈래 붙음 = 알림) · 묻기 창(부품 `askConfirm`).
|
||||
|
||||
### 만질 파일
|
||||
|
||||
- `D03_PlanAnalysis_UI_Props.ts`(목록 · 250 줄 → 목록을 새 `D03_PlanAnalysis_UI_Pieces.ts` 로 떼어도 됨) · `UI_DrawPaint.ts`(선 색) · `UI_Style.css`(줄 꼴 걷음) · `ui_template_palette.ts` · `logic/D03_PlanAnalysis_Plan.ts`(`PlanLine.name` · `lineNames`) · `D03_PlanAnalysis_Network.py` `Line` · `D04_PlanConfirm_Repository.py:28` `line_names`.
|
||||
- 시험 — 530-3 거울(이름 칸) · 563_2(조각 이름표) · 새 이름 오감 하나.
|
||||
|
||||
### 위험
|
||||
|
||||
- 선 이름이 D04 내보내기 zip 폴더 · 첨부 이름(`D04_PlanConfirm_Router.py:160-163` 「2026_갈래1_p3」) · shp `line` 칸(`:249`) · 업체 목록 조각 이름표(`piece_label` `:373`)에 들어감 → 파일 이름에 못 쓰는 글자(`/ \ : * ? " < > |`) 막음 · 길이 한도(20 자 권함) · 서버 검사.
|
||||
- 이름은 지문에 안 들어감(`Network.py:184-192` 지문 = 선 id · 꼴) → 확정 뒤 이름을 바꿔도 확정 안 풀림 · 이미 보낸 메일 · 내보낸 파일 이름과 달라짐.
|
||||
- 업체 지정된 조각의 선 지움 = 서버 409(`Network.py:285-290`) → 화면은 [저장] 때에야 앎(지금과 같음).
|
||||
- 선 색이 바탕 겹 색(계류 파랑 · 도로 · 급경사)과 겹칠 수 있음 → 463-24(색 잘 안 보임 점검)와 함께 봄.
|
||||
- 445-A 결정(목록 = 보기 + 고르기만)을 뒤집음 → 요구서에 적음.
|
||||
|
||||
## 26. 등록(D01) 카카오 지도 찾기
|
||||
|
||||
### 지금
|
||||
|
||||
- 지도 머리 = 「기준점」 글 + [일반][위성](`D01_PlanRegister_UI_Page.ts:51-62 · 88-90`) · 찾기 없음.
|
||||
- 카카오 SDK = `services` 없이 실림(`ui_template_kakao_map.ts:95` `?appkey=…&autoload=false`) → `Geocoder` · `Places` 못 씀.
|
||||
- `GET /api/map/address`(`common_util_map_router.py:28-33`)는 좌표 → 주소(거꾸로)만 · 앞으로 찾기 아님.
|
||||
- 앞으로 찾기 = 이미 있음 — `GET /api/dashboard/company/address/search?query=`(`B01_Dashboard_Router.py:206-213` · VWorld · 도로명 → 지번 · 후보 경위도) · 쓰는 곳 = 회사 주소 칸(`B01_Dashboard_UI_AddressField.ts:129`) · B08 소재지(`B08_Quantity_UI_Milestone_Place.ts:103`).
|
||||
- 고른 뒤 지도 이동 = `editMap.set` 이 보기 밖 표지로 옮겨 줌(`ui_template_kakao_map.ts:291-305`) → D01 `moveTo(lon, lat)` 한 번 부르면 됨(주소 · 사업 지역 채움까지 그대로).
|
||||
|
||||
### 고칠 길
|
||||
|
||||
- 가(권함) — 서버 VWorld · 3~5 와 같은 새 길 `GET /api/map/search`(주소 = 있는 `search_address` · 장소 = `type=place`) · D01 · D03 이 같이 씀(D03 지도는 카카오가 아니라 카카오 찾기를 못 씀) · 주소 출처 = VWorld 한 곳(452 물음 13 과 같음).
|
||||
- 장소 없이 주소만이면 서버 고침 0 — 있는 대시보드 길 그대로.
|
||||
- 나 — 카카오 `libraries=services`(SDK 주소 한 줄 · `Places.keywordSearch` 가 장소 이름에 강함) · D01 만 됨 · B08 지도 SDK 도 같이 바뀜(덧붙임이라 해 없음) · 카카오 하루 한도.
|
||||
- 칸 — [위성] 오른쪽 = 부품 `createFindList`(찾기 칸 `type=search` + 후보 줄 · ↑↓ Enter) · 후보 줄은 머리 아래로 펼침(지도 위에 띄우는 꼴은 부품에 없음) · Enter = 찾기 · 고름 = `moveTo`.
|
||||
- 글 = `ui_template_locale_de.ts` `DE_Reg_*` 에 셋(자리 글 · 없음 · 실패).
|
||||
|
||||
### 만질 파일 · 위험
|
||||
|
||||
- `D01_PlanRegister_UI_Page.ts`(181 줄) · `ui_template_locale_de.ts` · (가) `common_util_map_router.py` · `B01_Dashboard_Map.py`.
|
||||
- 시험 — `test_591_1_plan_site.py:82` 단언(`editMap(` · `/map/address`)은 그대로 삶 · 찾기 길 시험 하나.
|
||||
- 위험 — 머리 줄이 좁은 카드(`narrow: true` `:175`)라 [일반][위성] + 찾기 칸이 한 줄에 안 들어갈 수 있음 → 찾기 칸 줄바꿈 허용.
|
||||
|
||||
## 파일 경계 제안(창 셋 · 파일 안 겹침)
|
||||
|
||||
| 창 | 맡는 항목 | 파일(이 창만 만짐) |
|
||||
| --- | --- | --- |
|
||||
| A 서버 · 저장 꼴 | 3~5 서버(몸 `site` · DB 씀) · 7~8 서버(지점 이름) · 14 서버(선 이름 · 짝) · 26 · 3~5 찾기 길 | `D03_PlanAnalysis_Network.py` · `D04_PlanConfirm_Repository.py` · `logic/D03_PlanAnalysis_Plan.ts`(`PlanLine.name` · `lineNames`) · `D03_PlanAnalysis_Api.ts` · `common_util_map_router.py` · `B01_Dashboard_Map.py` · 시험 591_2 · 530_3 · 563_2 · 새 찾기 시험 |
|
||||
| B 페이지 · 위치 · 서클 · 이름 · 등록 | 1 · 2 · 3~5 화면 · 26 화면 · 6(위치 칸 글) · 463-19 임도망 단추 자리(같은 칸) | `D03_PlanAnalysis_UI_Page.ts`(`Snap` 에 `site` · `pointNames` · Points 넘김 꼴 먼저 정함) · 새 `D03_PlanAnalysis_UI_Site.ts` · `ui_template_progress.ts` · `.css` · `ui_template_ui_kit_parts.ts` · `ui_template_locale_de.ts` · `B01_Dashboard_Summary.py` · `key_registry.ts` · `D01_PlanRegister_UI_Page.ts` · 시험 553_4 · 547_1 |
|
||||
| C 지점 · 구역 칸 | 6(지점 · 그리기 · 구역 글) · 7~8 화면 · 14 화면 | `D03_PlanAnalysis_UI_Points.ts` · `UI_Props.ts`(+ 새 `UI_Pieces.ts`) · `UI_DrawPaint.ts` · `UI_Draw.ts`(글만) · `UI_Style.css` · `ui_template_palette.ts` |
|
||||
|
||||
- 차례 — A 가 몸 · GET 꼴(`site` · `point_names` · `Line.name`)을 먼저 올림 → B · C 동시. B 가 `Page` 주인 · C 는 Page 안 만짐(Points 넘김 꼴 = `names()` · `commit(points, names, network)` · `center()` 를 B 가 먼저 박음).
|
||||
- 463 다른 항목과 겹침 — `UI_Draw.ts` 는 463-10 · 11 · 22(긋기 옵션) · `UI_Props.ts` · `UI_Edit.ts` 는 463-12 · 15 · 16(고름 · 속성 판) · `UI_Layers.ts` 는 463-19 → 그 일들과 같은 창에 묶거나 차례로.
|
||||
- 가이드(`A05_EduDetail/guide/D01 · D03 · D04` · `_scenes.json`) = 사용자 지시 때 한 번에.
|
||||
|
||||
## 사용자 결정 거리(괄호 = 권함)
|
||||
|
||||
1. 페이지 이름 — (「예정노선」 그대로 · 글 속은 「예정노선 화면」) / 「예정노선 그리기」.
|
||||
2. 서클 자리 — (지도 오른쪽 아래 작은 서클) / 「위치」 칸 머리 옆.
|
||||
3. 먼 곳으로 위치를 옮길 때 받기 — (선 · 지점이 없으면 옛 받은 범위를 버리고 새로 · 있으면 합침 + 상자 한 변 5 km 넘으면 묻기) / 늘 합침(지금).
|
||||
4. 위치 바꿈 저장 — (캐시 → [저장] 때 함께 · 되돌리기 됨) / 고르는 즉시 서버.
|
||||
5. 긋는 중 키 안내 한 줄 — (지움) / 남김.
|
||||
6. 위치 바꿈 때 사업 지역 · 프로젝트 이름 — (안 바꿈 · 주소만) / 주소에서 다시 채움.
|
||||
7. 지점 좌표 손 고침 단위 — (경위도) / TM(m).
|
||||
8. 지점 좌표를 손으로 옮길 때 그 자리 노선 점 — (같이 옮김 · 핀 끌기와 같음 · 463-15 결론 따름) / 지점만.
|
||||
9. 지점 [추가] 놓는 자리 — (지도 보기 가운데에 바로) / 다음 지도 누름이 놓음.
|
||||
10. 구역/연도 선 색 — (선마다 차례 색 · 지도 선도 같은 색) / 연도마다 색.
|
||||
11. 선 · 지점 이름 한도 — (20 자 · 파일 이름 못 쓰는 글자 막음).
|
||||
12. 등록 찾기 출처 — (서버 VWorld · 주소 + 장소 · D01 · D03 같이) / 카카오 services(D01 만).
|
||||
13. 대시보드 기준점 고침 창(452 물음 9) — (안 만듦 · 「위치」 칸이 대신).
|
||||
@@ -0,0 +1,222 @@
|
||||
# 분석 463-B — 예정노선 그리기 · 고르기 · 오버레이 · 우클릭 · 3D · 재기 · 색 (요구 463 의 9 · 10 · 11 · 12 · 13·16 · 15 · 21 · 22 · 23 · 24)
|
||||
|
||||
읽기 전용 · 코드 · git · storage · DB 고침 없음 · 줄 = main_laptop_1 `0f20f6472`.
|
||||
파일 줄임 — `Plan` = `D03_PlanAnalysis/logic/D03_PlanAnalysis_Plan.ts` · `Draw` = `_UI_Draw.ts` · `Paint` = `_UI_DrawPaint.ts` · `Edit` = `_UI_Edit.ts` · `Props` = `_UI_Props.ts` · `Points` = `_UI_Points.ts` · `Map` = `_UI_Map.ts` · `Page` = `_UI_Page.ts` · `Measure` = `_UI_Measure.ts` · `3D` = `_UI_3D.ts` · `Net` = `D03_PlanAnalysis_Network.py` · `Theme` = `ui_template/ui_template_theme.css`.
|
||||
|
||||
## 0. 한눈에
|
||||
|
||||
- 자료 꼴 = 파일 하나 `plan_network.json` {points · lines(꺾은선 · 갈래 고리) · marks · pieces(선 위 구간 × 연도)} · DB `plan_networks` · `plan_route_pieces` 는 이미 지움(`db_management/025_plan_old_columns.sql:26-27`) · 업체 열쇠 = 조각 id.
|
||||
- 「선 = 두 노드 사이」는 지금 낱 자료 없음(꺾은선의 토막일 뿐) — 저장 꼴 안 바꾸고 고름 꼴만 바꾸면 됨. 「구역」 뜻 하나만 정하면 셋 층 맞음.
|
||||
- 긋기 방식은 화면에 하나만 기억(`Draw:117-119`) · 노드마다 기록 없음 → 노드 기록은 선 꼴에 칸 하나 덧(서버 `Line` 모델 · 파일) 필요.
|
||||
- 우클릭 = D03 혼자 쓰는 길(`Map:482-488` → `Edit:386-400` 즉시 지움) — B05 우클릭(`B05_Profile_UI_RouteEdit_Input.ts:162-178` `bindNodeSplice`)과 코드 안 나눔 → B05 고침 0.
|
||||
- 3D 는 B05 뷰어가 코리도 한 벌 · 노선 한 줄만 받음(`B05_Profile_UI_Viewer_Corridor.ts:226-236` · `B05_Profile_UI_Markers.ts:251-256`) → 노선망 전체는 B05 3D 뷰어에 「여러 벌」 덧이 있어야 함. 예상 단면 셈은 옛 544 코드가 git 에 있음(`cdcdd5f59^:D03_PlanAnalysis/logic/D03_PlanAnalysis_Expect.ts`).
|
||||
- 색 흠 뿌리 = `planColors().active` = `--draw-primary` — 밝은 테마 `#26114a`(`Theme:538`) · 바탕은 늘 어두움(위성 · 음영 · 빈 바탕 `#1f2937` `D03_PlanAnalysis_UI_Style.css:20`) → 대비 약 1.1 : 1(안 보임) · 어두운 테마 `#b99aff`(`Theme:592`) 약 6 : 1. `Map:44` 주석 「밝음 · 어두움 같음」은 틀림.
|
||||
|
||||
---
|
||||
|
||||
## 9. 노선 = 전체 / 구역 / 선 — 자료 꼴 맞음
|
||||
|
||||
| 사용자 말 | 지금 자료 | 자리 | 맞음 |
|
||||
| --- | --- | --- | --- |
|
||||
| 선(두 노드 잇기) | 꺾은선 `vertices[i]→[i+1]` 토막 · 낱 id 없음 | `Plan:16-20` | 저장 칸 안 바꿈 · 「선 id + 토막 번호」로 가리킴 |
|
||||
| 구역(선 무리) | 가) 그은 꺾은선 하나(본선 · 갈래 · `PlanLine`) · 나) 연도 마커 사이 조각(`PlanPiece`) | `Plan:16-29` · 이름 `Plan:267-274` ↔ `D04_PlanConfirm_Repository.py:28-41` | 뜻을 정해야 함(결정 1) |
|
||||
| 전체(구역 조합) | `lines` 전부 | `Plan:31-34` | 맞음 |
|
||||
| 연도 · 업체 단위 | 조각 = 선 위 [from_m, to_m] · 마커 = 조각 경계 · 마커는 토막 가운데도 놓임 | `Plan:120-135` · `Net:89-171` · `plan_route_assignees.piece_id` | 그대로 |
|
||||
|
||||
- 지금 고름 = 조각 묶음 + 넓이 「구간 → 선 → 같은 해」(`Edit:52-53` · `:126-134`) — 사용자가 보는 「구역 · 전체」 = 선(꺾은선) · 같은 해(대개 노선망 전체) · 토막 고름 없음.
|
||||
- 고칠 길(권함 = 가) — 구역 = 그은 꺾은선(본선 · 갈래 · 14 의 「본선 · 지선 그룹 이름」과 같은 것) · 조각 = 구역 안 연도 구간(속성).
|
||||
- 고름 꼴 `PlanSelection`(`Edit:71-76`) → `{kind: "node" | "segment" | "line" | "all" | "mark", line?, vertex?, segments?, lines?}` · 누름 넓힘 = 선 → 구역 → 전체.
|
||||
- 「같은 해」 고름 = 왼쪽 목록 해 줄로만 남김(`Props:185-204`).
|
||||
- 끌어 고르기(`Plan:580-603` `piecesInBox`) → 토막 판정 하나 덧(`segmentsInBox` · 같은 셈).
|
||||
- 나 = 구역 = 조각 — 마커가 토막 가운데에 놓이면 「선 무리」가 아님 → 마커를 노드에만 놓게(놓을 때 노드 끼움) 바꿔야 함 · 본선 · 갈래는 넷째 층으로 남음.
|
||||
- 만질 파일 — `Edit` · 새 `_UI_Select.ts`(고름 상태 떼어냄) · 새 `logic/D03_PlanAnalysis_Select.ts`(토막 판정 · 토막 · 구역 · 전체 지움) · `Props`.
|
||||
- 위험 — 저장 꼴 그대로(가) · 업체 줄 = 조각 id 그대로 · 시험 `test_585_2_plan_select.py` 고름 꼴 바뀜.
|
||||
|
||||
## 10. 긋기 방식 이름 · 두 열
|
||||
|
||||
| 지금 | 자리 |
|
||||
| --- | --- |
|
||||
| 마디 고름 넷 「자유 · 길이 고정 · 기울기 고정 · 둘 다」 · 크기 24 | `Draw:131-145`(「둘 다」 `:135`) |
|
||||
| 길이 · 기울기 · 「≈ °」 한 줄(감쌈 flex) | `Draw:147-184` · CSS `.d03-plan__row` `D03_PlanAnalysis_UI_Style.css:84-95` |
|
||||
| 마디 고름 부품 = 한 줄 고정(`white-space: nowrap`) | `ui_template/ui_template_segment.css:21` |
|
||||
|
||||
- 고칠 길 — 「둘 다」 → 「길이·기울기 고정」(`Draw:135` · 값 `both` 그대로) · 입력 둘 = 두 열 격자(새 CSS 이름 하나 · 「≈ °」는 기울기 칸 아래 글).
|
||||
- 넷 이름이 길어 좌측 폭에 한 줄로 안 들어갈 수 있음 → 가) 부품 상자 마디 고름에 2 × 2 꼴 덧(권함 · 부품 규칙) · 나) 고름 칸(`createSelectField`).
|
||||
- 만질 파일 — `Draw`(또는 새 `_UI_DrawPanel.ts`) · `D03_PlanAnalysis_UI_Style.css` · (가) `ui_template_segment.ts/.css` + 부품 모음 견본.
|
||||
- 위험 — `test_553_4_de_parts.py:79`(`createInputField(` 두 번 · `createSegment({`) 그대로 맞음 · 안내 글 · 가이드 사진 낡음.
|
||||
|
||||
## 11. 노드마다 긋기 방식 · 값 기억 · 노드 고르면 고침
|
||||
|
||||
| 지금 | 자리 |
|
||||
| --- | --- |
|
||||
| 방식 · 길이 · 기울기 = 화면 변수 하나 | `Draw:117-119` |
|
||||
| 점 찍기 = 좌표만 더함 | `Draw:409-426`(`appendVertex` `:420` · `Plan:189-196`) |
|
||||
| 서버 선 = id · 꼭짓점 · 갈래뿐(덧 칸은 버려짐) | `Net:48-51` · `:67-73` · 파일 `D03_PlanAnalysis_Store.py:33-48` |
|
||||
| 노드 고름 · 노드 판 | 없음(꺾임점 누름 = 그 구간 고름 `Edit:407-418`) |
|
||||
|
||||
- 고칠 길 — 선마다 `nodes: Array<{kind, length_m, slope_pct} | null>`(꼭짓점과 같은 길이 · 첫 점 null · 붙어 끝난 점 = 「붙음」) · 없는 옛 파일 = 모두 null(기록 없음).
|
||||
- 길이를 바꾸는 순수 함수 모두 같이 맞춤 — 끼움 `Plan:165-186` · 더함 `:189-196` · 뺌 `:199-213` · 지움 `:382-413` · 방향 `:416-435`(기록이 한 칸 밀림 · 각 토막의 끝 노드로) · 이음 `:449-485` · 갈래 `:227-238`.
|
||||
- 노드 판에서 방식 · 값 바꿈 = 앞 노드 기준 같은 방향으로 다시 놓음(있는 셈 `fixedLengthPoint` · `fixedSlopePoint` · `compassPoint` `logic/D03_PlanAnalysis_Draw.ts:38-180`) → `moveVertex`(`Plan:345-367` · 갈래 첫 점 · 마커 같이).
|
||||
- 서버 `Line` 에 `nodes` 칸(길이 검사) · 셈(`derive`)은 안 읽음 · D04 · B03 은 조각만 읽어 영향 없음.
|
||||
- 방식 칸 만드는 몸을 함수로 떼어(왼쪽 「그리기」 칸 · 노드 판 둘이 씀) 같은 부품 두 벌.
|
||||
- 「지점을 선택하게 변경」 = 노드 판 [지점으로](그 노드 자리에 지점 놓음 · 15 와 이어짐)로 봄(결정 5).
|
||||
- 만질 파일 — `Plan` · `Draw`(기록) · 새 `_UI_DrawPanel.ts` · `Props`(노드 판) · `Net`(모델) · 캐시 판 `DRAFT_VERSION = 3`(`Page:82`) 그대로(덧 칸).
|
||||
- 위험 — 저장 꼴 덧(옛 파일 읽힘 · 옛 서버는 칸을 버림 → 임시 배포에서 [저장]하면 기록 사라짐 · 전역 깃 싱크 전 데스크탑 D 저장 금지) · 시험 `test_530_3_plan_logic.py` · `test_590_1_plan_file.py` · `test_530_2_plan_router.py`.
|
||||
|
||||
## 12. 선 하나 고르기 · 노선 중간 일부 다시 긋기
|
||||
|
||||
| 지금 | 자리 |
|
||||
| --- | --- |
|
||||
| 선 누름 = 조각 · 다시 누름 = 넓힘 · 토막 고름 없음 | `Edit:270-290` · `:419-424` |
|
||||
| 고른 선 위 끌기 = 꺾임점 끼워 옮김 | `Edit:435-442` |
|
||||
| 부분 다시 긋기 | 없음(이어 긋기 = 끝에서만 `Draw:336-347` · `:361-372`) |
|
||||
|
||||
- 고칠 길 — 고른 토막(한 구역 안 이어진 것) → 판 [다시 긋기] → 그리기 「다시 긋기」 모드: 시작 = 앞 노드 A · 속 노드 흐리게 · 끝 = 뒤 노드 B 에 붙으면 끝(결정 6) · 끝나면 순수 함수 `replaceSpan(network, line, a, b, vertices)` 한 번 = 되돌리기 한 걸음.
|
||||
- 바뀐 구간 속 마커 = 길이 비율로 옮김(있는 `carryMarks` `Plan:318-328` 꼴) · 속 노드에 갈래가 붙었으면 막음(까닭 글 · 지금 결) · B 노드 기록 = 「자유」로.
|
||||
- 선(토막) 지움(16) — 끝 토막 = 끝 점 뺌 · 가운데 = 구역이 둘로 나뉨(뒤쪽 새 구역 · 갈래 고리 · 조각 옮김 · 조각 id 남김) — 결정 7.
|
||||
- 만질 파일 — `Draw`(모드) · `Plan` 또는 새 `logic/D03_PlanAnalysis_Span.ts`(다시 긋기 · 토막 지움) · `Edit` · `Paint`(`paintNetwork` 흐린 구간 · `:90-137`).
|
||||
- 위험 — 조각 id 가 사라지면 업체 붙은 조각 [저장] 409(`Net:274-290` 지금 보호) · `Plan` 627 줄 → 새 파일로.
|
||||
|
||||
## 13·16. 오버레이(속성 판) 재활용 · 지움 두 곳 · 우클릭 메뉴
|
||||
|
||||
| 지금 | 자리 |
|
||||
| --- | --- |
|
||||
| 판 = `createFloatPanel` 「고른 구간」 · 조각 고름일 때만 · 넓이 · 연도 · 구간 줄 · [방향 바꾸기][갈래 시점 지정][선 지움][마크 지움] | `Props:52-59` · `:70-168` |
|
||||
| 왼쪽 「구역 · 연도」 = 보기 + 고르기 · 지움 단추 없음 | `Props:179-239` |
|
||||
| 우클릭 = 마커 · 꺾임점 즉시 지움 → 못 하면 메뉴(지점 · 긋기 시작 · 지점 놓기) | `Map:482-488` → `Edit:386-400` → `Points:106-133` |
|
||||
| Delete = 마커 또는 선 통째 | `Edit:183-195` · `:529-534` · 키 `A00_Common/key_registry.ts:141` · 설명 `:147` `plan.unvertex` |
|
||||
| B05 | 노드 우클릭 지움 = `bindNodeSplice`(`B05_Profile_UI_RouteEdit_Input.ts:162-178`) · 키 `routeEdit.unsplice`(`key_registry.ts:116`) — D03 안 부름 |
|
||||
|
||||
- 고칠 길 — 판 하나가 고름 꼴마다 몸을 바꿈:
|
||||
- 노드 — 「노드 N · 구역 이름」 · 경위도 · 지반고 · 긋기 방식 · 값(11) · 앞 토막 길이 · 기울기 · [노드 지움][지점으로].
|
||||
- 선(토막) — 길이 · 지반 기울기 · 측점 범위 · 든 연도 · [다시 긋기][선 지움].
|
||||
- 구역 — 이름 · 길이 · 노드 수 · 연도 구간 줄(해 고름 = 지금 `setPiecesYear` `Plan:537-547`) · [구역 지움].
|
||||
- 전체 — 길이 · 구역 수 · 해마다 길이 · [전체 지움](결정 11).
|
||||
- 마커 — 앞뒤 해 · [마커 지움].
|
||||
- 우클릭 — `Edit` 의 즉시 지움 걷고 메뉴 하나로 모음(새 `_UI_Menu.ts` · 부품 `createMapContextMenu`): 노드 = [노드 지움][지점으로][갈래 시작] · 선 위 = [고름][갈래 시작][연도 구역 나눔](22) · 마커 = [마커 지움] · 핀 · 빈 땅 = 지금 항목 · 긋는 중 = [긋기 끝].
|
||||
- 노드 지움 다른 길 = 노드 고르고 Delete(`plan.delete` 넓힘) · 키 표 `plan.unvertex` 줄 → 「메뉴 [노드 지움] · Delete」.
|
||||
- 왼쪽 판 지움 단추 — 14 의 목록 고침과 같은 자리(`Props:179-239`) → 목록은 새 `_UI_List.ts` 로 떼어 14 창 몫 · 지움 단추는 판과 같은 동작 함수(`dropSegment` · `dropLine` · `dropAll`)를 부름.
|
||||
- 만질 파일 — `Props`(판) · `Edit` · 새 `_UI_Select.ts` · 새 `_UI_Menu.ts` · `Points`(메뉴 떼어냄) · `key_registry.ts:147` · `Map` 도움말 줄(`:200-217`).
|
||||
- 위험 — B05 영향 없음(코드 안 나눔 · 키 범위 `plan` 따로) · 시험 `test_553_4_de_parts.py:22-26`(지점 칸 `createMapContextMenu(` 가 `Points` 에 있어야 함 → 메뉴를 옮기면 시험 줄 고침) · `test_588_key_registry.py`.
|
||||
|
||||
## 15. [방향 바꾸기] · [갈래 시점 지정] 걷음 · 지점 ↔ 노드 연동
|
||||
|
||||
| 지금 | 자리 |
|
||||
| --- | --- |
|
||||
| 판 단추 둘 | `Props:129-156` · `Edit:524-527` · 순수 `Plan:605-627` `branchFromEnd` · 시험 `test_585_2_plan_select.py:61-71` |
|
||||
| 긋기 끝낼 때 — 꼬리가 다른 선 머리면 이음 · 꺾임점에 닿아도 따로 본선(갈래로 안 붙음 → 단추가 메웠음) | `Draw:281-310`(`:293-301`) |
|
||||
| 지점 놓기 = 꺾임점 12 px 안이면 그 자리 | `Points:94-104` |
|
||||
| 핀 끌기 = 핀 자리(1 mm) 꺾임점 같이 감 · 놓을 때 노드에 안 붙음(마우스 자리 그대로) | `Points:135-159`(`:146`) · `Plan:370-378` `moveNodesAt` |
|
||||
| 노드 끌기 = 지점 자리 노드는 잠금 「지점 핀을 끌어 옮깁니다」 | `Edit:249-254` · `:412-416` |
|
||||
| 묶는 법 = 좌표 같음(1 mm)뿐 · 지점에 노드 id 없음 | `Plan:42` `samePoint` |
|
||||
|
||||
- 고칠 길:
|
||||
- 단추 둘 · `flipLine` · `branchLine` · `branchFromEnd` 걷음 · `test_585_2` 해당 줄 지움(까닭 = 요구 463-15). `reverseLine` 은 긋기 「머리에서 이어 긋기」가 써서 남김.
|
||||
- 끝이 다른 구역 꺾임점 · 선 위에 붙어 끝남 = 저절로 그 점의 갈래(No.0 = 닿은 점 · 있는 `attachHead` 뒤집어 부름) — 결정 8.
|
||||
- 핀 끌기 놓음 — 노드 12 px 안이면 그 노드 자리로 붙음(`Points` hover · release 한 곳).
|
||||
- 노드 끌기 — 잠금 걷고 지점 자리 노드를 끌면 지점도 같이(`Edit` 이 지점 목록까지 한 걸음으로 넘김 · `Page:130-141` 매개에 지점 쓰기 길 하나).
|
||||
- 묶음 = 좌표 같음 그대로(권함 · 저장 꼴 안 바뀜) · 나) 지점에 노드 열쇠 저장 = 노드 차례가 바뀔 때마다 고침 많아 비권.
|
||||
- 만질 파일 — `Props` · `Edit` · `Plan`(지움) · `Draw`(`stop`) · `Points` · `Page` 매개 한 줄.
|
||||
- 위험 — 측점 방향을 사용자가 못 뒤집음(No.0 = 긋기 시작 지점 · 갈래 = 붙은 점) · 옛 자료 중 「닿았지만 따로 본선」은 그대로 남음.
|
||||
|
||||
## 21. 3D — 표준 횡단 꼴 · 노선망 전체 한 번에
|
||||
|
||||
| 지금 | 자리 |
|
||||
| --- | --- |
|
||||
| 모달 위 고름 칸 = 선 하나(본선 · 갈래) | `3D:53-62` · 부르는 곳 `Page:482-493` |
|
||||
| 그 선 = 지면에 붙인 하늘색 한 줄 + 측점 막대 · 코리도 없음 | `3D:86-99` · `B05_Profile_UI_Markers.ts:251-300`(한 줄 · 그릴 때마다 앞 줄 버림) |
|
||||
| 예상 코리도 = 요구 389-11 로 걷음 · 시험이 막음 | `cdcdd5f59` · `test_553_4_de_parts.py:84`(`"buildCorridor" not in three`) |
|
||||
| 옛 길(544-3) | 예상 단면 `cdcdd5f59^:D03_PlanAnalysis/logic/D03_PlanAnalysis_Expect.ts`(리핑암 · 산쪽 절토 · 일반 측구 · 계획고 = 중심 지반고 · `computeCrossDesign` · `extendUnclosed`) → `buildCorridor`(`B05_Profile/logic/B05_Profile_Corridor_Build.ts:140`) → `setCorridor` · 표준값 = `fetchSectionContext`(`B06_Section/B06_Section_Api_Context.ts:18`) · 실측 측점 20 짓기 92 ms · 열기 0.85 s · 노면 중심 − 지반고 0.000 m(`docs/raw/plans/2026-10-26_plan_543-545.md:21`) |
|
||||
| 뷰어 한계 | 코리도 한 벌(`B05_Profile_UI_Viewer.ts:84-86` · `B05_Profile_UI_Viewer_Corridor.ts:226-236`) · 비탈은 지형 잘림이 그림(`:95-101` `roadOnly` · `B05_Profile_UI_Corridor_Tin.ts:191` 측점 단면 있어야 함) |
|
||||
|
||||
- 갈래 · 교차점 — 지금은 선마다 따로 봄(교차 처리 없음). 여러 벌이면 갈래 첫 측점이 부모 노면 안에 들어 두 노면이 겹침.
|
||||
- 고칠 길:
|
||||
- 가(권함) — B05 3D 뷰어에 「여러 벌」 덧: `setCorridors(builds[])`(벌마다 노면 묶음 · 지형 잘림 바깥 고리 여럿 = `LoopIndex` 가 이미 고리 여럿을 합집합으로 봄 `B05_Profile/logic/B05_Profile_UI_Corridor_Tin_Pslg.ts:430-490`) + `markers.renderRoutes(lines[])` · `setCorridor(b)` = 한 벌 길 그대로(B05 화면 동작 같음). D03 = 구역마다 예상 단면 → `buildCorridor` · 갈래 머리는 부모 노폭 반 + 노견만큼 잘라 지음(겹침 막음) · 고름 칸 걷음.
|
||||
- 나 — B05 고침 0: 고른 구역 하나만 예상 코리도(544-3 되살림) · 나머지는 선 · 「전체 한 번에」는 못 맞춤.
|
||||
- 속도(어림) — 측점 하나 ≈ 5 ms(92 ms / 20) → 노선망 3 km ≈ 150 측점 ≈ 0.7 s + 지형 잘림 · 1 s 넘으면 구역마다 나눠 차례로 그림(첫 구역 먼저 보임).
|
||||
- 만질 파일 — `3D` · 새 `logic/D03_PlanAnalysis_Expect.ts`(git 되살림) · `Page` `open3d()` 함수만 · (가) `B05_Profile_UI_Viewer.ts` · `B05_Profile_UI_Viewer_Corridor.ts` · `B05_Profile_UI_Markers.ts` · (필요하면) `B05_Profile_UI_Corridor_Tin.ts`.
|
||||
- 위험 — (가) B05 3D 공용 파일(`B05_Profile/CLAUDE.md` 「남의 페이지가 부르는 파일」) → B05 3D 시험 · 화면 확인 같이 · 서버 Node 묶음(`build:corridor`)이 끄는 `logic/Corridor_*` 는 안 건드림 · `test_553_4:84` 줄 고침 · 옛 `test_544_1_plan_expect.py` 되살림 · 저장 없음(보기만 · 5장 위반 아님).
|
||||
|
||||
## 22. 연도 구역 마커 자리 → 「그리기」 칸 · 우클릭
|
||||
|
||||
| 지금 | 자리 |
|
||||
| --- | --- |
|
||||
| 지도 도구줄 깃발 단추(끌어 놓기) | `Map:191-196` · `:223` · 켬끔 `Map:520` · `Page:335` · 공용 표 `ui_template/ui_template_map_tools.ts:34` · 시험 `test_568_1_map_tools.py:58` |
|
||||
| 놓기 받음 = 캔버스 끌어 놓기 | `Map:458-481` · `Edit:462-485` · 자리 셈 `Edit:257-268` |
|
||||
|
||||
- 고칠 길 — 왼쪽 「그리기」 칸에 부품 단추(깃발 · 끌기 켬 · 같은 자료 꼴 `YEAR_MARK_DRAG` `Map:40`) → 캔버스 받는 쪽 그대로 · 도구줄 단추 · 공용 표 줄 걷음 · 우클릭 선 위 [여기서 연도 구역 나눔] = 같은 `markPlace` 를 메뉴가 부름(`Edit` 에 창구 하나).
|
||||
- 만질 파일 — 새 `_UI_DrawPanel.ts`(또는 `Draw`) · `Map` 도구줄 · `ui_template_map_tools.ts` · `test_568_1` · `Edit` 창구 · `_UI_Menu.ts`.
|
||||
- 위험 — 없음(저장 꼴 같음) · 안내 글(`Draw:207`) · 도움말(`Map:210`) 고침.
|
||||
|
||||
## 23. 거리재기 — 노선 위에서 시작하면 노선 따라
|
||||
|
||||
| 지금 | 자리 |
|
||||
| --- | --- |
|
||||
| 두 누름 = 곧은 거리 · 기울기 · Δh · 노선 무관 | `Measure:28-36` · `:83-95` |
|
||||
| 만들 때 높이 함수만 받음 | `Page:149` |
|
||||
| 선 위 자리 찾기 · 선 위 거리 · 자르기 셈 있음 | `Paint:48-86` `lineAt` · `logic/D03_PlanAnalysis_Draw.ts:207` `distanceAlong` · `:232` `sliceLine` |
|
||||
|
||||
- 고칠 길 — 첫 누름이 선 위(8 px · 꺾임점 12 px)면 「노선 재기」: 둘째 점 = 노선 위 가장 가까운 자리 · 길이 = 노선 따라 · 그 길을 굵게 · 글 「노선 따라 L m · 측점 a ~ b · Δh」 · 첫 누름이 선 밖이면 지금 그대로.
|
||||
- 같은 구역 = `|m2 − m1|` · 다른 구역 = 갈래 고리를 따라 올라가 만나는 점까지 나무 길 하나(순수 함수 약 40 줄 · 결정 14).
|
||||
- 만질 파일 — `Measure` · `Page:149`(그물 넘김 한 줄) · 새 순수 함수(`logic/D03_PlanAnalysis_Select.ts` 또는 `Measure` 안).
|
||||
- 위험 — 없음(보기만 · 저장 없음).
|
||||
|
||||
## 24. 테마 · 바탕별 선 색
|
||||
|
||||
| 그림 | 색 | 자리 |
|
||||
| --- | --- | --- |
|
||||
| 그은 선 | `--map-route` `#f97316`(테마 같음 · `--draw-*` 아님) | `Map:47` → `B04_PreProcess_UI_MapRender.ts:41` · `Theme:214` |
|
||||
| 긋기 미리보기 점선 · 양각기 원 · 후보 점 | `--draw-primary` 2 px 점선 [6,4] · 테 없음 | `Paint:227-275`(`:238` · `:252-254`) |
|
||||
| 거리재기 점선 · 끝점 | 같음 | `Measure:39-82`(`:43-46`) |
|
||||
| 고른 것 밝힘 · 마커 · 그리는 선 | 같음(8 px · 투명 0.8) | `Edit:313-320` · `Paint:103` · `:194-199` |
|
||||
| 끌어 고르기 상자 | `--draw-primary` · `--draw-success` 옅은 채움 | `Edit:354` |
|
||||
| 글 | 흰 글 + 검은 테 `rgba(0,0,0,.65)` | `Paint:277-296` · `Map:50` |
|
||||
| 바탕 | 위성(어두운 숲) · 음영(검은 곱하기) · 끄면 `#1f2937` — 「일반 · 지형」 바탕 없음(카카오 등록 · 위치 창에만) | `D03_PlanAnalysis_UI_LayerDefs.ts:55-56` · `D03_PlanAnalysis_UI_Style.css:20` |
|
||||
|
||||
- 뿌리 — `--draw-primary` 가 화면 테마를 따름(밝음 `#26114a` · 어두움 `#b99aff`) · 지도 바탕은 테마와 무관하게 늘 어두움 → 밝은 테마에서 미리보기 · 재기 · 고름 · 마커가 바탕과 거의 같은 밝기(대비 ≈ 1.1 : 1).
|
||||
- 곁 흠 — 그은 선 `#f97316` = 개발제한구역(`Theme:571`) · 산사태 2등급(`:579`)과 같은 값 · 올린 임도망도 `#ea580c`(`:586`)와 비슷 → 그 겹을 켜면 노선이 묻힘.
|
||||
- 고칠 길(권함) — 지도 위 그림 전용 고정 색(테마 안 따름 · 어두운 바탕 전제) 새 값 몇 개 `--draw-map-sketch`(미리보기 · 그리는 선 · 고름) · `--draw-map-measure`(재기) · (선택) `--draw-map-route`(그은 선) + 이중선(검은 테 4 px 밑 + 밝은 색 2 px 위 · MapLibre 겹이 이미 쓰는 꼴 `D03_PlanAnalysis_UI_MapGl.ts:62-90`) · 바꾸는 곳은 `planColors()`(`Map:44-52`) 한 곳 + 미리보기 · 재기 두 그림에 테.
|
||||
- `--draw-primary` 자체는 안 바꿈(B05 추천 선 · 다른 그림이 씀).
|
||||
- 만질 파일 — `Theme`(:root 블록 · 공유 파일 = 전 창 알림) · `Map:44-52` · `Paint`(`paintPreview` · `paintMark`) · `Measure` · `Edit:354`(상자 색).
|
||||
- 위험 — `test_551_2_draw_tokens.py:121-136`(새 값은 hex 글자 · 밝음 블록에만 = 맞음) · 날 `#ffffff` 여러 곳(`Paint:127` · `:155-160` · `:219` · `:293` · `Edit:325`)은 그대로 둬도 시험 안 걸림(TS 날 색 검사 없음).
|
||||
|
||||
---
|
||||
|
||||
## 파일 경계 제안 (창 넷 · 파일 안 겹침)
|
||||
|
||||
| 창 | 항목 | 혼자 만지는 파일 | 큰 파일 몫(함수 · 줄) | 시험 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 1 고르기 · 판 · 메뉴 · 지점 연동 | 9 · 12(토막 고름 · 지움) · 13·16 · 15 · 22(메뉴 항목) · 11(노드 판) | `Edit` · 새 `_UI_Select.ts` · `Props`(판만) · 새 `_UI_Menu.ts` · `Points` · 새 `logic/D03_PlanAnalysis_Select.ts` · `key_registry.ts:141-151` | `Page` = 매개 · 판 · 메뉴 붙임(`:120-162` · `:298-306`) · `Map` 우클릭 받음(`:482-488`) | `test_585_2` · `test_591_2` · `test_553_4` · `test_588` |
|
||||
| 2 긋기 · 노드 기록 · 다시 긋기 · 마커 단추 | 10 · 11(기록 · 다시 놓기 순수) · 12(다시 긋기) · 22(단추 자리) · 15(`stop` 갈래 붙임 · `branchFromEnd` 지움) | `Draw` · 새 `_UI_DrawPanel.ts`(왼쪽 칸 + 방식 칸 함수 export) · `Plan`(혼자) · 새 `logic/D03_PlanAnalysis_Span.ts` · `Net`(`Line.nodes`) · `ui_template_map_tools.ts` · `ui_template_segment.ts/.css` · `D03_PlanAnalysis_UI_Style.css` | `Map` 도구줄 블록 `:187-225` · `:514-521`(도움말 줄도 이 창이 1 · 3 글을 받아 한 번에) · `Paint` `paintNetwork` `:90-137` | `test_530_3` · `test_590_1` · `test_530_2` · `test_568_1` · `test_553_4` |
|
||||
| 3 재기 · 색 | 23 · 24 | `Measure` · `Theme`(새 `--draw-map-*` · 알림) | `Map` `planColors` `:44-52` · `Paint` `pointLayer` `:140-166` · `paintMark` `:207-224` · `paintPreview` `:227-275` · `planLabel` `:277-296` · `Page:149` 한 줄 | `test_551_2` · `test_562_1` |
|
||||
| 4 3D | 21 | `3D` · 새 `logic/D03_PlanAnalysis_Expect.ts` · (가) `B05_Profile_UI_Viewer.ts` · `_Viewer_Corridor.ts` · `_Markers.ts` | `Page` `open3d()` `:482-493` | 되살린 `test_544_1` · `test_553_4:84` · B05 3D 시험 |
|
||||
|
||||
- 차례 — 창 2 첫 커밋 = `_UI_DrawPanel.ts` 방식 칸 함수 · `Plan` 노드 기록 꼴(창 1 노드 판이 부름) → 창 1 판 · 창 1 이 `Edit` · `Props` 에서 방향 · 갈래 단추 걷은 뒤 창 2 가 `branchFromEnd` 지움.
|
||||
- 14(왼쪽 목록 · 색 띠 · 이름 · 연도 · 지움)는 다른 분석 몫 — `Props:179-239` 를 새 `_UI_List.ts` 로 떼는 일을 그 창이 먼저 하면 창 1 은 `Props` 판만 만짐.
|
||||
- `Page` 는 세 창이 함수 몫만 — 같은 줄 없음 · 받기 때 합치기 충돌 낮음.
|
||||
|
||||
## 사용자 결정 거리 (괄호 = 권함)
|
||||
|
||||
1. (9) 「구역」 = (그은 꺾은선 하나 · 본선 · 지선) / 연도 마커 사이 조각.
|
||||
2. (9 · 12) 누름 넓힘 = (선 → 구역 → 전체 · 「같은 해」는 왼쪽 해 줄로만) / 같은 해를 넷째로 남김.
|
||||
3. (11) 노드 방식 · 값을 바꾸면 뒤 노드 = (그대로 · 어긋난 노드 ⚠ 표시) / 뒤로 이어 다시 셈.
|
||||
4. (11) 노드를 끌어 옮긴 뒤 기록 = (남기고 ⚠ 표시 · [다시 맞춤]) / 「자유」로 바꿈.
|
||||
5. (11) 「지점을 선택하게 변경」 = (노드 판 [지점으로] — 그 노드 자리에 지점) 맞는지.
|
||||
6. (12) 다시 긋기 끝 = (원래 뒤 노드에 붙어야 끝) / 아무 데서 끝내면 뒤 꺾은선이 그 점으로 옮겨 붙음.
|
||||
7. (12 · 16) 가운데 선(토막) 지움 = (구역이 둘로 · 뒤쪽 = 새 구역) / 가운데는 못 지움(끝 토막만).
|
||||
8. (15) 끝이 다른 구역에 닿아 끝난 선 = (저절로 그 점의 갈래 · No.0 = 닿은 점) / 따로 본선 그대로.
|
||||
9. (15) 지점 ↔ 노드 = (같은 자리로 묶음 · 노드 끌면 지점도 · 지점 끌면 노드도 · 지점을 노드 12 px 안에 놓으면 붙음) / 지점에 노드 열쇠 저장.
|
||||
10. (16) 노드 지움 = (우클릭 메뉴 [노드 지움] + 고르고 Delete · 우클릭 즉시 지움 걷음).
|
||||
11. (16) [전체 지움] = (화면 한 걸음 · 되돌리기 됨 · [저장] 때 정본) / [초기화]처럼 바로 정본.
|
||||
12. (21) 노선망 전체 예상 코리도 = (B05 3D 뷰어에 여러 벌 덧 · B05 화면 동작 그대로) / 고른 구역 하나만 코리도.
|
||||
13. (21) 3D 횡단 기본 = (리핑암 · 산쪽 절토 · 일반 측구 · 계획고 = 지반고 · 544 때와 같음) 맞는지.
|
||||
14. (23) 노선 재기 = (두 누름 사이 노선 따라 · 다른 구역은 노선망 따라) / 같은 구역만 / 누른 구역 전체 길이만 보임.
|
||||
15. (24) 지도 위 그림 색 = (테마 안 따르는 지도 전용 밝은 색 + 검은 테 · 색 값은 견본 보고 고름) / 테마 따라감(지금).
|
||||
16. (24) D03 바탕에 「일반 · 지형」 지도를 새로 둘지 — 지금 위성 켬끔 · 음영뿐(요구 범위 밖 · 물음만).
|
||||
17. (10) 방식 넷 칸 꼴 = (부품 상자 마디 고름에 2 × 2 꼴 덧) / 고름 칸.
|
||||
|
||||
## 확인 못 함
|
||||
|
||||
- 화면 실측(대비 · 좌측 폭에 넷 이름 들어가는지 · 3D 여러 벌 시간) — 브라우저 안 씀.
|
||||
- 교차점 두 노면 겹침의 실제 모양 · 지형 잘림이 고리 여럿에서 구멍 없이 닫히는지.
|
||||
- 옛 서버(임시 배포)가 `nodes` 칸을 버리는지 실제 — pydantic 기본(덧 칸 무시)으로 봄.
|
||||
@@ -0,0 +1,230 @@
|
||||
# 분석 463-C — 급경사 출처 · 지도 받기 시간 · 임도망 올리기 · 용화 검증 · 다시 모으기 누락 · 지도 조작 (요구 463-17 · 18 · 19 · 20 · 25 · 27)
|
||||
|
||||
읽기 전용 · 줄 = main_laptop_1 `0f20f6472` · 코드 · DB · storage 안 고침.
|
||||
실측 = 검증_랩탑메인_D `41b353b0`(GET 만 · `127.0.0.1:8000`) · 메모리 안 셈(파일 안 씀) · 서버 로그 `tmp/server.log`(시각 없음 · 단계 시간 줄만) · DB SELECT 만.
|
||||
|
||||
## 0. 결론
|
||||
|
||||
1. **급경사 = 외부 API 아님** — 받은 1:5,000 수치지형도 도엽 등고선으로 서버가 만든 사업 DEM 에서 셈(15° · 35° · 40°). 범위 = 「받은 지형 범위」(처음 기준점 ± 1 km · 뒤로 지점 · 선 · 지도 보기 가운데까지 넓어짐 · 줄지 않음).
|
||||
2. **느린 까닭 1 순위 = 지형면(라플라스) 통째 다시 셈** — 범위가 조금만 늘어도 전 범위를 처음부터 · 칸 수에 비례 이상으로 늚(로그: 150만 칸 52 s → 530만 칸 380 s). 지도 보기만 옮겨도 범위가 늘어 다시 돎. 외부 받기(위성 조각 43~93 ms · WFS 조각 60~314 ms · 도엽 검색 94 ms)는 작은 몫.
|
||||
3. **임도망 올리기** = 지금 받은 지형 범위로 잘라 범위 안 선이 0 이면 거절(400) — 주소지 먼 자료는 못 올림. 「둘 다 보이게」 = 지형(DEM)은 그대로 두고 **임도망 자르는 범위만 기준점 ± 수 km 로 넓히고 지도 맞춤**이면 됨(줌아웃 한도 고침 27 과 함께).
|
||||
4. **용화 실무 자료 = 예정노선 SHP 한 벌뿐**(임도망도 아님 · 선 1 가닥 2.1 km) · 주소 = 경북 영양군 일월면 용화리 산 77-15 · TM 동부(5187). 지금 검증 D 자리(상주시 모동면 · 5186)에서 약 118 km. **새 원본을 D01 로 만들고 9 개 다시 복제 권함**(옛 원본 기준점 바꿈은 좌표계 굳음 · 범위 합침 때문에 안 됨).
|
||||
5. **다시 모으기 누락 9 갈래 확인** — 화면 겹이 「위성 틀이 바뀔 때만」 새로 받음 · 등고 · 세류는 옛 저장본부터 보임 · 기준점 바꿀 길 없음 · 기준점 멀리 옮기면 범위 합침으로 상자 폭발 · 서버 다시 켜짐 = 받기 끊김을 「끝남」으로 앎 등.
|
||||
6. **줌아웃 한도 = B05 휠 부품 `MIN_SCALE 0.5` × 위성 틀(받은 도엽 상자)** — 랩탑메인 D 기준 화면 폭 약 11 km 까지. 카카오(D01)는 레벨 14(한반도 · 이웃 나라). D03 만 하한을 인자로 넘기면 됨(B05 그대로).
|
||||
|
||||
---
|
||||
|
||||
## 17. 급경사 정보 출처 · 범위
|
||||
|
||||
| 칸 | 내용 |
|
||||
| --- | --- |
|
||||
| 출처 | 서버 셈(③ 서버 단독) · 외부 경사 API 아님. 원자료 = VWorld 1:5,000 수치지형도 도엽 zip(`B04_PreProcess_Engine_SheetStore.py:146-176`) → 등고선 병합 → 라플라스 보간 DEM `models_plan/dtm_sheet_laplace.npz`(`D03_PlanAnalysis_Terrain.py:274-296`) → E07 `slope_rad` → 단계 PNG(`D03_PlanAnalysis_Layers.py:212-245`) |
|
||||
| 단계 | 15~35° 노랑 · 35~40° 주황 · 40° 이상 빨강(`Layers.py:68-73`) · 근거 = 완 · 중 · 급경사지 15° · 35°(`resources/knowledge/technical_info/01_임도/01_계획노선/임도망_편성.md:20`) · 35° 이상 비율(`타당성평가.md:18 · 42 · 59`) · 40° 이상 연속(`노선_배치.md:29`) |
|
||||
| 범위 | 「받은 DEM 범위」= `plan_terrain.json` 상자(`Terrain.py:77-84`). 처음 = 등록 기준점 ± 1 km(`SITE_RADIUS_M :54` · `site_corners :87-90` · `Router.py:68-69`) · 뒤 = 지점 · 그은 점 · 지도 보기 가운데(보기 반 상자 ≤ 2 km 일 때 · `UI_Page.ts:74 · 164-187`) + 여유 350 m(`Terrain.py:51`) ∪ 받은 범위(줄지 않음 · `:93-99`). 화면 범위로 직접 받지 않음 |
|
||||
| 저장 | 파생 저장본 `_derived/plan_slope`(열쇠 = DEM 파일 지문 · 단계 · 한 변 4,096 px · `Layers.py:263-289`) · 넓으면 솎음 |
|
||||
| 실측(41b353b0) | DEM 1167×1783 칸(옛 1 m 판) · 급경사 PNG 셈 0.41 s · 88 KB · 15~35° 34.9 % · 35~40° 2.7 % · 40°↑ 1.7 % |
|
||||
| 곁 | 지금 코드 격자 = 2 m(`config_system_terrain.py:143`)인데 랩탑메인 D 의 DEM 은 1 m 열쇠(`dtm_sheet_laplace.key.json` grid_m 1.0) — 다음 받기 때 2 m 로 통째 다시 셈 |
|
||||
|
||||
- 고칠 길 — 고칠 것 없음(물음 답). 화면 이름표에 「출처 = 수치지형도 등고선 셈 · 받은 지형 범위 안」 한 줄이면 충분(`UI_LayerDefs.ts:58`).
|
||||
- 사용자 결정 거리 — 없음(아래 18 의 격자 크기와 엮임).
|
||||
- 위험 — 없음.
|
||||
|
||||
## 18. 지도 정보 받는 데 오래 걸리는 까닭
|
||||
|
||||
### 18-1. 단계별(지형 받기 한 번 = 뒤에서 도는 일 하나 · 단계 모두 차례대로)
|
||||
|
||||
| 단계(진행 %) | 하는 일 | 차례 · 병렬 · 캐시 | 시간(실측 · 어림) | 근거 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 진입 판정 | 범위 GET → 못 덮으면 POST 받기 · 1 s 마다 진행 GET | — | GET 41~63 ms · 진행 12~16 ms | `UI_Page.ts:571-581 · 380-404` |
|
||||
| 도엽 고름(5) | 상자에 닿는 5천 도엽 번호 | 셈만 | ms | `Terrain.py:118-130` |
|
||||
| 도엽 받기(10) | VWorld 로그인 · 검색 · zip(1.0~1.2 MB/매) | **한 매씩 차례** · 있는 매는 건너뜀 · **프로젝트마다 따로 받음(공유 창고 없음)** | 검색 94 ms · 매당 어림 1~3 s(미실측) | `SheetStore.py:185-201 · 58-64` |
|
||||
| 병합(45) | 도엽 13 겹 GeoJSON | 도엽 묶음 바뀌면 **모든 도엽 · 모든 겹 통째 다시** | 수 초(어림) | `Terrain.py:184-193` |
|
||||
| 위성 틀(60) | 그림 없이 틀만(590-2) | 덮으면 건너뜀 | ms | `Terrain.py:196-228` · `B04_Engine_VWorld.py:78-81` |
|
||||
| 지적도(62) | WFS 1 km 조각 · 일꾼 4 | **지형면 앞을 막음** · 상자 늘면 통째 다시 · 조각 하나라도 실패면 다음에 또 통째 | 조각 60~314 ms · 로그 16~32 조각(실패 1 있음) | `Terrain.py:267-272` · `Layers.py:181-206` |
|
||||
| **지형면(65)** | 등고 굽기 → 거리 보간 → 라플라스 400 회 → npz · 미리보기 glb 2 개 · 평활 npz | **범위 통째 다시** · 열쇠 같으면 건너뜀 | 아래 표 — 전체 시간의 대부분 | `Terrain.py:274-296` · `B04_Engine_SheetSurface.py:490-574` · `SheetMethods.py:124-132` |
|
||||
| 행 저장(100) | `surface_models` 행 | — | ms | `Router.py:110-131` |
|
||||
| 화면 다시 읽음 | 지형면 격자 8.6 MB · 위성 틀 · 켠 겹 | 겹은 켤 때 따로(동시 · `UI_Layers.ts:506`) | 격자 61~67 ms · 겹 22~69 ms(localhost) | `UI_Page.ts:370-377` |
|
||||
| 겹 첫 셈 | 급경사 · 음영 · 0차곡 · 띠 | 파생 저장본(지문 같으면 다시 안 셈) | 급경사 0.41 s · 음영 0.44 s · **0차곡 3.0 s**(2.1 km² · 2 m) | `Layers.py:263` · `ZeroOrder.py:127-183` |
|
||||
| 위성 조각 | 서버 대리 · 프로젝트별 저장 | 처음만 외부 · 복제 사이 공유 없음 | 외부 43~93 ms/장 | `Router.py:375-415` |
|
||||
|
||||
### 18-2. 지형면 시간(서버 로그 · 라플라스 한 방식)
|
||||
|
||||
| 격자(행×열) | 칸 수 | 등고 단 | 지형면 전체 | 프로젝트(추정) |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| 908×853 | 0.77 M | 87 | 18.6 s | — |
|
||||
| 894×902 | 0.81 M | 98 | 27.6 s | — |
|
||||
| 939×1627 | 1.53 M | 95 | 54.5 s | 가이드_예정노선(3.25 × 1.88 km · 2 m) |
|
||||
| 861×3538 | 3.05 M | 136 | 117.9 s | 검증_sub1_D 늘어나는 중 |
|
||||
| 1231×3549 | 4.37 M | 137 | 277.0 s | 〃 |
|
||||
| 1503×3549 | 5.33 M | 149 | **383.7 s** | 검증_sub1_D(지금 7.1 × 3.0 km) |
|
||||
|
||||
- 검증_sub3_D 도 7.6 × 2.0 km 로 늘어 있음 — 보기 옮김 이어 받기가 범위를 키운 자국.
|
||||
|
||||
### 18-3. 까닭
|
||||
|
||||
1. 지형면을 **늘어난 만큼이 아니라 범위 통째로** 다시 셈 · 칸 수 × 등고 단 수에 비례 이상(1.5 M → 5.3 M 칸 = 7 배 시간).
|
||||
2. **지도 보기만 옮겨도** 보기 가운데가 받은 범위 밖이면 이어 받음(멈춘 뒤 0.8 s · `UI_Page.ts:76 · 164-187 · 316-325`) → 범위가 커질수록 다음 받기가 더 오래.
|
||||
3. 한 일 안 모두 차례 — 지적도가 지형면 앞을 막음 · 도엽 한 매씩.
|
||||
4. 진행 막대가 65 % 에서 수 분 멈춤(지형면 단계 안 진행 없음) → 「멈춘 듯」 보임.
|
||||
5. 지형면 셈이 같은 서버 프로세스 — 도는 동안 위성 조각 · 겹 응답도 늦어질 수 있음(후보 · 미실측).
|
||||
|
||||
### 18-4. 고칠 길
|
||||
|
||||
| 갈래 | 내용 | 효과(어림) | 만질 파일 |
|
||||
| --- | --- | --- | --- |
|
||||
| **가(권함)** | D 지형 격자 2 m → 5 m(설정 한 줄) · 근거 = 타당성평가 평균경사도 측정 간격 1/5,000 도면 1 cm(50 m) · 상하 5 mm(± 25 m)(`타당성평가.md:59`) · 등고 간격 5 m | 칸 1/6.25 → 가이드 원본 54 s → 약 8~10 s · sub1 384 s → 약 60 s | `config/config_system_terrain.py:143` |
|
||||
| **나(권함)** | 보기 옮김 이어 받기 끔 — 지점 · 선 · 위치 바꿈만 받기 | 쓸데없는 다시 셈 없앰 | `D03_PlanAnalysis_UI_Page.ts:164-187 · 316-325` |
|
||||
| 다 | 지적도를 지형 일에서 뺌(켤 때 겹 GET 이 이미 받음) | 지형면 앞 2~8 s 걷힘 | `D03_PlanAnalysis_Terrain.py:267-272` |
|
||||
| 라(나중) | 도엽 단위 DEM 조각 저장 · 늘어난 도엽만 셈 · 도엽 받기 2~4 동시 · 프로젝트 사이 도엽 창고 공유 | 넓은 사업도 늘 일정 | B04 공용 파일(`SheetStore` · `SheetSurface`) — B 와 겹침 |
|
||||
|
||||
- 사용자 결정 거리 — 격자 5 m(가) · 보기 이어 받기 끔(나).
|
||||
- 위험 — 격자를 바꾸면 모든 D 의 DEM 열쇠가 달라져 **다음 진입 때 한 번씩 통째 다시 셈**(Synology 로 storage 새 파일 번짐). 0차곡(`ZERO_ORDER_CELL_M 2 m` · `ZeroOrder.py:33`)은 5 m 격자면 솎음 없이 5 m 로 셈 — 0차곡 임계(0.1 ha · 1 ha) 재검토 필요.
|
||||
|
||||
## 19. 임도망 [올리기] 단추 자리 · 범위
|
||||
|
||||
| 칸 | 지금 |
|
||||
| --- | --- |
|
||||
| 단추 자리 | 지도 왼쪽 위 겹 아이콘 줄 「올린 임도망도」 바로 옆(`UI_Layers.ts:145-157`) · 지형 받기 전 막힘(`:206`) · 겹 설명 「옆 단추로 올림」(`UI_LayerDefs.ts:71-73`) · 서버 글 「옆 올리기 단추로」(`ForestRoad.py:153-155`) |
|
||||
| 왼쪽 판 | 「지형」 칸 = 글 · 막대 · [다시 받기](`UI_Page.ts:204-218 · 341-350`) |
|
||||
| 올리기 길 | POST `plan/layers/forest-roads`(zip 하나 · shp · shx · dbf · prj · cpg · 100 MB · `Router.py:315-341`) → 받은 지형 없으면 404(`Router.py:172-178`) → **받은 지형 범위로 자름 · 범위 안 0 가닥 = 400(옛 것 그대로)**(`ForestRoad.py:169-198`) · 원본 = `D03_PlanAnalysis/임도망도.zip` |
|
||||
| 보이기 | GET 같은 주소 → 받은 범위로 자른 선(파생 저장본 · 열쇠 = 원본 지문 · 범위 · `ForestRoad.py:148-166`) |
|
||||
| 범위 맞물림 | 임도망 = 지형 범위의 **종** — 지형 밖 선은 버려짐 · 시군구 SHP(수십 km)는 대부분 잘림 · 주소지에서 먼 자료는 아예 거절 |
|
||||
|
||||
**둘 다 보이게 — 가능(조건부).**
|
||||
|
||||
- 지형(DEM)을 임도망 따라 넓히면 안 됨 — 시군구 크기면 라플라스 수십 분 · 18 의 폭발과 같음.
|
||||
- 선 겹은 DEM 이 필요 없음 → **임도망 자르는 범위만 따로**: 기준점 둘레 ± R km(권함 R = 5) ∪ 받은 지형 범위.
|
||||
- 올린 뒤 지도 맞춤 = 기준점 둘레 ∪ 잘린 임도 상자(`UI_Map.ts:533-536` `fit` · `update({fit})`). 임도가 R 밖뿐이면 지금처럼 거절 + 「주소지에서 X km」 알림 = **주소지 우선**.
|
||||
- 지도가 R km 까지 줌아웃 되려면 27 의 하한 고침이 먼저.
|
||||
|
||||
| 고칠 길(권함) | 만질 파일 |
|
||||
| --- | --- |
|
||||
| 아이콘 줄에서 올리기 단추 걷고 `createPlanLayers` 가 「올리기」 함수(또는 부품 상자 단추)를 내줌 → 「위치」 칸 안에 놓음(`createButton` · 부품 상자) | `D03_PlanAnalysis_UI_Layers.ts` · `D03_PlanAnalysis_UI_Page.ts` · `D03_PlanAnalysis_UI_LayerDefs.ts:73` |
|
||||
| 서버 자르는 범위 = 기준점 ± R ∪ 받은 범위 · 응답에 잘린 상자 · 기준점 거리 · 지형 받기 전에도 올림 허용(기준점만 있으면) | `D03_PlanAnalysis_ForestRoad.py` · `D03_PlanAnalysis_Router.py:304-341` |
|
||||
| 시험 | `resources/tester/test_584_3_plan_forest_road_zones.py` |
|
||||
|
||||
- 사용자 결정 거리 — R(5 km 권함) · R 밖일 때 거절(권함) 대 지형 범위 안만.
|
||||
- 위험 — 없음(올린 파일은 프로젝트 폴더 안 · 복제 때 따라감).
|
||||
|
||||
## 20. 용화 자료 · 예정노선 검증 프로젝트 다시 정하기
|
||||
|
||||
### 20-1. 용화 자료(폴더 안)
|
||||
|
||||
| 파일 | 내용 |
|
||||
| --- | --- |
|
||||
| `resources/knowledge/original/실무문서/2026년 임도 용화/예정노선/대상지_일월.용화.2.2.{shp · shx · dbf · prj · cpg}` | **예정노선 선 1 가닥**(정점 121 · 2,135.9 m) · UTM-K EPSG 5179 · cp949 · 속성 `대상지` · `길이`(`_분석_345-C` 2장) · **임도망도(기존 임도 그물) 아님** |
|
||||
| 같은 폴더 `용화.las`(1.67 GB) · `용화.tif`(48 MB · 0.2 m) · `용화.prj`(5176) | B 측량 자료 — D 에 안 씀 |
|
||||
| 시점 · 종점(경위도) | (129.0948, 36.8127) · (129.1086, 36.8129) — 5187 로 (208459, 468231) · (209690, 468255) |
|
||||
| 주소(VWorld GET 실측) | 경상북도 영양군 일월면 용화리 산 77-15(시점 · 가운데 · 종점 같음) |
|
||||
| 지금 검증 D 자리 | 경북 상주시 모동면 정양리 산 5-1(127.954, 36.283 · 5186) — 약 118 km |
|
||||
|
||||
- 이 SHP 는 [올리기] 묶음 조건(shp · shx · dbf + prj · cpg)을 채움 → 「올린 임도망도 1 가닥 2.1 km」로 시험 가능. 실제 영양군 임도망도(시군구 SHP)는 폴더에 없음 — FGIS 등에서 따로 받아야 함.
|
||||
|
||||
### 20-2. 원본을 용화로 — 두 갈래
|
||||
|
||||
| 갈래 | 길 | 걸림 |
|
||||
| --- | --- | --- |
|
||||
| **가(권함) 새 원본** | D01 [등록] = 용화 가운데(129.1017, 36.8128) 누름 → 새 D(좌표계 5187 자동 · `Network.py:216-220`) → D03 진입 = 기준점 ± 1 km 받기(상자 2 × 2 km · 도엽 `36901074` · `36901075` 2 매 · 2 m 100 만 칸 → 지형면 약 20~30 s · 로그 0.8 M 칸 27.6 s) → 용화 SHP 를 임도망으로 올려 보며 지점 · 선 · 연도 · 업체 지정 견본을 손으로 → 범위 덮음 확인(extent `covered` 참) | 손 그리기 몫 · 옛 가이드 원본(설명서 그림)은 그대로 둠 |
|
||||
| 나 옛 원본 기준점 바꿈 | 기준점 고칠 API 없음(DB 직접) | 노선 파일 좌표계 5186 굳음 → 5187 로 [저장] 거절(`Network.py:327-328`) · 받은 범위 합침 → 상주 ~ 용화 상자 약 103 × 59 km(2 m 15 억 칸 · 지적 WFS 약 6,000 조각) · 옛 지점 · 선 · 연도 3 줄 · 업체 4 줄 정리 · 설명서 그림 깨짐 → **안 됨** |
|
||||
|
||||
### 20-3. 다시 복제 차례
|
||||
|
||||
1. (18 가 격자 결정 먼저 — 뒤에 바꾸면 복제본 10 개가 진입마다 DEM 다시 셈)
|
||||
2. 새 원본 만들기 · 다듬기 · 얼림(한 창)
|
||||
3. 옛 D 9 개 = 대시보드 [삭제](휴지통 · storage 남음 · `B01_Dashboard_Router.py:402-422`) — 이어진 B 없음(SELECT: `linked_project_id` 0) · 업체 지정 4 줄씩은 행째 남음
|
||||
4. `./venv/Scripts/python.exe db_management/tools_clone_project.py <새 원본> "검증_랩탑메인_D"` … `검증_sub1_D` ~ `검증_sub8_D` = **9 회**
|
||||
5. `OWNERS.md` D ID 칸 9 줄 갱신(사용자) → 창마다 알림
|
||||
|
||||
| 항목 | 값 |
|
||||
| --- | --- |
|
||||
| 복제 수 | **9**(OWNERS 표 D 칸 = 랩탑메인 + sub1~8 · 데스크탑 D 없음) — 「18」은 표와 다름(E 9 개는 가이드_안정성평가 원본 · D 와 무관) → 확인 거리 |
|
||||
| 시간 | 원본 지형 받기 약 1~2 분 · 복제 1 개 = robocopy(로컬 · 수 초) + DB 한 트랜잭션 → 9 개 1~3 분 |
|
||||
| 용량 | 2 × 2 km · 2 m 기준 프로젝트당 약 40~60 MB(지금 랩탑메인 D 60 MB · 원본 131 MB) → 10 개 약 0.5 GB |
|
||||
| 지울 것 | 옛 D 9 개(휴지통) · 옛 원본은 설명서용으로 남김 · `4250c7bc`(「2026~2030 테스트 지역 간선임도」)는 사용자 것 — 손대지 않음 |
|
||||
|
||||
- 위험 — **Synology**: 새 폴더 10 개 · 휴지통 영구 삭제(기한 정리 루프 포함) 때 storage 지움이 데스크탑에 번짐(데스크탑에 D 검증 없음 · 영향 작음). **공유 DB**: 새 D 가 데스크탑 임시 배포 서버 대시보드에도 보임(회사 1 · 사용자 3). 복제 중 원본을 열면 창마다 다른 복제본(지금도 원본 범위 3.25 × 1.88 km 대 복제본 1.78 × 1.17 km · 기준점도 다름 — 복제 뒤 원본이 바뀐 자국).
|
||||
|
||||
## 25. 복제 · 새로 만들기 · 지점 옮김 때 다시 모으기 — 누락 목록
|
||||
|
||||
| # | 빠지는 경우 | 근거(파일:줄) | 고칠 길 |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | **화면 겹이 「위성 틀이 바뀔 때만」 새로 받음** — 범위가 같은 도엽 안에서 늘면(5천 도엽 ≈ 2.2 × 2.8 km · 흔함) 지적 · 보호구역 · 산림입지 · 선 겹 · 급경사 · 음영 · 0차곡 · 띠 · 임도망이 옛 범위 그대로(새로고침까지) | `UI_Layers.ts:492-507` · `Terrain.py:215-217` | 바뀜 판정 = 받은 범위(`have`) 비교 |
|
||||
| 2 | **등고선 · 세류 = 옛 저장본부터** — 브라우저 보관함이 먼저 옛 것을 주고 뒤에서만 갱신(그 화면엔 안 그림) → 받기 뒤 두 번째 진입부터 새 범위 | `A00_Common/b_asset_cache.ts:289-321` · `UI_Layers.ts:310 · 316` | D03 주소에 범위 지문(`&v=`) 붙임(공용 보관함은 그대로) |
|
||||
| 3 | 등고선 자르는 상자 = 처음 켤 때 지점 · 선 ± 600 m — 뒤에 멀리 그어도 다시 안 받음(1 과 같은 뿌리) | `UI_Layers.ts:85 · 299-314` | 1 과 함께 |
|
||||
| 4 | **기준점 바꿀 길 없음** — D01 = 만들기 POST 뿐 · `site_*` 고치는 곳 없음 | `D01_PlanRegister_Router.py:39-74` | 「위치」 칸 + 기준점 PUT(새) |
|
||||
| 5 | 지점 · 선이 있으면 기준점 무시 — 받기 범위는 지점 · 선만 | `Router.py:60-72` | 위치 바꿈 = 새 범위 시작(아래 6) |
|
||||
| 6 | **받은 범위가 늘 합침(줄지 않음)** — 기준점 · 지점을 멀리 옮기면 옛 자리 ∪ 새 자리 상자(상주 → 용화 = 약 103 × 59 km) · 칸 수 상한 검사 없음 | `Terrain.py:93-99 · 253` · `plan_extent :161`(셈만) | 멀리(예 5 km 넘게) 옮김 = 옛 지형 걷고 새로 · 칸 상한(예 500 만) 넘으면 받기 거절 |
|
||||
| 7 | 위성 틀 · WFS 겹 열쇠도 합침 상자 — 6 과 같이 폭발(지적 조각 수천) | `Terrain.py:218-222` · `Layers.py:185 · 380-386 · 467 · 528` | 6 과 함께 |
|
||||
| 8 | 좌표계 굳음 — 다른 TM 띠로 옮겨도 파일 머리 epsg 그대로 · 바꿔 [저장]하면 400 | `Network.py:216-220 · 327-328` | 위치 바꿈이 띠를 넘으면 「노선 지움」 확인 뒤 epsg 비움 |
|
||||
| 9 | **서버 다시 켜짐(watchfiles · 싱크) = 도는 받기 조용히 끊김** — 진행 표가 메모리라 빈 값(running 거짓 · error 없음)을 화면이 「끝남」으로 읽음 → 옛 지형 그대로 · 실패 알림 없음 | `Router.py:47-49 · 163-169` · `UI_Page.ts:390-393` | 진행 percent < 100 · message 없음 = 「끊김」 → [다시 받기] |
|
||||
| 10 | 복제본이 원본의 낡은 산출물을 가져옴 — 랩탑메인 D: 범위가 지점 · 선을 못 덮음(extent `covered` 거짓 · 실측) · DEM 열쇠 1 m(코드 2 m) → 진입 때마다 받기 · 통째 다시 셈 | `copy_manifest.json`(10-28) · `dtm_sheet_laplace.key.json` | 원본 `covered` 참 확인 뒤 복제(20-3) |
|
||||
| 11 | 지적도 조각 하나 실패 → 다음 GET 마다 상자 통째 다시 받음(로그 「조각 16 · 실패 1」) | `Layers.py:185 · 190-192` | 실패 조각만 다시 |
|
||||
|
||||
- 확인함 · 문제 없음: 복제 = 폴더 통째(robocopy · 수정시각 그대로 → 파생 저장본 재사용 · `common_util_project_copy.py:79-99`) · 임도망 zip · 노선 파일 따라감 · 브라우저 보관함 · 초안 = 프로젝트 id 별 · 지형면 격자 주소에 파일 지문(`D03_PlanAnalysis_Api.ts:127-136`) · 새 프로젝트 첫 진입 = 기준점 ± 1 km 받기(`UI_Page.ts:575-579`) · 지점 옮김 = 이어 받기(`UI_Page.ts:257-264`).
|
||||
- 만질 파일 — `D03_PlanAnalysis_UI_Layers.ts`(1 · 2 · 3) · `D03_PlanAnalysis_UI_Page.ts`(9) · `D03_PlanAnalysis_Terrain.py` · `D03_PlanAnalysis_Router.py`(5 · 6 · 7) · `D03_PlanAnalysis_Layers.py`(11) · `D01_PlanRegister_Router.py` 또는 D03 Router(4 · 8 · 기준점 PUT) · 시험 `test_530_1_plan_terrain.py` · `test_530_2_plan_router.py` · `test_591_1_plan_site.py`.
|
||||
- 사용자 결정 거리 — 위치를 멀리 옮길 때 옛 지형 걷음(권함) 대 합침 · 「멀리」 기준 거리 · 칸 상한.
|
||||
- 위험 — 옛 지형 걷기 = storage 지움(Synology 번짐 · 그 프로젝트만) · 기준점 PUT = 공유 DB `projects.site_*` 쓰기(데스크탑 임시 배포에도 보임).
|
||||
|
||||
## 27. 줌아웃 제한 · 느린 조작
|
||||
|
||||
### 27-1. D01 · D03 차이
|
||||
|
||||
| 칸 | D01 등록(카카오) | D03 예정노선(MapLibre + 캔버스) |
|
||||
| --- | --- | --- |
|
||||
| 카메라 주인 | 카카오 지도 자체(`ui_template_kakao_map.ts:169 · 240 · 305`) | 화면 `view`(캔버스) · MapLibre 는 따라가기만(`interactive: false` · `ui_template_gl_map.ts:166-174 · 190-195`) |
|
||||
| 줌아웃 한도 | 레벨 상한 안 정함 = 카카오 14(한반도 · 이웃 나라) | **`MIN_SCALE 0.5` × 위성 틀**(받은 도엽 상자 · `B05_Profile_UI_RouteEdit_Input.ts:34 · 84`) — 랩탑메인 D 틀 5.46 × 3.39 km → 화면 폭 약 11 km |
|
||||
| maxBounds · minZoom | 없음 | MapLibre 쪽 없음 · 위성 조각 z6~19(`ui_template_gl_map.ts:58-66` · 서버 `Router.py:387`) |
|
||||
| 바탕 조각 | 카카오 CDN 직접 | 우리 서버 대리(`Router.py:375-415`) → vite 대리(HTTP/1.1 · 한 주소 동시 6) · 프로젝트별 저장(복제 사이 공유 없음) · 처음 조각 외부 43~93 ms |
|
||||
| 확대 | 레벨 단 · 부드러운 움직임 | 휠 한 칸 1.15 배 순간(`Input.ts:31-32 · 83-98`) |
|
||||
| 범위 밖 | 끝없음 | 정규화 틀 = 위성 틀(`UI_Map.ts:356-373`) · 옮김은 되나 줌아웃 막힘 |
|
||||
|
||||
### 27-2. 느린 조작 후보(실측 못 함 · 브라우저 안 띄움)
|
||||
|
||||
| # | 자리 | 근거 |
|
||||
| --- | --- | --- |
|
||||
| 1 | **지형 받기(1~6 분)가 도는 동안** 같은 서버 프로세스 — 위성 조각 · 겹 응답이 늦어짐(GIL) · 보기 옮김마다 받기 다시 | `UI_Page.ts:164-187` · 18-2 표 |
|
||||
| 2 | 화면마다 MapLibre 동기 `redraw()` + 큰 GeoJSON(등고 표시본 3.2 MB · 큰 D 14.6 MB · 건물 6,171 · 지적 3,702 필지) — 줌 단 바뀔 때 일꾼이 다시 조각냄 | `ui_template_gl_map.ts:194` · 로그 |
|
||||
| 3 | 마우스 움직임마다 위 캔버스 전부 다시(그은 선 · 측점 · 기울기 글 · 핀) | `UI_Map.ts:447-453` |
|
||||
| 4 | 조각 대리 · 동시 6 연결을 겹 받기와 나눠 씀 | `Router.py:375-415` |
|
||||
| 5 | 매 화면 등고 간격 고르기가 등고선 전부 훑음(작음) | `UI_Layers.ts:486-488` · `B04_UI_MapRender.ts:575-597` |
|
||||
|
||||
### 27-3. 고칠 길
|
||||
|
||||
| 갈래 | 내용 | 만질 파일 |
|
||||
| --- | --- | --- |
|
||||
| **가(권함)** | 휠 부품에 하한 인자(`minScale` · 안 주면 0.5 = **B05 그대로**) · D03 은 「화면 폭 ≈ 600 km(한반도)」 되게 넘김 · 위성 z6 그대로 | `B05_Profile_UI_RouteEdit_Input.ts:34 · 38-53 · 84`(인자만) · `D03_PlanAnalysis_UI_Map.ts:489-497` |
|
||||
| 나 | 다른 나라까지 = VWorld 위성 바깥 → 다른 바탕(OSM 등) 필요 | `ui_template_gl_map.ts` |
|
||||
| 다 | 18 가 · 나(격자 · 보기 이어 받기 끔)로 서버 바쁨 걷음 → 1 번 후보 해소 | 18 표 |
|
||||
| 라(나중) | 측정 먼저 — `performance` 표식(flush · MapLibre redraw · 조각 대기) · 「기능 먼저 · 속도는 따로」 | `UI_Map.ts:397-404` |
|
||||
|
||||
- 사용자 결정 거리 — 줌아웃 목표 = 한반도(권함) 대 다른 나라.
|
||||
- 위험 — `bindRouteEditNavigation` = B05 노선 편집 · 배수유역도 공용 → 기본값을 바꾸면 B05 제어가 바뀜(요구 463-16 금지) — 인자로만.
|
||||
- 곁 발견(사용자 화면 무관) — 파이썬 `urllib` 로 `localhost:8000` 을 부르면 요청마다 약 2.1 s(IPv6 먼저 시도 · curl 연결 0.21 s) · `127.0.0.1` = 12~69 ms. vite 대리는 `127.0.0.1`(`vite.config.ts:10`)이라 화면엔 영향 없음 · 측정 · 검증 스크립트만 `127.0.0.1` 로.
|
||||
|
||||
---
|
||||
|
||||
## 파일 경계 제안(창 셋 + 운영 하나 · 파일 안 겹침)
|
||||
|
||||
| 창 | 맡는 요구 | 파일(이 창만) |
|
||||
| --- | --- | --- |
|
||||
| A 지형 받기 · 서버 | 18 가 · 다 · 25-6 · 7 · 11 · 기준점 바꿈 서버 쪽(새 범위 시작 · 칸 상한) | `config/config_system_terrain.py` · `D03_PlanAnalysis_Terrain.py` · `D03_PlanAnalysis_Layers.py` · `D03_PlanAnalysis_Router.py` · `D03_PlanAnalysis_ForestRoad.py`(19 서버) · `D01_PlanRegister_Router.py`(기준점 PUT) · 시험 `test_530_1` · `test_530_2` · `test_584_3` · `test_591_1` |
|
||||
| B 왼쪽 판 · 겹 화면 | 19 화면 · 25-1 · 2 · 3 · 9 · 18 나 · 「위치」 칸 | `D03_PlanAnalysis_UI_Page.ts` · `D03_PlanAnalysis_UI_Layers.ts` · `D03_PlanAnalysis_UI_LayerDefs.ts` · `D03_PlanAnalysis_Api.ts` |
|
||||
| C 지도 조작 | 27 | `B05_Profile_UI_RouteEdit_Input.ts`(인자만) · `D03_PlanAnalysis_UI_Map.ts` · `D03_PlanAnalysis_UI_MapGl.ts` · `ui_template/ui_template_gl_map.ts` |
|
||||
| 운영(브레인 · 코드 없음) | 20 | DB · storage · `db_management/tools_clone_project.py` 실행만 · `OWNERS.md`(사용자) |
|
||||
|
||||
- 차례 = A 의 격자 결정 → 운영(용화 원본 · 9 복제) → B · C 동시. B 는 A 의 기준점 PUT · 응답 꼴(잘린 임도 상자 · 거리)을 받아 씀 — A 가 먼저 꼴을 `PLAN.md` 에 적음.
|
||||
- 같은 요구 463 의 다른 몫(1~16 · 21~24 · 26)이 `UI_Page.ts` · `UI_Draw*` · `UI_Edit.ts` · `UI_Points.ts` · `UI_Props.ts` · `UI_3D.ts` · D01 화면을 만짐 → **`UI_Page.ts` 는 B 한 창에 몰아 줌**(위치 칸 · 지점 칸 · 판 글 걷기 함께).
|
||||
|
||||
## 사용자 결정 거리
|
||||
|
||||
1. D 지형 격자 — **5 m(권함 · 받기 약 6 배 빨라짐 어림)** / 2 m 그대로.
|
||||
2. 지도 보기만 옮겼을 때 지형 이어 받기 — **끔 · 지점 · 선 · 위치 바꿈만(권함)** / 지금대로.
|
||||
3. 위치(기준점)를 멀리 옮길 때 — **옛 지형 걷고 새로(권함)** / 합침 · 「멀리」 기준(예 5 km 권함) · 칸 상한(예 500 만 칸).
|
||||
4. 다른 TM 띠로 옮길 때 그은 노선 — **「노선 지움」 확인 뒤 옮김(권함)** / 옮김 막음.
|
||||
5. 임도망 자르는 범위 — **기준점 ± 5 km ∪ 받은 지형(권함)** / 받은 지형 안만(지금).
|
||||
6. 임도망이 그 범위 밖뿐일 때 — **거절 + 거리 알림 = 주소지 우선(권함)** / 지형을 넓혀 받음.
|
||||
7. 용화 원본 — **D01 로 새 원본(권함)** / 옛 원본 기준점 바꿈(안 됨 · 20-2). 새 원본 이름 · 옛 「가이드_예정노선」 설명서용으로 남김(권함).
|
||||
8. 용화 임도망 시험 자료 — **예정노선 SHP(1 가닥)로 시험(권함)** / 영양군 임도망도 실자료 따로 받음.
|
||||
9. 복제 수 — **9(OWNERS 표 · 권함)** / 18(브레인 글 · 근거 확인 필요).
|
||||
10. 옛 D 검증 9 개 — **휴지통(권함 · 영구 삭제는 나중)** / 그대로 둠.
|
||||
11. D03 줌아웃 목표 — **한반도까지(권함)** / 다른 나라까지(바탕 지도 따로).
|
||||
@@ -0,0 +1,83 @@
|
||||
# 요구서 463 — 예정노선 화면 개편(왼쪽 판 · 위치 · 고르기 · 긋기 · 3D · 지도 받기)
|
||||
|
||||
원문 = `사용자요구_1025.md` 요구 463 · 근거 분석 = `_분석_463-A_왼쪽판_위치_지점.md` · `_분석_463-B_그리기_고르기_3D.md` · `_분석_463-C_자료_성능_임도망.md`.
|
||||
|
||||
## 1. 물음 답
|
||||
|
||||
- **17 급경사** — 외부 자료 아님. 받은 1:5,000 수치지형도 도엽 등고선으로 서버가 만든 지형(DEM)에서 15° · 35° · 40° 셈. 범위 = 받은 지형 범위(처음 기준점 ±1 km · 지점 · 선 · 지도 보기 가운데를 따라 넓어짐 · 줄지 않음).
|
||||
- **18 받기 느림** — 받는 범위가 조금만 늘어도 지형면을 범위 통째로 다시 셈(150만 칸 54 s · 530만 칸 384 s) · 지도 보기만 옮겨도 범위가 늘어 다시 돎 · 지적도가 지형면 앞을 막음 · 진행 막대가 65 %에서 수 분 멈춤. 외부 받기(조각당 43~314 ms)는 작은 몫.
|
||||
- **27 줌아웃 차이** — 등록 = 카카오 지도(레벨 14 · 이웃 나라까지) · 예정노선 = B05 노선 편집과 같은 휠 부품(축소 한도 0.5 × 받은 도엽 상자 = 화면 폭 약 11 km).
|
||||
|
||||
## 2. 요구 · 지금 · 고칠 것
|
||||
|
||||
| # | 요구 | 지금 (조사) | 고칠 것 |
|
||||
| --- | --- | --- | --- |
|
||||
| 1 | 「노선 분석」 → 「예정노선」 | 사전 글 셋 · 대시보드 단계 이름 · 단축키 표 · 시험 둘 | 글만 바꿈 · 폴더 · 주소 · 열쇠 그대로 |
|
||||
| 2 | 지형 칸(받기 진행만) → 서클 | 칸 안 막대 + 글 · 부품 상자에 서클 있음 | 지도 오른쪽 아래 작은 서클(부품에 귀퉁이 꼴 덧) · 끊긴 받기 = [다시 받기] |
|
||||
| 3~5 | 지형 칸 → 위치 칸 · 등록 주소 연동 · 처음 = 주소 기준 · 바꾸면 이동 + 받기 | 기준점 = DB 칸 한 벌 · 등록은 처음 쓰기만 · 예정노선은 읽기만 · 바꿀 길 없음 · 처음 진입 ±1 km 는 이미 됨 | 위치 칸 = 주소 · 장소 찾기 → 지도 이동 → 새 기준점 둘레 받기 · [저장] 때 기준점 · 주소 저장(등록과 같은 칸 = 저절로 연동) |
|
||||
| 6 | 쓸모없는 글 지움 | 네 칸 글 열넷 | 열 지움 · 실패 · 오류 · 기준점 없음 · 기울기 값만 남김 |
|
||||
| 7 · 8 | 지점 추가(우클릭 · [추가]) · 이름 · 좌표 손 고침 | 우클릭 「지점 놓기」만 · 이름 = 차례 자동(저장 칸 없음) · 좌표 보기만 | [추가] 단추 · 이름 · 경위도 칸 고침 · 저장 꼴에 이름 칸 |
|
||||
| 9 | 전체 / 구역 / 선 | 저장 = 그은 꺾은선(본선 · 지선) · 선(토막) 낱 자료 없음 | 저장 꼴 그대로 · 고르는 층만 노드 → 선 → 구역 → 전체 |
|
||||
| 10 | 방식 이름 · 길이 · 기울기 두 열 | 자유 · 길이 고정 · 기울기 고정 · 둘다 · 세로 | 「둘다」 → 「길이·기울기 고정」 · 입력 두 열 |
|
||||
| 11 | 노드마다 방식 · 값 기억 · 노드 고르면 바꿈 | 화면에 하나만 기억 · 노드 기록 없음 | 선 저장 꼴에 노드 기록 칸 · 노드 판에서 고침 |
|
||||
| 12 | 선 하나 고르기 · 중간 일부 다시 긋기 | 둘 다 없음 | 선(토막) 고르기 · [다시 긋기] |
|
||||
| 13 · 16 | 오버레이 재활용 · 지움 두 곳 | 구역 고름 오버레이 있음 · 지움 · 연도 = 오버레이에만 | 한 오버레이를 노드 · 선 · 구역 · 전체에 · 지움 = 오버레이 + 왼쪽 칸 |
|
||||
| 14 | 구역 목록 선 색 · 연도 · 이름 · 지움 | 날 줄 · 색 없음(지도 선도 한 색) | 목록 = 색 띠 + 이름 + 연도 고름 + 지움 · 측점 글 작게 · 지도 선도 같은 색 |
|
||||
| 15 | 방향 바꾸기 · 갈래 시점 뺌 · 지점 ↔ 노드 연동 | 같은 자리(1 mm)만 묶임 · 노드 끌기 잠김 · 지점을 노드 위에 놓아도 안 붙음 | 두 단추 걷음 · 지점 ↔ 노드 붙음 · 서로 따라감 |
|
||||
| 16 | 우클릭 = 노드 지움 → 메뉴 · B05 그대로 | 우클릭 즉시 지움(예정노선 혼자 코드) | 우클릭 = 메뉴 · 노드 지움은 메뉴 · Delete · B05 코드 안 만짐 |
|
||||
| 19 | 임도망 [올리기] → 위치 칸 · 주소지와 둘 다 · 안 되면 주소지 | 지도 아이콘 묶음 · 받은 지형으로 잘라 안쪽 0 이면 거절 | 위치 칸으로 · 자르는 범위 넓힘 · 지도 맞춤 둘 다 · 밖뿐이면 거절 + 거리 알림 |
|
||||
| 20 | 용화 근처 검증 프로젝트 다시 복제 | 폴더 안 용화 자료 = 예정노선 SHP 한 가닥 2.1 km(경북 영양군 일월면 용화리 · 동부 5187) · 지금 검증 자리(상주)에서 118 km · 옛 원본 기준점 바꿈은 좌표계 굳음 · 범위 합침으로 안 됨 | 등록으로 용화 새 원본 → SHP 올려 확인 → 검증 D 아홉 다시 복제 · 옛 아홉 휴지통 · 옛 원본 = 설명서용 남김 |
|
||||
| 21 | 3D 표준 횡단 꼴 · 노선망 전체 | 선 한 줄 · B05 3D 뷰어가 노선 한 벌만 받음 · 예상 횡단 셈은 옛 544 코드가 git 에 남음 | 예상 횡단 되살림 · B05 3D 뷰어에 여러 벌 덧(B05 화면 동작 그대로) |
|
||||
| 22 | 연도 구역 마커 → 그리기 칸 · 우클릭 | 지도 도구줄 | 그리기 칸 단추 + 우클릭 메뉴 |
|
||||
| 23 | 거리재기 첫 점이 노선 위면 노선 길이 | 늘 곧은 거리 | 첫 점이 노선 위 = 두 누름 사이 노선 따라 · 아니면 그대로 |
|
||||
| 24 | 테마 · 바탕 따라 선 안 보임 | 미리보기 · 거리재기 · 고름 강조 = 테마 색(밝은 테마 거의 검정) · 바탕 늘 어두움 → 대비 1.1 : 1 · 노선 주황 = 개발제한 · 산사태 2등급 겹 색과 같음 | 지도 위 그림 = 지도 전용 밝은 색 + 검은 테 · 노선 색을 겹 색과 가름 |
|
||||
| 25 | 복제 · 생성 · 지점 옮김 때 다시 모으기 빠짐 | 열하나(겹 = 위성 틀 바뀔 때만 새로 · 등고 · 세류 = 옛 저장본부터 · 기준점 바꿀 길 없음 · 범위 합침 폭발 · 서버 다시 켜짐 = 받기 끊김을 끝남으로 · 복제본 범위가 노선 못 덮음 · 지적 조각 하나 실패 = 통째 다시 …) | 열하나 모두 고침(받은 범위로 판정 · 범위 지문 · 칸 상한 · 끊김 표시 · 실패 조각만) |
|
||||
| 26 | 등록 지도 찾기 · [위성] 오른쪽 | 없음 · 서버 VWorld 주소 찾기 길 있음 | 공용 주소 · 장소 찾기 · 등록 · 위치 칸 같이 씀 |
|
||||
| 27 | 느림 · 줌아웃 한도 | 1장 | 줌아웃 한도 = 예정노선만 인자로(B05 그대로) · 느림 = 18 고침 + 화면 시간 잼 |
|
||||
|
||||
## 3. 정함(브레인) — 사용자가 바꿀 수 있음
|
||||
|
||||
1. 이름 「예정노선」 그대로(단계 막대 · 대시보드에 두 번 보여도 받아들임).
|
||||
2. 서클 = 지도 오른쪽 아래.
|
||||
3. 위치 바꿈 = 캐시 → [저장] 때 정본(되돌리기 됨) · 사업 지역 · 프로젝트 이름은 안 바꿈.
|
||||
4. 위치를 멀리(5 km 넘게) 옮김 = 물음 한 번 뒤 옛 받은 범위 버리고 새로 · 받기 칸 상한 500 만 · 다른 TM 띠로 넘음 = 「노선 지움」 확인 뒤.
|
||||
5. 지점 좌표 손 고침 = 경위도 · [추가] = 지도 가운데에 바로.
|
||||
6. 선 색 = 선마다 차례 색(겹 색과 안 겹치게) · 이름 20 자 · 파일 이름 못 쓰는 글자 막음.
|
||||
7. 구역 = 그은 꺾은선 하나(본선 · 지선) · 연도 = 그 안 구간 속성 · 누름 넓힘 = 선 → 구역 → 전체.
|
||||
8. 노드 방식 · 값 바꿈 = 뒤 노드 그대로 + 어긋남 ⚠ · 노드를 끌어 옮긴 뒤에도 기록 남기고 ⚠.
|
||||
9. 다시 긋기 끝 = 원래 뒤 노드에 붙어야 끝 · 가운데 토막 지움 = 구역 둘로(뒤쪽 = 새 구역).
|
||||
10. 다른 구역에 닿아 끝난 선 = 저절로 그 점의 갈래.
|
||||
11. 지점 ↔ 노드 = 같은 자리로 묶음 · 노드 끌면 지점도 · 지점 끌면 노드도 · 지점을 노드 12 px 안에 놓으면 붙음.
|
||||
12. 노드 지움 = 우클릭 메뉴 [노드 지움] + 고르고 Delete · [전체 지움] = 되돌리기 됨 · [저장] 때 정본.
|
||||
13. 3D = 프로그램 기본 표준 횡단(리핑암 · 산쪽 절토 · 일반 측구 · 계획고 = 지반고) · 노선망 전체 한 번에.
|
||||
14. 노선 재기 = 두 누름 사이 노선(망) 따라.
|
||||
15. 지도 위 그림 색 = 테마 안 따르는 지도 전용 밝은 색 + 검은 테.
|
||||
16. 방식 넷 = 부품 상자 마디 고름 2 × 2 꼴.
|
||||
17. 지도 보기만 옮김 = 받지 않음(지점 · 선 · 위치 바꿈만 받음) · 지적도는 지형 일에서 뺌(켤 때 받음).
|
||||
18. 임도망 자르는 범위 = 기준점 ±5 km ∪ 받은 지형 · 밖뿐 = 거절 + 거리 알림(주소지 우선).
|
||||
19. 용화 = 등록으로 새 원본 · 용화 SHP 한 가닥으로 시험 · 다시 복제 = 예정노선 검증 아홉(랩탑 메인 · sub1~8) · 안정성평가 검증은 그대로 · 옛 아홉 = 휴지통.
|
||||
20. 줌아웃 = 한반도까지(위성 바탕이 한국만 덮음).
|
||||
21. 찾기 = 서버 VWorld(주소 + 장소) 공용 · 대시보드 기준점 고침 창은 안 만듦(위치 칸이 대신).
|
||||
|
||||
## 4. 사용자 결정
|
||||
|
||||
1. (18) 예정노선 지형 격자 — **5 m(권함 · 받기 약 6 배 빨라짐 어림 · 근거 = 지식DB `타당성평가.md:59` 평균경사도 1/5,000 도면 1 ㎝(50 m) 간격 · 등고 간격 5 m · 0차곡 기준 다시 봄)** / 2 m 그대로.
|
||||
2. (11) 「점을 선택하면 … 지점을 선택하게 변경」 뜻 — **노드를 고르면 그 노드 방식 · 값 고침 + [지점으로](그 자리에 지점)(권함)** / 다른 뜻.
|
||||
|
||||
## 5. 배정안 (승인 뒤)
|
||||
|
||||
| 절 | 창 | 모델 | 맡는 항목 |
|
||||
| --- | --- | --- | --- |
|
||||
| 594 저장 꼴 · 찾기 길 | sub1 | Opus high | 7 · 8 · 11 · 14 서버 꼴 · 26 서버 · 3~5 [저장] 몸 |
|
||||
| 595 지형 받기 서버 | sub2 | Opus high | 18 · 19 서버 · 25 서버 · 3~5 기준점 · 새 범위 |
|
||||
| 596 이름 · 위치 칸 · 서클 · 등록 찾기 | sub3 | Opus high | 1 · 2 · 3~5 · 6(위치) · 19 화면 · 25 화면 · 26 |
|
||||
| 597 지점 · 구역 칸 | sub4 | Sonnet high | 6(지점 · 구역) · 7 · 8 · 14 |
|
||||
| 598 고르기 · 오버레이 · 우클릭 메뉴 | sub5 | Opus high | 9 · 12(고름 · 지움) · 13 · 16 · 15 · 22(메뉴) · 11(노드 판) |
|
||||
| 599 긋기 · 다시 긋기 · 마커 자리 | sub6 | Opus high | 6(그리기) · 10 · 11(기록) · 12(다시 긋기) · 22(단추) |
|
||||
| 600 재기 · 색 · 지도 조작 | sub7 | Sonnet high | 23 · 24 · 27 |
|
||||
| 601 3D | sub8 | Opus high | 21 |
|
||||
| 602 용화 검증 프로젝트 | 먼저 끝난 창 · 브레인 | Sonnet | 20 |
|
||||
|
||||
- 차례 — 첫 커밋 셋(594 저장 꼴 · 597 목록 떼어냄 · 600 지도 색 함수) 뒤 받기 알림 · 595 격자 · 범위 고침 뒤 602 → 모든 창에 「검증 D 바뀜」.
|
||||
- 같은 파일 몫 — `D03_PlanAnalysis_UI_Page.ts` 주인 = 596(다른 창은 함수 몫만) · `UI_Map.ts` = 598 우클릭 줄 · 599 도구줄 · 600 색 · 줌 · `UI_Props.ts` = 597 목록 떼어냄 → 598 판 · `UI_Points.ts` = 597 칸 · 598 붙음 함수 하나 · `logic/D03_PlanAnalysis_Plan.ts` = 594 꼴 첫 커밋 뒤 599.
|
||||
- 가이드(D01 · D03 · D04) = 사용자 지시 때 한 번에.
|
||||
Reference in New Issue
Block a user