3단계 · GDAL 레시피
웹 형태 변환
브라우저가 바로 읽는 포맷으로 변환. 뷰어별 처리 방식.
방식·도구 고르기
통째 파일이 무거울 때: ① 타일로 굽기(파일) → 화면 범위 조각만 받음. ② 그래도 브라우저 그리기 부담 → WMS(서버)로 서버가 그림까지. 갱신·조회·연동이 필요하면 크기와 상관없이 서버.
정사영상·래스터 · 데이터 상태별 (크기 기준은 어림)
| 데이터 상태 | 방식 | 고르는 이유 · 형태 |
|---|---|---|
| 단일 영상 수 MB (jpg·png·webp + 월드파일) | 파일 | 그림 한 장 + 네 모서리 좌표. 타일 불필요. |
| 수십 MB~GB 영상 | 파일 | COG: Range 요청으로 필요한 블록·해상도만. OpenLayers 직접, 그 외 뷰어는 XYZ 타일. |
| 모든 뷰어 공통 · CDN 배포 | 파일 | XYZ 타일 굽기: z/x/y PNG. 줌 1단계마다 타일 수 4배. |
| 여러 장 모자이크 · 주기 갱신 · 색 바꾸기 | 서버 | GeoServer WMS·WMTS: 원본 COG를 두고 요청 때 잘라 그림. 색 지도(SLD)는 서버에서. |
카드 안 도구 선택 → 아래 단계·결과 전환. ?: 고르는 기준·장단점.
파일 방식
맞는 경우
- 갱신 드문 데이터 (연 1회 공개 등)
- 서버 운영 없는 배포: 정적 호스팅·CDN
- 미리 구운 타일 → 요청마다 연산 없음, 동시 접속에 강함
한계
- 원본이 바뀌면 다시 굽기
- 속성 조건 조회 불가 → 받은 범위 안 클라이언트 필터만
- 타일 수만~수백만 개 → 올리기·저장 부담 (PMTiles 한 파일로 완화)
결과를 파일로 구워 정적 호스팅. 브라우저가 파일을 직접 읽음.
도구
GDAL · 장점
- COG: 파일 하나 + Range 요청
- XYZ 타일: 모든 뷰어 공통
- 재투영·압축·오버뷰를 명령 한 줄로
단점
- COG 직접 표시는 OpenLayers만
- XYZ 타일은 줌마다 4배 증가
서버 방식
맞는 경우
- 자주 바뀌는 데이터: DB 수정 즉시 반영
- 속성 조건 조회: WFS (CQL_FILTER)
- WMS·WFS 표준 요구: GIS 소프트웨어·타 기관 시스템 연동
- 저사양 단말: WMS는 서버가 그림까지 → 브라우저는 이미지만
- 접근 권한·사용량 관리
한계
- 서버 상시 운영: 메모리·DB·보안 패치
- 요청마다 연산 → 타일 캐시(GeoWebCache 등) 없으면 동시 접속에 약함
- 구성 요소 증가: DB + 서버 + 프록시
떠 있는 서버에 발행. 요청마다 서버가 응답 생성.
도구
GeoServer · 장점
- 원본 COG 그대로 → 타일 굽기 없음
- SLD ColorMap으로 색을 서버에서
- WMS·WMTS로 모든 뷰어
단점
- 서버 상시 운영
- 요청마다 연산 → 타일 캐시 필요
GDAL 요약 파일 방식
- 걸린 시간
- -
- 결과 용량
- -
- 파일 수
- -
- 그릴 수 있는 뷰어
- 4 / 4
변환 단계
1웹 메르카토르 COG 재작성GDAL/OGR C++, MIT, v3.13.3공간데이터 변환 표준 엔진. 래스터(GDAL)·벡터(OGR) 수백 가지 포맷.자세히 보기
gdalwarp -t_srs EPSG:3857 -r bilinear -dstalpha -of COG -co TILING_SCHEME=GoogleMapsCompatible -co COMPRESS=WEBP -co QUALITY=85 /raw/seoul_s2_tci.tif /out/seoul_3857.tif-t_srs 좌표계 (EPSG) 지구 위 위치를 숫자로 적는 약속. EPSG:4326: 위경도, EPSG:3857: 웹 지도 미터 좌표, EPSG:5186: 국내 중부원점. 자세히 + TILING_SCHEME=GoogleMapsCompatible: 블록 = 웹 타일 경계 → OpenLayers 재투영 없이 표시. COMPRESS=WEBP: 용량 축소. -dstalpha: 영상 밖 투명. 원본이 COG 웹 부분 읽기용 블록·축소본을 넣은 GeoTIFF. 확장자는 그대로 .tif. 자세히여도 격자·압축이 달라 재작성.
2XYZ 타일 굽기GDAL/OGR C++, MIT, v3.13.3공간데이터 변환 표준 엔진. 래스터(GDAL)·벡터(OGR) 수백 가지 포맷.자세히 보기
gdal raster tile --min-zoom 10 --max-zoom 14 -f WEBP --co QUALITY=80 --webviewer none /out/seoul_3857.tif /out/tiles--min-zoom 10 --max-zoom 14: COG 웹 부분 읽기용 블록·축소본을 넣은 GeoTIFF. 확장자는 그대로 .tif. 자세히 미지원 뷰어용 256px 타일. -f WEBP: 투명 가장자리 유지, 작은 용량.
결과물
COG (EPSG:3857)COG원본과 같은 형식
원본도 COG 웹 부분 읽기용 블록·축소본을 넣은 GeoTIFF. 확장자는 그대로 .tif. 자세히 — UTM 52N → 좌표계 (EPSG) 지구 위 위치를 숫자로 적는 약속. EPSG:4326: 위경도, EPSG:3857: 웹 지도 미터 좌표, EPSG:5186: 국내 중부원점. 자세히 격자, DEFLATE → WebP 압축으로 재작성. 파일 하나, Range 요청 파일 일부만("100~200바이트") 받는 HTTP 요청. COG·PMTiles는 이것으로 서버 없이 필요한 조각만 읽기. 자세히으로 보이는 블록만 수신.
XYZ 타일XYZ 래스터 타일
미리 자른 이미지 수백 장. 모든 지도 라이브러리 지원.
뷰어별 처리 · GDAL
OpenLayers 2D미검증
- 결과물
- COG (EPSG:3857) (seoul_3857.tif)
- 처리
WebGLTileLayer + GeoTIFF 소스 — 블록 Range 요청- 메모
- COG 직접 읽기 — 타일 굽기 불필요.
MapLibre 2.5D미검증
- 결과물
- XYZ 타일 (tiles/{z}/{x}/{y}.webp)
- 처리
raster 소스
MapLibre + Deck.gl 3D미검증
- 결과물
- XYZ 타일 (tiles/{z}/{x}/{y}.webp)
- 처리
TileLayer + BitmapLayer
CesiumJS 3D미검증
- 결과물
- XYZ 타일 (tiles/{z}/{x}/{y}.webp)
- 처리
UrlTemplateImageryProvider
직접 처리: 원본과 같은 형식을 그대로 읽음. 변환 후 처리: 바꾼 결과물을 읽음. 일부 기능만: 그리지만 빠지는 기능 있음(카드의 주의). 미검증: 성공한 실행 기록 없음.