개요
GeoOmni는 항공사진측량 디지털 도화 시스템의 데스크톱 클라이언트입니다. 이미지 등록부터 내부·상호·절대표정까지의 표정 파이프라인과, Vulkan GPU 가속 뷰어, MCP 에이전트 자동화를 제공합니다.
앱 구조
MainWindow (DWM Mica 배경)
├── CustomTitleBar (48px)
│ ├── 로고 + 앱 이름 / QMenuBar
│ ├── 포탈 · 이슈 보고 버튼
│ └── 테마 전환 · 시스템 버튼
├── NavigationView (좌측, 펼침 200px / 접힘 48px)
│ ├── 대시보드
│ ├── 좌표계
│ ├── 카메라
│ ├── GCP
│ ├── 이미지
│ ├── 모델
│ ├── 표정 ──┬── 내부표정
│ │ ├── 상호표정
│ │ └── 절대표정
│ └── 설정 (하단)
├── QStackedWidget (우측)
│ ├── 대시보드 / MDI / 좌표계 / 설정
│ ├── 카메라 / GCP / 이미지 관리
│ ├── 단일 뷰어 · 다중 뷰어
│ └── 내부표정 · 모델 워크스페이스 · 모델 목록 · 표정 개요
└── StatusBar (하단 — 엔진 모드 · 좌표 · 줌 · FPS)
상호표정과 절대표정은 같은 워크스페이스를 씁니다
두 작업은 좌/우 뷰포트·측정·에피폴라 정렬·줌 동기화를 그대로 공유하고 작업 모드만 전환됩니다. 관측 흐름이 끊기지 않도록 한 설계입니다.
표준 작업 흐름
각 단계의 진행 상태는 표정 개요에서 한눈에 확인합니다.
기능 개요
대시보드
프로젝트 상태를 한눈에 파악하는 시작 페이지입니다.
- 요약 카드 4개: 카메라 수, GCP 수, 이미지 수, 모델 수
- 프로젝트 상세 테이블: 이름, 카메라, GCP, 이미지, IO, 모델, RO, AO
- TMS 타일 지도: 줌/팬, 7개 프리셋, 역지오코딩 (VWorld API)
자세한 내용: 대시보드
표정 파이프라인
| 단계 | 문서 |
|---|---|
| 이미지 등록 · 카메라 지정 · 피라미드 | 이미지 관리 |
| 지표 관측 / 센서 기하 자동 | 내부표정 |
| 좌/우 쌍 생성 | 모델 관리 |
| 타이포인트 · 공면조건 솔브 | 상호표정 |
| GCP 관측 · 7-파라미터 | 절대표정 |
| 진행 상태 조망 | 표정 개요 |
뷰어
- 단일 뷰어 — Vulkan GPU 가속, 무손실 경로 우선, 서브픽셀 관측
- 멀티뷰 — 여러 이미지 동시 표시, 레이아웃 프리셋, 줌·팬 동기화
기준 데이터
- 카메라: 34개 내장 프리셋, 내부표정 요소 · 센서 연동 — 카메라 관리
- GCP: 가져오기/내보내기, 타입 분류 — GCP 관리
- 좌표계: EPSG 데이터베이스 기반 — 좌표계 설정
MDI 문서 편집기
QMdiArea 기반 다중 문서 인터페이스입니다.
- 새로 만들기 / 열기 / 저장 / 다른 이름으로 저장
- 타일 배열 / 종렬 배열 / 모두 닫기
자세한 내용: MDI 편집기
전역 설정
20개 설정 카드로 앱을 세밀하게 조정합니다.
- 일반: 언어, 시작 동작
- 테마/외관: 다크/라이트, 폰트
- 지도: TMS 프리셋 (7종), API 키 (VWorld/Stamen)
- 고급: 로깅, 성능, 서버 포트
- 좌표계: EPSG 데이터, 필터
- MCP 서버: 포트, 클라이언트 수, 활성화
- 계정: 포탈 로그인 (Google OAuth)
자세한 내용: 전역 설정
협업 포탈 연동
타이틀바 버튼으로 협업 포탈에 접속합니다.
- 포탈 버튼: 협업 포탈 웹 페이지 열기
- 이슈 보고 버튼: 이슈 작성 페이지 열기 (로그인 시만 활성)
- 설정 > 계정 페이지에서 Google OAuth 로그인
자세한 내용: 협업 포탈
MCP 에이전트 연동
TCP 소켓(포트 9234) + JSON-RPC 2.0 프로토콜로 LLM 에이전트가 앱을 원격 제어합니다. 약 290개 MCP 명령으로 페이지 전환, 위젯 조작, 표정 계산, 관측 입력까지 자동화가 가능합니다.
| 카테고리 | 주요 명령 |
|---|---|
| 시스템 | ping, system.getVersion, system.listCommands |
| UI 위젯 | ui.findWidget, ui.clickWidget, ui.captureWindow |
| 마우스 · 키보드 | mouse.click, mouse.drag, keyboard.sendKey |
| 네비게이션 | nav.select, nav.getState |
| 앱 설정 | app.setTheme, app.setEpsgCode |
| 표정 · 관측 | model.*, io.*, at.* (도메인 개관 참조) |
명령 수는 계속 늘어나므로 전체 목록은 system.listCommands 로 조회합니다.
자세한 내용: MCP 명령 레퍼런스
WinUI 3 스타일 UI
GeoOmni는 Qt 6 위에 WinUI 3의 디자인 언어를 구현합니다:
| 요소 | 구현 |
|---|---|
| Mica 배경 | DWM API DwmSetWindowAttribute |
| NavigationView | 커스텀 QWidget (펼침/접힘 애니메이션) |
| 다크/라이트 모드 | 런타임 전환 + Windows 시스템 감지 |
| 커스텀 타이틀바 | 48px 높이, 드래그 영역, 시스템 버튼 |
| 둥근 모서리 | CSS border-radius, QPainterPath |
| Acrylic 효과 | 반투명 배경 (NavigationView) |