개요
GeoOmni는 사진측량 및 매핑 통합 솔루션의 데스크톱 클라이언트입니다. WinUI 3 스타일의 현대적 인터페이스에서 프로젝트 관리, EPSG 좌표계 설정, 타일 지도 대시보드, MCP 에이전트 자동화를 제공합니다.
앱 아키텍처
MainWindow (DWM Mica 배경)
├── CustomTitleBar (48px)
│ ├── 로고 + 앱 이름
│ ├── QMenuBar (파일/편집/창/보기)
│ ├── 포탈 버튼
│ ├── 이슈 보고 버튼 (로그인 시 활성화)
│ ├── 테마 전환 버튼
│ └── 시스템 버튼 (최소화/최대화/닫기)
├── NavigationView (좌측, 펼침 200px / 접힘 48px)
│ ├── 대시보드
│ ├── 문서
│ ├── 좌표계
│ └── 설정
├── QStackedWidget (우측, 4페이지)
│ ├── [0] DashboardPage (프로젝트 정보 + 타일 지도)
│ ├── [1] QMdiArea (다중 문서 편집기)
│ ├── [2] CoordinatePage (EPSG 좌표계)
│ └── [3] SettingsPage (20개 설정 카드)
└── StatusBar (하단)

기능 개요
대시보드
프로젝트 상태를 한눈에 파악하는 시작 페이지입니다.
- 요약 카드 4개: 카메라 수, GCP 수, 이미지 수, 모델 수
- 프로젝트 상세 테이블: 이름, 카메라, GCP, 이미지, IO, 모델, RO, AO
- TMS 타일 지도: 줌/팬, 7개 프리셋, 역지오코딩 (VWorld API)
자세한 내용: 대시보드
좌표계 설정
EPSG 데이터베이스 기반 좌표계를 설정합니다.
- Local / EPSG 라디오 선택
- 지역 필터 (Korea / Global / UTM)
- EPSG 상세 정보: 투영 타입, 데이텀, 타원체, 원점, 축척 계수, 범위
자세한 내용: 좌표계 설정
MDI 문서 편집기
QMdiArea 기반 다중 문서 인터페이스입니다.
- 새로 만들기 / 열기 / 저장 / 다른 이름으로 저장
- 타일 배열 / 종렬 배열 / 모두 닫기
- 텍스트 편집 기본 기능 (실행 취소, 잘라내기, 복사, 붙여넣기)
자세한 내용: MDI 편집기
전역 설정
20개 설정 카드로 앱을 세밀하게 조정합니다.
- 일반: 언어, 시작 동작
- 테마/외관: 다크/라이트, 폰트
- 지도: TMS 프리셋 (7종), API 키 (VWorld/Stamen)
- 고급: 로깅, 성능, 서버 포트
- 좌표계: EPSG 데이터, 필터
- MCP 서버: 포트, 클라이언트 수, 활성화
- 계정: 포탈 로그인 (Google OAuth)
자세한 내용: 전역 설정
협업 포탈 연동
타이틀바 버튼으로 협업 포탈에 접속합니다.
- 포탈 버튼: 협업 포탈 웹 페이지 열기
- 이슈 보고 버튼: 이슈 작성 페이지 열기 (로그인 시만 활성)
- 설정 > 계정 페이지에서 Google OAuth 로그인
자세한 내용: 협업 포탈
MCP 에이전트 연동
TCP 소켓(포트 9234) + JSON-RPC 2.0 프로토콜로 LLM 에이전트가 앱을 원격 제어합니다. 20개 MCP 명령으로 페이지 전환, 위젯 조작, 테마 변경, 좌표계 설정 등 자동화가 가능합니다.
| 카테고리 | 명령 수 | 주요 명령 |
|---|---|---|
| 시스템 | 3 | ping, system.getVersion, system.listCommands |
| UI 위젯 | 6 | ui.findWidget, ui.clickWidget, ui.captureWindow |
| 마우스 | 3 | mouse.getPosition, mouse.move, mouse.click |
| 키보드 | 2 | keyboard.type, keyboard.sendKey |
| 네비게이션 | 2 | nav.selectPage, nav.getCurrentPage |
| 앱 설정 | 4 | app.setTheme, app.setEpsgCode |
자세한 내용: MCP 명령 레퍼런스
WinUI 3 스타일 UI
GeoOmni는 Qt 6 위에 WinUI 3의 디자인 언어를 구현합니다:
| 요소 | 구현 |
|---|---|
| Mica 배경 | DWM API DwmSetWindowAttribute |
| NavigationView | 커스텀 QWidget (펼침/접힘 애니메이션) |
| 다크/라이트 모드 | 런타임 전환 + Windows 시스템 감지 |
| 커스텀 타이틀바 | 48px 높이, 드래그 영역, 시스템 버튼 |
| 둥근 모서리 | CSS border-radius, QPainterPath |
| Acrylic 효과 | 반투명 배경 (NavigationView) |