COG 웹 가시화
COG 웹 가시화는 Cloud Optimized GeoTIFF(COG)를 웹 브라우저가 필요한 공간 범위와 해상도부터 부분적으로 읽어 지도 위에 표시하는 방식이다. 이 문서는 공개 프로젝트 conaonda/COGnito를 구체적인 구현 사례로 삼는다.
개요
COG는 내부 타일, 해상도별 오버뷰, 파일 안의 데이터 위치를 알려 주는 구조를 이용해 HTTP 범위 요청에 적합하도록 구성한 GeoTIFF이다. 서버가 바이트 범위 요청을 허용하면 브라우저는 거대한 파일 전체를 먼저 내려받지 않고 현재 화면에 필요한 블록을 요청할 수 있다. 따라서 위성·항공·드론 영상처럼 지리 좌표와 여러 밴드를 가진 대용량 래스터를 별도의 전용 타일 서버 없이 탐색하는 데 유용하다.
COGnito의 공개 README는 임의의 COG URL을 입력해 OpenLayers 지도에서 직접 시각화하는 웹 응용프로그램이라고 설명한다. 2026년 8월 16일 확인한 공개 package.json의 버전은 1.33.0이며 OpenLayers 10.8 계열, Vite 6 계열, ol-mapbox-style, 프로젝트의 COG 레이어 패키지를 사용한다. 저장소는 공개 상태이고 보관 처리되지 않았으며, GitHub Pages 라이브 데모도 제공한다.
프로젝트는 일반적인 북쪽 정렬 영상뿐 아니라 회전된 SAR 영상과 같은 비축 정렬 GeoTIFF를 다루기 위해 Affine 좌표 매핑과 재투영 모드를 구분한다. WebGLTile 기반 타일 렌더링과 뷰포트 단위 이미지 렌더링을 선택할 수 있고, 배경지도에는 VersaTiles 벡터 타일 스타일을 사용한다고 README에 명시되어 있다.
핵심 구조/작동 방식
사용자는 헤더 입력창 또는 url 쿼리 매개변수로 COG 주소를 전달한다. 응용프로그램은 GeoTIFF 메타데이터에서 좌표계, 영상 범위, 밴드 구성을 읽고 RGB 또는 단일 밴드를 고른다. OpenLayers의 GeoTIFFSource는 여러 입력 밴드를 데이터 타일의 출력 밴드로 매핑할 수 있으며, 원시 화소값을 스타일 식에서 쓰려면 normalize: false로 설정한다. COGnito README의 예제는 전체 파일 다운로드를 피하도록 소스 옵션을 구성한다.
렌더링 경로는 네 가지 조합으로 이해할 수 있다.
mode=affine은 GeoTIFF의 Affine 변환을 이용해 픽셀 좌표를 지도 좌표에 배치한다. 좌표계가 같거나 유사하고 회전·전단을 정확히 반영해야 할 때 기본 경로로 사용한다.mode=reproject는 proj4 기반 좌표 변환을 이용한다. 원본 영상과 지도 뷰의 좌표계가 다를 때 더 일반적인 변환이 필요하다.render=tile은 OpenLayers WebGLTile 레이어로 현재 확대 수준에 필요한 타일을 가져와 GPU 스타일링을 수행한다.tileSize로 Affine 타일 경로의 스케일업 크기를 조정할 수 있다.render=image는 현재 뷰포트 전체를 하나의 이미지 단위로 구성한다. 타일 경계나 요청 수와 관련된 비교 실험에 사용할 수 있다.
공개 리프로젝션 분석 문서는 좌표계가 다른 경우의 내부 비용도 설명한다. CPU가 proj4 좌표 변환으로 삼각형 메시를 만들고, GPU가 텍스처를 워프한 뒤 gl.readPixels()로 결과를 CPU 메모리에 되돌리는 단계가 생길 수 있다. 이후 WebGLTile 레이어가 밴드 스타일을 적용한다. 즉 “WebGL 사용”만으로 모든 단계가 GPU 안에서 끝난다고 단정할 수 없으며, 좌표계·타일 수·GPU 리드백을 함께 측정해야 한다.
지도는 마우스와 터치의 확대·이동·회전을 제공하고, 커서 위치의 원 좌표와 WGS84 경위도를 표시하며, 로드가 끝나면 영상 범위에 맞춘다. 공개 테스트 디렉터리는 페이지 로드, 팬, 줌, 타일 수와 SAR 사례를 Playwright로 측정하고, GitHub Actions 배포 과정에 테스트 게이트를 연결한다.
활용
COG 웹 가시화는 재난 영상 공유, 원격탐사 품질 확인, 농업·환경 모니터링, SAR·광학 영상 검수, 데이터 카탈로그 미리보기에 활용할 수 있다. Qt 도킹 UI 기반 데스크톱 분석기의 경량 웹 동반 화면으로 쓰거나, 영상 정합 전후를 빠르게 확인하는 도구로 구성할 수도 있다. Detector-Free 로컬 특징 정합이나 Quality-Aware 템플릿 매칭의 입력·결과를 지리 좌표와 함께 비교할 때에는 분석 알고리즘과 뷰어를 분리하고 결과 레이어만 전달하는 구조가 적절하다.
두 렌더링 경로와 좌표 변환 모드는 성능 실험에도 유용하다. 동일한 COG와 뷰 이동 시나리오에서 프레임 시간, 요청 수, 다운로드 바이트, 메모리, 타일 캐시, GPU 리드백을 측정하면 특정 데이터에 맞는 배포 방식을 선택할 수 있다.
한계 및 주의점
원격 COG 서버는 HTTP Range 요청과 브라우저의 CORS 정책을 올바르게 지원해야 한다. 압축 방식, 내부 타일과 오버뷰가 부적절하면 COG 확장자를 사용해도 요청량과 디코딩 비용이 커질 수 있다. 인증이 필요한 URL은 브라우저에 자격 증명을 노출하지 않는 전달 방식을 설계해야 하며, 사용자가 입력한 주소를 서버가 대신 요청하도록 확장할 경우에는 SSRF 방어와 허용 목록이 필요하다.
Affine 배치는 모든 좌표계 변환을 대체하지 않는다. 서로 다른 지리 좌표계, 비선형 왜곡, RPC 센서 모델에는 적절한 재투영이나 사전 정사보정이 필요하다. nodata, 밴드 순서, 스케일·오프셋, 색 공간과 통계값을 잘못 해석하면 화면은 그럴듯해도 과학적으로 틀린 결과가 된다. 위치·방사 정확도는 원본 메타데이터와 기준점으로 별도 검증해야 한다.
2026년 8월 16일 확인 시 저장소 루트에서 라이선스 파일을 찾을 수 없었고 README에도 코드 라이선스가 명시되어 있지 않았다. 공개 열람 가능성과 재사용 허가는 같은 뜻이 아니므로 복제, 배포, 상용 통합 전에는 소유자에게 라이선스를 확인해야 한다. 또한 README와 package.json의 의존성 표기가 항상 동시에 갱신된다고 가정하지 말고 잠금 파일과 실제 빌드 결과를 기준으로 호환성을 점검한다.
함께 보기
출처
- COGnito 공개 저장소 및 README — 기능, 모드, 테스트, 라이브 데모. 2026년 8월 16일 확인.
- COGnito 공개 package.json — 버전, 명령, 공개 의존성. 2026년 8월 16일 확인.
- COGnito 리프로젝션 분석 — CPU·GPU 처리 경로와 대응 방안. 2026년 8월 16일 확인.
- OpenLayers GeoTIFFSource 공식 API — 밴드, 투영, 정규화, 재표본화 옵션. 2026년 8월 16일 확인.
- Cloud Optimized GeoTIFF 공식 안내 — COG 형식과 생태계. 2026년 8월 16일 확인.