빠른 시작
GeoOmni를 처음 사용하는 분을 위한 가이드입니다.
첫 실행
GeoOmni_QtMdiApp.exe실행- 메인 화면 표시 (대시보드 페이지가 기본)
- 시스템 다크 모드 감지 → 자동 테마 적용
인터페이스 소개
전체 레이아웃
┌───────────────────────────────────────────────────┐
│ 커스텀 타이틀바 (48px) │
│ [로고] [메뉴] [포탈] [이슈] [테마] [시스템 버튼] │
├──────────────┬────────────────────────────────────┤
│ Navigation │ 콘텐츠 영역 (4 페이지) │
│ View │ │
│ │ [0] 대시보드 (지도 + 프로젝트 정보) │
│ • 대시보드 │ [1] MDI 문서 편집기 │
│ • 문서 │ [2] 좌표계 설정 │
│ • 좌표계 │ [3] 전역 설정 │
│ │ │
│ ────── │ │
│ • 설정 │ │
├──────────────┴────────────────────────────────────┤
│ 상태 표시줄 │
└───────────────────────────────────────────────────┘

NavigationView
좌측 패널에서 페이지를 전환합니다. WinUI 3 스타일의 펼침(200px)/접힘(48px) 애니메이션을 지원합니다.
| 항목 | 페이지 | 설명 |
|---|---|---|
| 대시보드 | Dashboard | 프로젝트 요약, 타일 지도 |
| 문서 | Documents | MDI 다중 문서 편집기 |
| 좌표계 | Coordinate | EPSG 좌표계 설정 |
| 설정 | Settings | 전역 설정 (20개 카드) |
메뉴바
상단 타이틀바의 메뉴에서 주요 기능에 접근합니다:
| 메뉴 | 주요 기능 |
|---|---|
| 파일 | 새로 만들기, 열기, 저장, 다른 이름으로 저장 |
| 편집 | 실행 취소, 잘라내기, 복사, 붙여넣기, 모두 선택 |
| 창 | 타일 배열, 종렬 배열, 모두 닫기 |
| 보기 | 테마 전환 |
타이틀바 버튼
| 버튼 | 기능 | 조건 |
|---|---|---|
| 포탈 | 협업 포탈 웹 열기 | 항상 활성 |
| 이슈 보고 | 포탈 이슈 작성 페이지 열기 | 로그인 시만 활성 |
| 테마 | 다크/라이트 모드 전환 | 항상 활성 |
앱 사용 흐름
1단계: 대시보드 확인
앱 실행 시 대시보드 페이지가 표시됩니다.
- 프로젝트 요약 카드: 카메라/GCP/이미지/모델 수
- 프로젝트 상세 테이블: 이름, 카메라, GCP, 이미지, IO, 모델, RO, AO 정보
- 타일 지도: TMS 기반 지도 (OSM 기본, 줌/팬 가능)
2단계: 좌표계 설정
NavigationView에서 좌표계 선택:
- Local: 로컬 좌표계
- EPSG: EPSG 데이터베이스에서 코드 선택 (예: 5186 = 한국 중부원점)
- 지역 필터: Korea / Global / UTM
- 우측 상세 패널: 투영 타입, 데이텀, 타원체, 범위 등
3단계: 문서 편집
NavigationView에서 문서 선택:
Ctrl + N: 새 문서 생성Ctrl + O: 기존 문서 열기Ctrl + S: 저장
MDI(Multiple Document Interface)로 여러 문서를 동시에 편집합니다.
4단계: 설정 조정
NavigationView에서 설정 선택:
- 테마/외관: 다크/라이트, 폰트
- 지도: TMS 프리셋 (7종), API 키
- 고급: MCP 서버 포트, 로깅, 성능
- 계정: 포탈 로그인 (Google OAuth)
기본 조작
주요 단축키
| 단축키 | 기능 |
|---|---|
Ctrl + N |
새 문서 |
Ctrl + O |
열기 |
Ctrl + S |
저장 |
Ctrl + Z |
실행 취소 |
Ctrl + X |
잘라내기 |
Ctrl + C |
복사 |
Ctrl + V |
붙여넣기 |
Ctrl + A |
모두 선택 |
MCP 에이전트 연동
TCP 소켓(포트 9234)으로 LLM 에이전트가 앱을 원격 제어할 수 있습니다.
import socket, json
sock = socket.create_connection(("localhost", 9234))
req = {"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {"name": "nav.selectPage", "arguments": {"page": "dashboard"}}}
sock.sendall((json.dumps(req) + "\n").encode())
resp = sock.recv(65536).decode()
print(json.loads(resp))
자세한 내용: MCP 명령 레퍼런스