knowledge(요구): 분석 597 — B05 둘째 단계 안 빠짐 · 지표면 옮겨 심기 · 지오빅데이터 접속 확인
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015uTVHFZkNcUa1SR4cNcENM
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# 분석 597-1 — B05 「둘째 단계」(예정노선 따라가며 곡선 수 줄이기) 빠졌나
|
||||
|
||||
- 실측 자리: 검증_sub1(`916ea58c`) · 8001 `GET /route/plan/source` · `GET /route/plan` · `POST /route/follow`(저장 0) + 파이썬 함수 직접 · 검증_랩탑메인(`dad81824`) storage 읽기만.
|
||||
- 코드 · storage · DB 고침 없음 · 스크립트는 세션 scratchpad(`m597*.py`).
|
||||
|
||||
## 결론
|
||||
|
||||
- **빠지지 않음.** 755 는 서버 셈을 안 건드림 — 끌 때 한 번 · 켠 채 저장 막기는 부르는 때만 바꿈 · 755-3 은 받은 꼭짓점 양끝 자름만.
|
||||
- follow 길 = 체인 처음 길 = 추천 「예상노선 추적」 — 같은 함수 `followed_table` · 같은 결과(노드 27 · 곡선 25 · 최대 떨어짐 4.9 m).
|
||||
- 사용자가 말한 「곡선 수 줄이기」(같은 쪽 곡선 합치기 · 큰 R)는 **원래부터 추천 갈래(토공 최소 · 기울기 · 영선 · 비중 …)에만** 있음 · 추적 길(체인 · follow)에는 이은 적 없음.
|
||||
- 추적 길에도 묶기는 있으나 「평균 떨어짐이 안 늘 때만」이라 실측 노선에서 **0 곳** — 사실상 안 줄임.
|
||||
- 화면에서 「빠짐」으로 보인 까닭(가장 유력): 고치기 전 작업본 = 「토공 최소」 추천 선(곡선 17) → 예정노선 고쳐 끄면 추적선(곡선 25)으로 통째 바뀜.
|
||||
|
||||
## 1. 계획 평면노선 만드는 길
|
||||
|
||||
| 길 | 부르는 차례 |
|
||||
| --- | --- |
|
||||
| 체인 처음 | `B03_FileInput_Service_Chain.py:372` `_ensure_initial_polyline` → `B05_Profile_Router_Replan.py:210` `_ensure_planned_initial` → `B05_Profile_Route_Polyline_Write.py:206` `followed_table` → `B05_Profile_Engine_RouteInitial_Station.py:559` `snapped_initial` → ① `common_util_route_polyline.py:290` `build_planned_polyline` → ② `Station.py:570` `snap_curves_to_stations` → `polyline_table`(편집 갈래 · 노드 그대로) |
|
||||
| 예정노선 수정 끌 때 | `B05_Profile_UI_ExpectedDraw.ts:289` `finish` → `:309` `follow` → `POST /route/follow` → `B05_Profile_Router_RouteFollow.py:49` `follow_route_line`(3.6 m 조밀화) → `followed_table`(위와 같음) → 화면 `flattenServerPlan` → `B05_Profile_UI_RouteEdit.ts:136` `onFollow` 한 걸음 |
|
||||
| [받은 노선으로] | `ExpectedDraw.ts:220` `follow(received())` — 위와 같음 |
|
||||
| 추천 「예상노선 추적」 | `B05_Profile_Engine_RouteInitial.py:363-368` `follow_line` = ① + `settle`(②) — 체인과 같음 |
|
||||
| 추천 그 밖 갈래 [적용] | 격자 탐색 경로 → `B05_Profile_Engine_RouteInitial_Pool.py:139` `_trace` = 큰 R `widen`(:163) → `curve_every_kink`(:176) → **같은 쪽 곡선 합치기** `merge_same_side`(:179 · `..._Merge.py:246` · 잼 = 복도 · 계류 · 토공 +10 %) → ②(잼) → 화면 노드 → `/route/replan` `as_initial` |
|
||||
| 손 [저장] | `/route/replan` → Node `buildEditedPolyline`(편집 갈래 · 단순화 · 묶기 없음) |
|
||||
|
||||
- 따라가기 = ① 안 — 꺾임점 뽑기(Douglas-Peucker 4 m · `common_util_route_polyline.py:338`) · R 을 예정노선에 맞춤(`_fit_radius_m`).
|
||||
- 곡선 수 줄이기 자리 셋:
|
||||
- a. ① 같은 쪽 꺾임 묶기 `_curve_runs`(:160 · :357) + 손해면 도로 쪼갬 `_split_wide_runs`(:248 · 판정 :283 = 묶은 평균 ≤ 낱개 평균 **그리고** 최대 ≤ max(낱개 최대, 8 m)) — 추적 · 추천 모두.
|
||||
- b. ② 측점 맞춤 중 못 놓으면 다음 꺾임과 합침 · 이웃이 한 측점을 다투면 덜 꺾인 쪽 끔 — 추적 · 추천 모두.
|
||||
- c. 추천만 — `merge_same_side` · `widen` · `curve_every_kink`(`Pool.py:139-183`).
|
||||
|
||||
## 2. 755 전후 대조(읽기만)
|
||||
|
||||
- 755 · 756 · 757 커밋 다섯 중 서버 셈 파일 = `8b3560c4c` `B05_Profile_Router_PlanSource.py`(받은 꼭짓점 양끝 자름) 하나. `followed_table` · `Station` · `common_util_route_polyline` 안 바뀜.
|
||||
- `dfba0e7b5`(화면) — 부르는 때만 바뀜(고칠 때마다 → 끌 때 한 번) · 보내는 몸통(`points` · `crs: tm`) · `onFollow` 같음.
|
||||
- `/route/follow` 는 처음(`fea37b4ce` · 10-31)부터 `followed_table` — 체인과 한 함수. `e70201a62`(635-2)가 조밀화만 더함(성긴 원본 → 체인과 같은 선).
|
||||
- `merge_same_side` 는 처음(`45abce48a` · 10-18)부터 추천 후보 전용 — 파일 머리 「손 편집 · 옛 노선 · 예상노선 추적(전처리 초기값) · 공용 선 짜기 짝은 안 거침」.
|
||||
- 묶기 판정(:283)은 `db7004964`(09-07) 뒤 안 바뀜.
|
||||
|
||||
## 3. 실측
|
||||
|
||||
검증_sub1 — 예정노선 331 점 · 1,097 m · 최소 R 12 m
|
||||
|
||||
| 길 | 노드 | 곡선 | 측점 위 | 예정노선과 최대 · 평균 떨어짐 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| ① 꺾임점 · 묶기 · R 맞춤 | 28 | 26 | 0 | 3.5 · 1.1 m |
|
||||
| (a) 체인 ①+② | 27 | 25 | 25 | 4.9 · 1.6 m |
|
||||
| 저장 초기선 `planned_route_initial`(11-01) | 27 | 25 | — | 4.9 · 1.6 m |
|
||||
| (b) follow 함수(받은 꼭짓점 64) | 27 | 25 | — | 4.9 · 1.6 m |
|
||||
| (b) `POST /route/follow` 8001 | 27 | 25 | — | 4.9 · 1.6 m |
|
||||
| (b) 가운데 꼭짓점 하나 3 m 옮김 | 27 | 25 | — | 5.3 · 1.8 m |
|
||||
| 작업본 `GET /route/plan` | 27 | 25 | — | 4.9 · 1.6 m |
|
||||
|
||||
- (a) = (b) 꼭 같음.
|
||||
- ① 묶기: 같은 쪽 이웃 묶음 후보 7(꺾임 21) → 판정에 모두 쪼개짐 → 0 곳.
|
||||
- 넷(2~3 꺾임) = 묶어도 최대 떨어짐 같음(2.0~2.6 m) · 평균만 0.07~0.25 m 늚 → 안 묶음.
|
||||
- 하나(5 꺾임) = 최대 7.4 m(8 m 안) · 평균 1.6 m → 안 묶음.
|
||||
- 둘 = 최대 21 · 33 m → 안 묶는 게 맞음.
|
||||
- ② 측점 맞춤 합침 1 곳(26 → 25).
|
||||
- 손 그은 원호(R 40 m · 8 m 마다 15 점) → 노드 3 · 곡선 1(R 37.4) — 고른 원호 묶기는 됨.
|
||||
|
||||
추천 저장본(같은 예정노선 · c 거침)
|
||||
|
||||
| 갈래 | 곡선 | 최대 · 평균 떨어짐 |
|
||||
| --- | --- | --- |
|
||||
| 추적(follow) | 25 | 4.9 · 1.6 m |
|
||||
| 비중(기본 50/25/25) | 13~18 | 22~27 · 5~8 m |
|
||||
| 토공 최소 | 17~19 | 37~60 · 16~23 m |
|
||||
| 기울기 · 영선 | 16~19 | 44~68 · 19~22 m |
|
||||
|
||||
- 검증_랩탑메인 작업본 = 「토공 최소」(`initial_choice.json` earthwork) 노드 19 · 곡선 17 · 최대 40 m → 고쳐 끄면 추적선 곡선 25.
|
||||
- 앞 분석 589-A 의 「34 노드 · 곡선 32」는 755-3 자르기 전 1,377 m 값 — 지금은 1,097 m 로 체인 초기선과 같음.
|
||||
|
||||
## 4. 결론 · 다시 잇는 자리(고치지 않음)
|
||||
|
||||
- 판정: 빠지지 않음 · 추적 길의 곡선 수 줄이기는 처음부터 약함(a · b 만) · 센 줄이기(c)는 추천 갈래에만.
|
||||
- 현상 까닭 후보(유력 차례):
|
||||
1. 고치기 전 = 추천 선(합치기 거침 · 곡선 17) · 고친 뒤 = 추적선(곡선 25) — 곡선 늚.
|
||||
2. 추적 길 묶기 판정이 빡빡 — 평균 0.1 m 늘어도 안 묶음.
|
||||
3. 추천 엔진은 고친 예정노선을 안 받음 — `B05_Profile_Router_RouteInitial.py:97` 이 `expected_route.csv` 만 읽음(`expected_route_edit.csv` 안 봄).
|
||||
4. 고친 뒤에도 추천 표시가 「토공 최소」로 남음 — `RouteEdit.ts:138` `rec: initial.tag()`.
|
||||
- 잇는 자리 갈래:
|
||||
- 가) 추적 길 묶기 판정 풀기 — `common_util_route_polyline.py:283`(평균 조건 걷고 최대 ≤ 8 m 만). 이 함수는 추천 · B04 배수 · 초기 종단도 부름 → `followed_table`(`Polyline_Write.py:206`) 전용 깃발로 좁힘. 어림(판정 수치로 셈 · 돌린 값 아님): sub1 ① 26 → 17 곡선 · 최대 7.4 m 안.
|
||||
- 나) 추천 합치기를 추적 길에 이음 — `followed_table` 의 ①과 ② 사이(체인 · follow 함께)에 `merge_same_side`(`Merge.py:246`) + `widen`(`Pool.py:163`). 잼(`Guard`)이 지형 · 계류 격자를 써서 「지형 안 씀 · 순수 기하」가 깨지고 셈 시간 늚.
|
||||
- 다) 고친 예정노선으로 지금 추천 다시 입힘 — `Router_RouteInitial.py:97` 이 `expected_route_edit.csv` 를 먼저 읽게 + 끌 때 `initial_choice` 갈래로 다시 셈.
|
||||
- 어느 갈래든 체인 · follow 한 함수 지킴(지킴 시험 `test_626_2_route_follow` · `test_635_2_plan_context`).
|
||||
- 물을 갈래: 둘째 단계가 (가 · 나) 추적선 자체의 곡선 수 줄이기인지 · (다) 고친 예정노선에 고른 추천(토공 최소 등)을 다시 입히기인지.
|
||||
@@ -0,0 +1,83 @@
|
||||
# 분석 597-2 — 지표면 채우기 · 하나 지어 복제 (11-03 · 조사 대리 · 읽기 전용)
|
||||
|
||||
## 1 지금 상태(실측 · DB · storage 읽기)
|
||||
|
||||
| 항목 | 가이드_임도설계 | 엄상준_검증 | 박동철_검증 |
|
||||
| --- | --- | --- | --- |
|
||||
| 프로젝트 id | 1a988dd2-be69-4a27-b58f-64f2e27f04b6 | 81339cc8-c889-46ab-accb-512629596e79 | eb717394-080f-4208-9096-8bd584874222 |
|
||||
| 원본 LAS | 용화.las 1,666,228,135 B · 점 49,006,663 · sha256 69665675…212391a9 | 같음 | 같음 |
|
||||
| 모델 행 | 909 implicit·ptd 완료 · 910 dtm·sheet 완료 · **911 implicit·classification 확정** · dtm classification · csf 행 없음(11-02 19:05 다시 지을 때 지워짐 · 파일만 10-17 것) | 669 dtm·classification · 670 dtm·csf · **671 dtm·sheet_laplace 확정** · 891 implicit·classification | **666 dtm·classification 확정** · 667 csf · 668 sheet · 890 implicit |
|
||||
| 확정 고름(stage1) | classification · implicit · 평활 끔 | sheet_laplace · dtm · 평활(수치지형도) · las_selection = classification · dtm · 평활 | classification · dtm · 평활 |
|
||||
| dtm_classification 유효 칸(1 m) | 232,271(옛 · 10-17) | 같음 | 같음 |
|
||||
| 격자 | 645 × 896 · 1 m · 축 넷 다 같음 | 같음 | 같음 |
|
||||
| implicit 굳힌 격자 유효 | 232,271(옛) | 같음 | 같음 |
|
||||
| 등고선 캐시 implicit | 6.97 MB 옛 외곽(md5 셋 같음) | 같음 | 같음 |
|
||||
| 3D 미리보기 implicit | **넓음**(11-02 19:12 · 외곽 344,354 · 랩탑메인과 md5 같음) | 좁음(644-3 · 22.7 만) | 좁음(644-3) |
|
||||
| 3D 미리보기 dtm | 좁음(10-17) | 좁음 | 좁음 |
|
||||
| 노선(마지막) | 1069 · 11-02 19:45 · 1,004.22 m · 모델 911 | 1067 · 11-02 16:11 · 1,046.98 m · 모델 671 | 384 · 10-17 · 1,080.16 m · 모델 666 |
|
||||
| B05/B06 설계 지형 | implicit_classification_grid.npz(옛 외곽) | dtm_sheet_laplace_smooth.npz(라이다 무관) | dtm_classification_smooth.npz(옛 외곽) |
|
||||
| 초기값 스냅샷 | 없음(11-02 19:17 재확정 체인이 지움) | 있음(모델 671) | 있음(모델 666) |
|
||||
| manifest | 11-02 · ptd·implicit · classification·implicit 만(dtm 항목 없음) | 10-17 옛 설정 지문 · implicit 항목 없음 | 같음 |
|
||||
|
||||
- 횡단 표본(저장 파일) 무효 점 0 — 가이드 4,313 · 엄상준 7,425 · 박동철 5,047 · 노선 중심 ↔ 옛 외곽 최소 20.6 · 16.2 · 22.1 m
|
||||
- 각 횡단 표본 z = 그 프로젝트 확정 파일 값(차 중앙값 0.000) — 위 「설계 지형」 칸 확인
|
||||
|
||||
## 2 같은 원본 · 복제 되는지
|
||||
|
||||
- 같은 원본 — LAS 지문 · 크기 · 점 수 · processed(지면점 · 마스크 md5) · implicit_classification.npz(md5) · dtm_sheet_laplace.npz 넷 다 같음(검증_랩탑메인 dad81824 포함)
|
||||
- **복제 원본이 이미 있음** — 검증_랩탑메인 = 11-01 3 m 틈 닫기로 다시 지음 · 지금 설정 지문(1271fbf7) · dtm 유효 344,624 칸 · 같은 축
|
||||
- 옛 ↔ 새 값(1 m 칸) — dtm · implicit 격자 · csf: 옛 유효 칸 안 차 **0**(비트 같음) · 새 외곽 = 옛 외곽 포함(빠지는 칸 0) · 평활 dtm 만 옛 가장자리 3 m 띠 6,325 칸 다름(최대 2.5 m)
|
||||
- 기존 도구 안 됨 — `db_management/tools_clone_project.py` = 새 프로젝트 통째(새 UUID · DB 전 행) · `--storage-only` = 폴더 통째 robocopy + UUID 치환 → 대상 노선 · 구조물 · B05~B09 파일을 원본 것으로 덮음(사용자 편집 잃음)
|
||||
- 필요한 것 = 644-3 꼴 작은 옮겨 심기(파일 몇 개 + DB 행 몇 칸) 일회 도구
|
||||
|
||||
옮길 파일(원본 `…/dad81824…/B04_PreProcess/models/`):
|
||||
|
||||
| 파일 | 가이드 | 엄상준 · 박동철 |
|
||||
| --- | --- | --- |
|
||||
| dtm_classification.npz · _smooth.npz · _preview.glb · _smooth_preview.glb | ○ | ○ |
|
||||
| implicit_classification_grid.npz · implicit_classification_grid_grid.bin | ○ | ○(bin 없음 → 저절로 생김) |
|
||||
| implicit_classification_preview.glb | — (이미 같음) | ○ |
|
||||
| contour_classification_dtm_1.0m · _dtm_smooth_1.0m · _implicit_1.0m .json | ○ | ○ |
|
||||
| dtm_csf 넷 · contour_csf 둘(고름 · 확정 무관) | 선택 | 선택 |
|
||||
| manifest.json | 원본 + 가이드 ptd 항목 합침 | 원본 그대로 |
|
||||
|
||||
- 옮기지 않음 — implicit_classification.npz(이미 같음 · 옮기면 911 · 890 · 891 지문 바뀜) · processed/(같음) · dtm_sheet_laplace*(같음) · contour_sheet_laplace(랩탑메인 UUID 박힘 · 유일)
|
||||
- 경로에 프로젝트 id — DB 경로 = 프로젝트 뿌리 상대 → 그대로 · 옮길 파일 안 UUID 없음
|
||||
|
||||
DB 고칠 칸(`surface_models.generation_params` 만 · 상태 · 노선 · stage 안 건드림):
|
||||
|
||||
- dtm 행 `footprint_area_m2` 232,037 → 344,354 · `file_stamp` = 옮긴 파일 새 지문 — 박동철 666(확정) · 667 · 엄상준 669 · 670
|
||||
- implicit 행 `footprint_area_m2` → 344,354 — 엄상준 891 · 박동철 890(가이드 911 이미 344,354)
|
||||
- 지문 안 고치면 — 다음 B04 짓기 때 지문 다름 → 옛 행 지우고 새 id → 노선 연결 SET NULL · 스냅샷 모델 id 끊김
|
||||
- 가이드 dtm 행 없음 — 넣을지 선택(B04 목록 DTM 줄 · 확정 무관)
|
||||
|
||||
시각 함정(신선도 = 수정시각 견줌):
|
||||
|
||||
- 굳힌 격자 = implicit · dtm 보다 새것이면 그대로 씀(`common_util_surface_sampler.py:208-210`) · 브라우저 격자 bin = npz 보다 새것이면 그대로(`:170-178`) · 등고선 = 754-1 `contour_cache_is_stale`
|
||||
- 시각 보존 복사(robocopy)로 dtm 만 옮기면 옛 격자 · 옛 bin 이 「새것」으로 남음 → 새 시각으로 차례 복사(dtm → 평활 → 격자 → bin → glb → 등고선)
|
||||
|
||||
## 3 다시 지을 때 영향
|
||||
|
||||
옮겨 심기(같은 행 파일 갈음):
|
||||
|
||||
- 확정 id · 노선 · stage · 스냅샷 그대로 · 재확정 체인 안 돎 · 「목록에만 더함」도 아님(같은 행 파일 바뀜)
|
||||
- 노선 자리 표고 — 가이드 0(implicit 격자 옛 칸 비트 같음 · 횡단 표본 최대 차 0) · 박동철 ≤ 0.0005 m(평활 띠가 노선 22 m 밖) · 엄상준 0(설계 = 수치지형도 · 지형 칩 라이다로 바꿀 때만 최대 0.43 m 6 점)
|
||||
- 지반고 · 계획고 · 깎기쌓기 · 구조물 그대로 — 다시 셈 때도 같은 값
|
||||
- 바뀌는 것 — B04 등고선 · 3D(dtm 도 넓음) · B05/B06 격자 외곽 · B05 노선 탐색 가능 범위 · B07 라이다 파생(지문 바뀜 → 저절로 다시 셈)
|
||||
- 시간 — 파일 곳마다 약 120 MB 복사 수 초 · DB 몇 칸 · Synology 동기화 몇 분 · 검증(B04 등고선 = 3D 외곽 · B05/B06 표본 대조) 곳마다 10~15 분 → 모두 1 시간 안
|
||||
|
||||
화면 길(B04 [서피스 생성] → [확정]):
|
||||
|
||||
- [서피스 생성] = 확정 풀림(`B04_PreProcess_Router.py:110` clear_confirmed) · 지문 다른 행 지우고 새 id(`Repository.py:418-436` · 노선 연결 SET NULL)
|
||||
- [확정] = 재확정 체인 = 초기값 스냅샷 지움(`B03_FileInput_Service_Chain.py:508`) + 다시 셈 — 644 랩탑메인 실측: 계획고 = 지반고 1 → 52 측점 · 깎기 667.7 → 222.7 m² · 쌓기 619.0 → 1,305.6 m² · section_mode 23 측점 바뀜
|
||||
- 엄상준 · 박동철 [초기화] 기준 사라짐 · 곳마다 짓기 1~4 분 + 체인 2~9 분 + 바뀐 설계 값 확인
|
||||
|
||||
## 4 권하는 길
|
||||
|
||||
- **권함** — 검증_랩탑메인 classification(dtm · 평활 · 굳힌 격자 · 미리보기 · 등고선)을 셋에 새 시각으로 옮기고 DB 는 dtm · implicit 행 외곽 면적 · 지문만 고침 · 확정 · 노선 · 체인 안 건드림(644-3 꼴 · 백업 먼저)
|
||||
|
||||
사용자 고를 갈래:
|
||||
|
||||
- 가 — 원본: 검증_랩탑메인 그대로(11-01 짓기 · 같은 설정) 대 tmp 사본에 지금 코드로 하나 새로 지어(약 3 분) 쓰기
|
||||
- 나 — 대상: 셋 다 대 가이드 · 박동철만(엄상준 = 수치지형도 설계 · 라이다는 지형 칩 볼 때만)
|
||||
- 다 — 덧: csf 도 같이 채울지 · 가이드 ptd(dtm_ptd 없음 · 등고선 43 MB 안 잘림 · 원본에 ptd 없음) 는 그대로 둘지 tmp 에서 지어 같이 옮길지
|
||||
@@ -0,0 +1,150 @@
|
||||
# 597-3 지오빅데이터(KIGAM) 오픈API — 조사 · 접속 확인
|
||||
|
||||
조사일 2026-11-03 · 앱 코드 고침 없음 · 키 값은 어디에도 안 적음(주소의 키 자리 = `***`).
|
||||
|
||||
## 0. 결론
|
||||
|
||||
- 키 정상(활용 승인 완료) — WMS 그림 · WMS 점 조회(JSON) · WFS 도형(GeoJSON) · 데이터셋 검색 · 조회 모두 200.
|
||||
- 1:50,000 암상 = 그림(WMS `L_50K_Geology_Map`) · 도형(WFS `geoOpen:l_50k_geology_litho_latest`) 둘 다 받아짐 · EPSG:5179 · 5186 · 3857 · 4326 바로 지원.
|
||||
- 걸림 ① WFS JSON 의 한글 칸 이름 · 값이 「?」로 깨짐(서버 쪽 흠) — 기호(`Kd`) · `symnum` · `mapidx` 만 살아 있음 → 한글 이름은 점 조회(GetFeatureInfo)로 기호마다 한 번.
|
||||
- 걸림 ② 이용 조건 = **CC BY-NC(비영리)** + 약관 「상업적으로 사용할 수 없습니다」 → 판매 프로그램에 넣으려면 KIGAM 과 따로 협의 필요.
|
||||
- 원본 SHP 파일 받기 API = 「전체공개 파일만」 → 5만 도폭 ZIP 은 401(웹 「데이터 요청」 승인 길만).
|
||||
|
||||
## 1. 제공 서비스
|
||||
|
||||
출처 = 오픈API 안내 `https://data.kigam.re.kr/guide/openapi` · 레이어 목록 `…/map/openapimanual/openapiLayerList.html` · 서버 GetCapabilities.
|
||||
|
||||
| 서비스 | 주소 | 꼴 | 안내 문서 |
|
||||
| --- | --- | --- | --- |
|
||||
| 지질주제도 WMS | `GET https://data.kigam.re.kr/openapi/wms?key=…` | PNG 그림 · GetCapabilities · GetLegendGraphic · GetFeatureInfo(JSON) | 있음(GetMap 인자 표만) |
|
||||
| WFS | `GET https://data.kigam.re.kr/openapi/wfs?key=…` | GeoJSON 도형 · 겹 84 종 | 없음 — GetCapabilities 로 찾음 · 같은 키로 됨 |
|
||||
| 데이터셋 검색 | `GET /openapi/data?key=…&q=&page=&size=` | JSON(`response.content[]` · 제목 · 라이선스 · DOI) | 있음 |
|
||||
| 데이터셋 조회 | `GET /openapi/data/{dataset_id}?key=…` | JSON(메타 · 위치 다각형 · 판 이력 `series`) | 있음 |
|
||||
| 파일 받기 | `GET /openapi/file/{file_id}?key=…` | 파일 — 전체공개 파일만 | 있음 |
|
||||
|
||||
지질 관련 겹:
|
||||
|
||||
- WMS — `L_50K_Geology_Map`(5만) · `L_250K_Geology_Map` · `L_1M_Geology_Map` · `l_50k_geology_frame_latest`(5만 도곽) · 탄전지질도 1만 · 2.5만 · `G_tectonic`(지체구조도) · 지구물리 · 지화학 · 해저지질 · 노두 등.
|
||||
- WFS 5만 묶음 — `l_50k_geology_litho_latest`(암상 면) · `_boundary_latest`(지질 경계 선) · `_fault_latest`(단층 선) · `_fold` · `_foldaxis` · `_foliation` · `_bedding` · `_joint` · `_lineation` · `_cleavage` · `_schistosity` · `_alterationzone` · `_metamorphismzone` · `_mine` · `_mineralspring` · `_sample` · `_crosssectionline` · `_frame` (모두 `_latest`) · 제주 `l_jeju_50k_geology_litho_view` · 울릉독도 묶음.
|
||||
- WFS 25만 — `l_250k_geology_litho` · `_fault` · `_boundary` · `_frame` · 100만 — `L_1M_geology_litho` · `L_1M_geology_fault`.
|
||||
|
||||
## 2. 요청 꼴
|
||||
|
||||
공통:
|
||||
|
||||
- 키 자리 = 쿼리 `key=`.
|
||||
- 브라우저 User-Agent 머리 필요 — 없으면 「400 Request Blocked」.
|
||||
- 키 없음 · 틀린 키 = 500 오류 페이지(HTML · 「서비스에 일시적인 오류」).
|
||||
- 서버에서 부르면 Referer 없이도 됨(도메인 묶임 없음).
|
||||
|
||||
WMS GetMap (됨):
|
||||
|
||||
```
|
||||
/openapi/wms?key=***&service=WMS&version=1.1.1&request=GetMap&layers=L_50K_Geology_Map
|
||||
&srs=EPSG:5179&bbox=1140800,1867300,1144900,1871300&width=820&height=800
|
||||
&format=image/png&transparent=true
|
||||
```
|
||||
|
||||
- version 1.0.0 · 1.1.0 · 1.1.1 · 1.3.0(1.3.0 은 `crs`) · 좌표계 6,772 종 — 작업 좌표계로 바로 받음.
|
||||
- 그림 안에 읍면동 경계(초록 선 · 국토지리정보원 2019) · 면 이름 · 주향경사 기호가 함께 그려짐.
|
||||
|
||||
WMS GetFeatureInfo (됨 — 오픈레이어스 꼴 대문자 인자 · `FORMAT` · `STYLES` 까지 다 넣어야 함 · 소문자 최소 인자는 500):
|
||||
|
||||
```
|
||||
/openapi/wms?key=***&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureInfo
|
||||
&LAYERS=L_50K_Geology_Map&QUERY_LAYERS=L_50K_Geology_Map&SRS=EPSG:5179
|
||||
&BBOX=x-5,y-5,x+5,y+5&WIDTH=11&HEIGHT=11&X=5&Y=5
|
||||
&INFO_FORMAT=application/json&FORMAT=image/png&STYLES=
|
||||
```
|
||||
|
||||
- 응답 머리는 `image/png` 로 잘못 붙지만 몸은 GeoJSON — 한글 정상 · 그 점을 덮는 다각형 도형까지 옴.
|
||||
|
||||
WFS GetFeature (됨):
|
||||
|
||||
```
|
||||
/openapi/wfs?key=***&service=WFS&version=1.1.0&request=GetFeature
|
||||
&typeName=geoOpen:l_50k_geology_litho_latest&maxFeatures=200
|
||||
&outputFormat=application/json&srsName=EPSG:5179&bbox=x0,y0,x1,y1,EPSG:5179
|
||||
```
|
||||
|
||||
- 소문자 인자 + `outputFormat=application/json` 만 됨 — GML · CSV · 대문자 인자 · DescribeFeatureType = 500 · 2.0.0 = 빈 결과.
|
||||
- 좌표 순서 x,y 정상(5179 · 4326 둘 다).
|
||||
- 한글 칸 이름 · 값 = 「?」 — `Accept-Charset` · `format_options=charset:` 를 줘도 같음 · 칸 이름이 「??」로 겹쳐 JSON 해석 때 칸이 사라짐.
|
||||
|
||||
## 3. 접속 결과 — 견본 영역
|
||||
|
||||
견본 = storage 검증 프로젝트 `storage/1/3/12953f5a-…` 노선 「대상지_일월.용화.2.2」(경북 영양 일월면 · EPSG:5179 · 2,136 m · 36.81°N 129.10°E).
|
||||
|
||||
| 요청 | 결과 | 견본 파일 |
|
||||
| --- | --- | --- |
|
||||
| WMS GetCapabilities | 200 XML 267 KB · 겹 65 | `wms_capabilities_111.xml` |
|
||||
| WFS GetCapabilities | 200 XML 70 KB · 겹 84 | `wfs_capabilities_110.xml` |
|
||||
| GetMap 5만 · 5179 · 820×800 | 200 PNG 148 KB | `getmap_L_50K_Geology_Map_5179.png` |
|
||||
| GetMap 25만 · 5179 | 200 PNG 112 KB | `getmap_L_250K_Geology_Map_5179.png` |
|
||||
| GetMap 5만 · 3857 | 200 PNG 78 KB | `getmap_L_50K_3857.png` |
|
||||
| GetLegendGraphic 5만 | 200 PNG 223×8,768 · 규칙 번호(L1754 …)뿐 | `legend_L_50K.png` · `_legend_top_crop.png` |
|
||||
| GetFeatureInfo 5만(대문자) | 200 JSON · 한글 정상 | `featureinfo_L_50K_GFI_111.json` · `_130.json` |
|
||||
| GetFeatureInfo 노선 시점 · 중간 · 종점 | 200 ×3 · 모두 Kd | `featureinfo_route_points.json` |
|
||||
| GetFeatureInfo 25만 · 100만 | 200 JSON | `featureinfo_250K_1M_point.json` |
|
||||
| GetFeatureInfo 소문자 | 500 HTML | `err500_sample_GetFeatureInfo_소문자.html` |
|
||||
| WFS 5만 암상 · 경계 · 단층 · 25만 암상 | 200 GeoJSON · 면 14 · 선 40 · 선 1 · 면 4 | `wfs_l_50k_*.geojson` · `wfs_l_250k_geology_litho.geojson` |
|
||||
| WFS 5만 암상 srsName 5179 | 200 GeoJSON | `wfs_l_50k_litho_srs5179.geojson` · `route_wfs_litho_5179.geojson` |
|
||||
| 데이터셋 검색 「수치지질도_5만축척」 | 200 JSON · 354 건 | `data_search_5만.json` |
|
||||
| 데이터셋 조회 도계동 · 25만 전국 | 200 JSON · `bundles` 빈 칸 | `data_view_*.json` |
|
||||
| 파일 받기 도계동 ZIP | 401 | `file_도계동_zip_401.txt` |
|
||||
|
||||
속성 칸:
|
||||
|
||||
| 겹 | 칸(값 견본) |
|
||||
| --- | --- |
|
||||
| 5만 암상 | 시대(현생누대 중생대 백악기) · 도폭(도계동[1963] + 원도 PDF · DOI 고리가 HTML `<a>` 로 섞임) · 지층(낙동층군 동화치층) · 대표암상(알코스사암 역질 사암 셰일 역암) · 기호(Kd) · symnum(251103) · mapname(도계동) · mapidx(IF04) |
|
||||
| 25만 암상 | 지질시대(중생대 백악기) · 도폭(안동) · 설명 · 지층명(경상누층군하양층군동화치층) · 지질기호(Ky2) · 대표암석(퇴적암 — 큰 갈래) |
|
||||
| 100만 암상 | 지질기호(K2) · 지층명 · 지질시대 · 암석명 · 정보 · 영문지층명 · 영문지질시대 |
|
||||
| 5만 단층 · 경계(WFS) | 한글 칸 2~3 개(깨짐) + mapidx — 도형만 쓸 만 |
|
||||
|
||||
노선 따라 시범(임시 스크립트 · 앱 밖):
|
||||
|
||||
- WFS 한 번(0.32 s · 다각형 10) + 기호마다 점 조회 한 번(0.37 s) → 노선 2,135.9 m 전부 Kd(낙동층군 동화치층 · 알코스사암 역질 사암 셰일 역암) — `route_litho_segments.json`.
|
||||
- 그림 대조 — 5만은 PCEgn · PCEpl · PCEp · Kd · Kg 로 잘게 · 25만은 PCEp · Ky2 · Ky3 로 크게.
|
||||
|
||||
## 4. 이용 조건 (원문 줄)
|
||||
|
||||
- 오픈API 안내 「Limited usage」 — 「지나치게 잦은 API의 호출로 서버에 과도한 부하가 발생하여 다른 사용자의 이용에 지장을 줄 경우 이용에 제한이 발생할 수 있으니 서비스의 이용 시 주의를 부탁 드립니다.」 → 숫자 한도 없음.
|
||||
- 오픈API 안내 머리 — 「제공되는 지질자원 데이터셋 정보는 기관 또는 개인이 자유롭게 활용하여, 다양한 컨텐츠를 생산하는데 도움을 주는데 목적을 두고 있으며」
|
||||
- 데이터셋 라이선스(검색 · 조회 API 응답) — 수치지질도 5만 · 25만 모두 `"license": "CC BY-NC"` · `"copyright": "이 데이터의 저작권은 한국지질자원연구원에게 있습니다."`
|
||||
- 이용약관(2022. 1. 1.) 제12조 ③ 「당 사이트 소유의 콘텐츠에 대하여 제3자가 허락 없이 다른 홈페이지에 사용 또는 인용하는 것을 금지합니다.」
|
||||
- 같은 조 ④ 「회원은 서비스를 이용하여 얻은 정보를 가공, 판매하는 행위 등 서비스에 게재된 자료를 상업적으로 사용할 수 없습니다.」
|
||||
- 라이선스 지침(`/manage/data/license`) — Attribution 「Be sure to credit the author and source when copying their work or publishing it elsewhere」 · Noncommercial 「The use of the work for commercial purposes is prohibited」 「For commercial use, a separate agreement is required」 · CC BY-NC 「Must attribute authorship, and source/work can be copied and distributed」 「Not commercially available/can be modified; derivative works created」
|
||||
- 캐시 · 저장 — 안내 · 약관에 따로 없음. CC BY-NC 는 복제 · 변형 허용(비영리 · 출처 표기 조건)이나 약관 ③ 「다른 홈페이지에 사용」 금지와 엇갈림 → KIGAM 확인 대상.
|
||||
- 출처 표기 — 정해진 문구 없음. 후보 「한국지질자원연구원 지오빅데이터 오픈플랫폼 · 수치지질도 1:50,000 〈도폭명〉 (DOI)」(응답 도폭 칸에 DOI 있음).
|
||||
- 판단 — 비영리 · 내부 검토면 출처 표기로 사용 가능. Aislo 를 판매 프로그램으로 쓰면 CC BY-NC · 약관 ④ 에 걸림 → 붙이기 전 KIGAM(지질자원데이터연구실 · 042-868-3111) 상업 이용 협의 또는 사용자 판단 필요.
|
||||
|
||||
## 5. 앱에 붙일 길 (꼴만 · 고치지 않음)
|
||||
|
||||
- 그림 겹 — 산사태위험지도 길(`D03_PlanAnalysis/D03_PlanAnalysis_Landslide.py` — 키 `.env` · 서버가 그림 한 장 받아 PNG data URL 저장 · 상자 덮으면 재사용)과 같은 꼴. 다른 점 = 작업 좌표계로 바로 GetMap(옮겨 그리기 `warp_to_box` 불필요) · 키 이름 `key` · `.env` `GEOBIGDATA_API_KEY` · UA 머리(지금 코드도 붙임).
|
||||
- 도형 겹 — 단층 · 지질구조선 `LINE_KINDS`(`D03_PlanAnalysis_Layers.py:486` · 브이월드 WFS)는 선 전용. 암상은 면이라 산림입지도 꼴(`ensure_soils` · `clip_soils` — 면 + 갈래 요약)이 맞음. 받는 함수만 KIGAM WFS 로 · 한글 깨짐 때문에 기호별 점 조회 한 번씩으로 이름 채움(노선 하나 = 기호 수만큼 · 보통 몇 번).
|
||||
- KIGAM 단층(`l_50k_geology_fault_latest`)은 브이월드 단층(`lt_l_gimsfault`)과 겹침 → 하나로 고를지 협의.
|
||||
- 범례 — KIGAM 범례 그림은 규칙 번호뿐이라 못 씀. 그림 겹 = 범례 대신 「누르면 이름」(점 조회) · 도형 겹 = 우리 색: 25만 「대표암석」(퇴적암 · 화성암 · 변성암 갈래) 또는 5만 「대표암상」 낱말(화강 · 편마 · 사암 …)로 묶어 `--draw-*` 색.
|
||||
- 노선 따라 암상 구간 — 시범대로 노선 ∩ 암상 면 → 측점 구간별 기호 · 대표암상 · 길이 됨. 쓰임 = 타당성평가 「화강암풍화토 지역 통과 20 % 이상」 비율의 후보 값 · 노선 배치 화강풍화지대 표시.
|
||||
- 토공 토사 · 리핑암 · 발파암 판정은 못 함 — 지질도는 암석 종류만(풍화 깊이 · 암반 등급 없음 · 1:50,000 경계 위치 어긋남 수십 m) · 지식DB 도 경계 = 지반조사 판정기준 → 참고 표시 · 기본값 후보까지만(값 확정은 사용자 협의).
|
||||
- 계산 자리 = ③ 서버 단독(브라우저가 KIGAM 을 직접 부르지 않음 · 키 숨김).
|
||||
|
||||
지식DB 근거(이름만):
|
||||
|
||||
- `resources/knowledge/technical_info/01_임도/01_계획노선/타당성평가.md:20` · `:24` · `:44` — 화강암풍화토 통과 비율 10 % · 20 %.
|
||||
- `…/01_계획노선/노선_배치.md:38` · `:50` — 화강풍화지대 · 절토높이 3 m 제한.
|
||||
- `…/03_계산정보/토량계산.md:89` · `:108` — 토사 · 리핑암 · 발파암 구분 · 경계는 지반조사.
|
||||
- `…/02_상세설계/절토_비탈면.md:58` · `…/02_상세설계/구조물/00_구조물_선정기준.md:25` · `:32` — 풍화암 · 연암 기울기 · 화강암풍화토 연약지반.
|
||||
- `resources/knowledge/original/임도기술교본/2. 임도망 편성/3. 임도망의 배치 절차.md:85` · `:234-256` — 노선 계획 자료로 지질도.
|
||||
- 앞 조사 `docs/raw/요구_1025/_분석_440-C_GIS겹_등고선성능.md:59`(10 행) · `:175`.
|
||||
|
||||
## 6. 안 된 것 · 까닭
|
||||
|
||||
- 파일 받기 API — 5만 도계동 ZIP(350 KB) → 401 「OpenAPI 파일 다운로드 API는 전체공개 파일만 제공합니다.」 · 데이터셋 조회의 `bundles` 도 빈 칸 → 원본 SHP 는 웹 「Request data」(요청 → 승인)로만.
|
||||
- WFS — 한글 깨짐 · GML · CSV · 대문자 인자 500(위 2 절).
|
||||
- GetFeatureInfo — 소문자 최소 인자 500(대문자 전체 인자로 됨).
|
||||
- 5만 도폭이 없는 곳(미발간 지역)의 빈칸 여부 — 확인 안 함 · 25만으로 메움 후보.
|
||||
|
||||
## 7. 받은 견본
|
||||
|
||||
`tmp/brain_597/geobig/` — 3 절 표의 파일 · 안내 · 약관 · 라이선스 원문(`guide_openapi.*` · `terms.*` · `license.*`) · 예제 페이지(`*Sample.html` · `*Useage.html` — 안에 박힌 KIGAM 공개 시연 키도 `***` 로 가림) · 레이어 목록 · 도계동 데이터셋 웹 페이지(`_page_도계동.html` — 파일 목록) · 요청 기록(`_요청기록.txt` · 키 가림). 키 값 검색 = 0 건.
|
||||
Reference in New Issue
Block a user