最后活跃于 1773703874

분할TIF를 TMS로 변환.md 原始文件

1. 가상 VRT 생성

gdalbuildvrt "C:\ujsky\source_all.vrt" "D:\uj_2026\*.tif"

2. 좌표변환

gdalwarp -s_srs EPSG:5187 -t_srs EPSG:3857 -of VRT ^
"C:\ujsky\source_all.vrt" "C:\ujsky\merged_3857.vrt"

3. TMS 변환

gdal2tiles ^
    --zoom=16-20 ^
    --processes=14 ^
    -w openlayers ^
    --tmscompatible ^
    --tiledriver=JPEG ^
    --config GDAL_CACHEMAX 8192 ^
    "C:\ujsky\merged_3857.vrt" "C:\ujsky\UJ_2026"
항공영상TIF를 TMS로변환 가이드.md 原始文件

항공영상 TIF → TMS 타일 변환 가이드

대용량 항공영상(약 1TB GeoTIFF)을 OpenLayers에서 사용할 TMS 타일로 변환하는 절차를 정리한다.

본 가이드는 GDAL 기반 처리를 기준으로 작성되었으며 다음 환경을 기준으로 한다.

  • GDAL (OSGeo4W)
  • OpenLayers 3.x
  • 좌표계: EPSG:5187 → EPSG:3857
  • 타일 포맷: JPEG
  • 타일 레벨: 16 ~ 20

전체 작업 흐름

원본 TIFF
   │
   ├─ 1. tif 정보 확인
   │
   ├─ 2. JPEG 압축 GeoTIFF 생성 (용량 최적화)
   │
   ├─ 3. 좌표계 변환 (5187 → 3857)
   │
   └─ 4. TMS 타일 생성

1. TIFF 정보 확인

먼저 원본 TIFF의 메타데이터를 확인한다.

gdalinfo "E:\UJ_2025_10.tif"

확인해야 할 주요 정보

항목 확인 이유
Coordinate System 좌표변환 필요 여부 확인
Pixel Size 영상 해상도 확인
Band Count RGB인지 확인
Image Size 처리시간 예측
Compression 이미 압축된 파일인지 확인

주의사항

대용량 TIFF의 경우 아래 정보가 중요하다.

  • Band 수 RGB 영상이라면 보통 3 bands

  • Block Size 타일 생성 시 성능과 관련됨

  • BigTIFF 여부 4GB 이상 파일은 BigTIFF 필요


2. 원본 TIFF 압축 저장 (JPEG 압축)

외장하드의 대용량 TIFF를 로컬 SSD로 이동하면서 JPEG 압축 GeoTIFF 생성.

gdal_translate -of GTiff ^
    -b 1 -b 2 -b 3 ^
    -co COMPRESS=JPEG ^
    -co JPEG_QUALITY=70 ^
    -co PHOTOMETRIC=YCBCR ^
    -co TILED=YES ^
    -co BLOCKXSIZE=512 ^
    -co BLOCKYSIZE=512 ^
    -co BIGTIFF=YES ^
    -co NUM_THREADS=ALL_CPUS ^
    --config GDAL_CACHEMAX 8192 ^
    E:\UJ_2025_10.tif D:\tiffs\UJ_2025_10_extreme.tif

옵션 설명

옵션 설명
-of GTiff 출력 포맷 GeoTIFF
-b 1 -b 2 -b 3 RGB 밴드 선택
COMPRESS=JPEG JPEG 압축 사용
JPEG_QUALITY=70 압축 품질 (50~80 권장)
PHOTOMETRIC=YCBCR JPEG 압축 효율 증가
TILED=YES 타일 구조 TIFF 생성
BLOCKXSIZE=512 타일 크기
BLOCKYSIZE=512 타일 크기
BIGTIFF=YES 4GB 이상 파일 지원
NUM_THREADS=ALL_CPUS CPU 멀티코어 사용
GDAL_CACHEMAX 메모리 캐시 (MB)

성능 팁

JPEG_QUALITY

용도
90 고품질
70 일반 항공영상
50 최대 압축

항공영상 배경지도 용도라면

70 추천


BLOCK SIZE

512x512 추천 이유

  • GDAL 내부 처리 효율
  • 타일 생성 속도 개선
  • 디스크 IO 감소

GDAL_CACHEMAX

메모리 캐시 설정

예시

--config GDAL_CACHEMAX 8192

의미

8GB 메모리 사용

3. 좌표변환 (EPSG:5187 → EPSG:3857)

OpenLayers에서 사용하려면 Web Mercator(3857) 좌표계로 변환한다.

gdalwarp -s_srs EPSG:5187 -t_srs EPSG:3857 ^
    -r bilinear ^
    -of GTiff ^
    -co COMPRESS=JPEG -co JPEG_QUALITY=70 -co PHOTOMETRIC=YCBCR ^
    -co TILED=YES -co BLOCKXSIZE=512 -co BLOCKYSIZE=512 ^
    -co BIGTIFF=YES ^
    -wm 8192 ^
    --config GDAL_NUM_THREADS ALL_CPUS ^
    D:\tiffs\UJ_2025_10_extreme.tif D:\tiffs\UJ_2025_10_3857_final.tif

옵션 설명

옵션 설명
-s_srs 원본 좌표계
-t_srs 목표 좌표계
-r bilinear 보간법
-wm warp memory (MB)
GDAL_NUM_THREADS 멀티코어 사용

보간법 선택

옵션 용도
nearest 범주형 데이터
bilinear 일반 영상 (추천)
cubic 고품질 영상

항공영상은

bilinear 추천


4. TMS 타일 생성

최종적으로 OpenLayers용 TMS 타일 생성

gdal2tiles ^
    --zoom=16-20 ^
    --processes=8 ^
    -w openlayers ^
    --tmscompatible ^
    --tiledriver=JPEG ^
    D:\tiffs\UJ_2025_10_3857_final.tif D:\tiles\UJ_2025

옵션 설명

옵션 설명
--zoom 생성 타일 레벨
--processes 멀티프로세스 수
-w openlayers OpenLayers 뷰어 생성
--tmscompatible TMS 방식 타일
--tiledriver JPEG 타일

zoom 레벨 선택

일반적인 지도 기준

Zoom 용도
12~14 광역지도
15~17 도시
18~20 항공영상

항공영상은

16~20

추천


processes 옵션

멀티코어 처리

예시

--processes=8

주의

CPU 코어보다 많으면 오히려 느려질 수 있음


최종 결과

항목 결과
원본파일 약 1TB
압축파일 약 1.8GB
압축시간 2시간 49분
좌표변환 28분
TMS 생성 14시간
TMS 파일 약 24GB

추가 최적화 팁 (매우 중요)

1TB 영상 처리 권장 환경

항목 권장
RAM 32GB 이상
SSD NVMe
CPU 8core 이상

디스크 IO 병목 방지

가능하면

외장 HDD → SSD

로 복사 후 작업


GDAL 병렬 처리

환경변수 추가 가능

set GDAL_NUM_THREADS=ALL_CPUS

OpenLayers 사용 예시

new ol.layer.Tile({
  source: new ol.source.XYZ({
    url: '/tiles/UJ_2025/{z}/{x}/{y}.jpg'
  })
});