Files
Aislo/0_old/mainPlan.md
T

11 KiB

임도 설계 및 견적 자동화 웹앱 개발 계획서

권장 개발 환경 및 기술 스택

초기 개발은 비용 없는 오픈소스/무료 도구를 우선한다. DWG 직접 보기, 편집, 저장은 상용 SDK 없이 1차 필수 기능으로 잡지 않고, CAD 호환성은 DXF를 기준으로 먼저 확보한다.

영역 권장 기술 선택 사유
Frontend TypeScript + React + Vite 타입 안정성과 개발 속도를 함께 확보하고, 3D/GIS 라이브러리 연동 사례가 많다.
3D/GIS Viewer CesiumJS, 필요 시 Three.js 보조 지형, 좌표, 3D Tiles, GeoJSON 표현은 CesiumJS가 적합하고, 커스텀 3D 편집 UI는 Three.js로 보완할 수 있다.
Backend Python + FastAPI GIS, LAS, 래스터, 수치계산 라이브러리와 연동하기 쉽고 API 서버 구성이 단순하다.
Background Job 초기 단순 작업 큐, 장기적으로 RQ 또는 Celery LAS 분석, 지형 변환, 문서 생성처럼 오래 걸리는 작업을 비동기로 처리하기 위함이다.
Database PostgreSQL + PostGIS 경로, 폴리곤, 횡단선, 토공 구역 같은 공간 데이터를 저장하고 분석하기 좋다.
Geospatial GDAL + PROJ + Rasterio + GeoPandas + Shapely 좌표계, 래스터, 벡터, 공간 연산 처리에 필요한 표준 도구 조합이다.
Point Cloud PDAL + laspy, 필요 시 Open3D PDAL은 대용량 포인트클라우드 처리에, laspy는 Python 기반 LAS 확인과 가벼운 처리에 적합하다.
Path Optimization NumPy + SciPy + NetworkX + 자체 비용함수 임도 설계 제약조건을 반영한 비용 기반 경로 계산을 직접 구성하기 좋다.
3D Output 3D Tiles + terrain tiles + glTF + GeoJSON 브라우저에서 대용량 지형, 구조물, 경로 레이어를 나누어 표시하기 적합하다.
CAD DXF 우선, Python ezdxf 무료 도구로 구현 가능성이 높고 CAD 교환 포맷으로 현실적이다.
DWG LibreDWG 검토 후보 무료/오픈소스만으로는 실무 품질 보장이 어려우므로 직접 지원은 후속 검토로 둔다.
Documents openpyxl/xlsxwriter, HTML-to-PDF 또는 ReportLab Excel 견적서와 PDF 문서를 자동 생성하기 위한 조합이다.
Deployment Docker GDAL, PDAL, PostGIS 등 복잡한 의존성을 고정해 개발/배포 환경 차이를 줄인다.

DWG/DXF 정책

  • 내부 설계 데이터는 DWG에 종속시키지 않고 DB/JSON/공간 데이터 구조로 관리한다.
  • 브라우저에서는 DWG 원본을 직접 렌더링하기보다 설계 데이터를 GeoJSON, SVG, WebGL geometry, DXF 변환 결과로 보여준다.
  • 1차 CAD 출력은 DXF로 제공한다.
  • DWG 파일 출력은 무료 도구 기반 실험 후 가능 여부를 판단한다.
  • 실무에서 DWG가 꼭 필요한 경우, 사용자가 외부 CAD 프로그램에서 DXF를 DWG로 변환하는 절차를 허용한다.

0. 프로젝트 목표

  • 산속 임도 설계 업무를 웹앱에서 수행할 수 있도록 한다.
  • LAS/PRJ/TFW/TIF 기반 지형 데이터를 백엔드에서 분석하고 브라우저에서 3D로 표현한다.
  • 사용자가 지정한 시작점과 종료점을 기준으로 제약조건을 반영한 최적 임도 경로를 계산한다.
  • 경로를 기준으로 종단도와 20m 간격 횡단도를 자동 생성한다.
  • 횡단도를 기준으로 공사 예정 설계를 자동 작성하고, 구조물 라이브러리로 수정할 수 있게 한다.
  • DWG 내보내기/가져오기를 통해 외부 수정 결과를 다시 계산에 반영한다.
  • 확정된 설계를 기준으로 견적서 및 관련 문서를 자동 작성하고 Excel/PDF로 내보낸다.

1. 현재 입력 데이터

  • step1_scan/cloud_merged.las: 포인트 클라우드 원본 데이터 확인
  • step1_scan/result.prj: 좌표계 정보 확인
  • step1_scan/result.tfw: 래스터 위치 정보 확인
  • step1_scan/result.tif: 지형 또는 정사영상/래스터 데이터 확인
  • 각 파일의 좌표계, 단위, 해상도, 기준고, 데이터 범위를 문서화

2. 전체 작업 흐름

  • 1단계: 지형 데이터 수집 및 전처리
  • 2단계: 브라우저용 3D 지형 모델 생성
  • 3단계: 시작점/종료점 지정 및 제약조건 입력
  • 4단계: 최적 임도 경로 계산
  • 5단계: 종단도 및 20m 횡단도 생성
  • 6단계: 예정 설계 자동 작성
  • 7단계: 구조물 라이브러리 기반 설계 수정
  • 8단계: DWG 내보내기 및 수정본 가져오기
  • 9단계: 수량 산출 및 테이블 재계산
  • 10단계: 설계 확정
  • 11단계: 견적서 및 문서 자동 작성
  • 12단계: Excel/PDF 출력

3. 기능 요구사항

3.1 지형 데이터 전처리

  • LAS 파일에서 불필요한 포인트를 분류하거나 제거한다.
  • 토지/지표면 데이터만 남기는 필터링 기준을 정의한다.
  • 필터링된 데이터를 DEM, TIN, mesh, contour 중 어떤 형태로 변환할지 결정한다.
  • 폴리곤 또는 서피스 형태로 변환한다.
  • 브라우저 표시용 LOD, 타일링, 압축, 샘플링 전략을 정한다.
  • 원본 데이터와 최적화 데이터의 품질 차이를 검증한다.

3.2 3D 브라우저 뷰어

  • 3D 지형 데이터를 브라우저에서 표시한다.
  • 확대, 축소, 회전, 이동, 높이 확인 기능을 제공한다.
  • 시작점과 종료점을 지형 위에서 지정할 수 있게 한다.
  • 경로, 횡단선, 구조물, 공사 구간 레이어를 켜고 끌 수 있게 한다.
  • 대용량 데이터에서도 조작 가능한 성능 기준을 정한다.

3.3 최적 경로 계산

  • 시작점과 종료점 입력 방식을 정의한다.
  • 경사도 제한 조건을 정의한다.
  • 최소 곡선반경, 최대 종단경사, 토공량, 거리, 회피구역 등 제약조건 후보를 정리한다.
  • 비용함수 항목과 가중치를 정의한다.
  • 경로 탐색 알고리즘 후보를 검토한다.
  • 계산 결과를 3D 뷰어에 표시한다.
  • 사용자가 경로를 수정할 수 있는지 여부와 수정 방식을 정한다.

3.4 종단도 및 횡단도

  • 최적 경로 기준으로 종단도를 생성한다.
  • 20m 간격 횡단도를 생성한다.
  • 측점 체계, 폭, 절토/성토 기준, 표고 계산 방식을 정의한다.
  • 종단도와 횡단도를 브라우저에서 확인할 수 있게 한다.
  • 사용자가 단면을 선택하고 상세 값을 확인할 수 있게 한다.

3.5 예정 설계 자동 작성

  • 횡단도를 기준으로 공사 예정 단면을 자동 생성한다.
  • 절토, 성토, 노폭, 배수, 사면 기준을 정의한다.
  • 구조물 라이브러리 범위를 정의한다.
  • 구조물을 추가, 삭제, 이동, 수정할 수 있게 한다.
  • 설계 변경 시 수량 테이블이 갱신되도록 한다.

3.6 DWG 연계

  • DWG 내보내기 범위를 정의한다.
  • 내보낸 DWG의 레이어, 블록, 좌표 기준을 정의한다.
  • 사용자가 수정한 DWG를 다시 업로드할 수 있게 한다.
  • DWG 수정 사항을 내부 설계 데이터와 매핑한다.
  • 가져온 수정 결과를 기준으로 수량 테이블을 재계산한다.

3.7 설계 확정 및 문서 출력

  • 설계 확정 전 검토 항목을 정의한다.
  • 설계 확정 후에도 수정 가능한 범위를 정의한다.
  • 견적서 자동 작성에 필요한 단가, 품셈, 수량 산출 기준을 정리한다.
  • Excel 출력 양식을 정의한다.
  • PDF 출력 양식을 정의한다.
  • 산출 문서의 버전 관리 방식을 정한다.

4. 비기능 요구사항

  • 대용량 LAS 데이터를 처리할 수 있는 백엔드 구조를 설계한다.
  • 긴 분석 작업은 비동기 작업 큐로 처리할지 검토한다.
  • 분석 진행률과 오류 상태를 사용자에게 표시한다.
  • 프로젝트별 데이터 저장 구조를 정의한다.
  • 원본 데이터, 중간 산출물, 최종 산출물을 분리 보관한다.
  • 좌표계와 단위 변환 오류를 방지하는 검증 절차를 둔다.
  • 사용자 수정 이력을 저장한다.
  • 설계 계산 결과의 재현성을 확보한다.

5. 기술 검토 항목

  • 백엔드 언어와 프레임워크 결정
  • 포인트 클라우드 처리 라이브러리 검토
  • GIS/좌표계 처리 라이브러리 검토
  • 3D 브라우저 렌더링 기술 검토
  • DWG/DXF 입출력 방식 검토
  • Excel/PDF 문서 생성 방식 검토
  • 데이터베이스와 파일 저장소 구조 검토
  • 작업 큐와 캐시 구조 검토

6. 단계별 산출물

Phase 1. 데이터 분석 프로토타입

  • step1_scan 입력 파일 메타데이터 확인
  • 좌표계와 공간 범위 확인
  • LAS 지표면 필터링 실험
  • DEM 또는 mesh 변환 실험
  • 브라우저 표시용 샘플 데이터 생성

Phase 2. 3D 뷰어 프로토타입

  • 지형 데이터를 브라우저에 표시
  • 기본 카메라 조작 구현
  • 시작점/종료점 선택 UI 구현
  • 경로 레이어 표시 구조 구현

Phase 3. 경로 계산 프로토타입

  • 경사도 기반 비용맵 생성
  • 시작점/종료점 간 1차 경로 탐색
  • 경로 결과를 3D 뷰어에 표시
  • 제약조건 추가 가능성 검토

Phase 4. 종횡단 자동 생성

  • 경로 기준 종단 좌표와 표고 계산
  • 20m 간격 횡단선 생성
  • 단면 데이터 테이블 생성
  • 종단도/횡단도 화면 표시

Phase 5. 설계 및 수량 산출

  • 기본 단면 설계 규칙 정의
  • 절토/성토 수량 계산
  • 구조물 라이브러리 초안 작성
  • 설계 수정 시 수량 재계산

Phase 6. DWG 및 문서 출력

  • DXF/DWG 내보내기 실험
  • 수정본 가져오기 실험
  • 견적서 Excel 양식 생성
  • PDF 출력 양식 생성

7. 미정 사항

  • 법적/실무 설계 기준 자료 확보
  • 임도 설계 기준의 구체 수치 정리
  • 견적 단가 데이터 출처 결정
  • 구조물 라이브러리 범위 결정
  • DWG를 직접 지원할지 DXF 중심으로 지원할지 결정
  • 다중 사용자 협업 기능 필요 여부 결정
  • 웹앱 배포 대상 결정
  • 오프라인 사용 필요 여부 결정

8. 다음 작업

  • step1_scan 파일의 메타데이터를 확인한다.
  • LAS 파일에서 지표면 추출 가능성을 검토한다.
  • 브라우저 표시용 데이터 포맷 후보를 정한다.
  • 최적 경로 계산에 필요한 제약조건 초안을 작성한다.
  • 임도 설계 기준과 견적 산출 기준 자료를 수집한다.