OGG a révisé ce gist . Aller à la révision
1 file changed, 3 insertions
\353\266\204\355\225\240TIF\353\245\274 TMS\353\241\234 \353\263\200\355\231\230.md"
| @@ -3,10 +3,13 @@ | |||
| 3 | 3 | gdalbuildvrt "C:\ujsky\source_all.vrt" "D:\uj_2026\*.tif" | |
| 4 | 4 | ``` | |
| 5 | 5 | ||
| 6 | + | ||
| 6 | 7 | # 2. 좌표변환 | |
| 7 | 8 | ```bash | |
| 8 | 9 | gdalwarp -s_srs EPSG:5187 -t_srs EPSG:3857 -of VRT ^ | |
| 9 | 10 | "C:\ujsky\source_all.vrt" "C:\ujsky\merged_3857.vrt" | |
| 11 | + | ``` | |
| 12 | + | ||
| 10 | 13 | ||
| 11 | 14 | # 3. TMS 변환 | |
| 12 | 15 | ```bash | |
OGG a révisé ce gist . Aller à la révision
1 file changed, 21 insertions
\353\266\204\355\225\240TIF\353\245\274 TMS\353\241\234 \353\263\200\355\231\230.md" (fichier créé)
| @@ -0,0 +1,21 @@ | |||
| 1 | + | # 1. 가상 VRT 생성 | |
| 2 | + | ```bash | |
| 3 | + | gdalbuildvrt "C:\ujsky\source_all.vrt" "D:\uj_2026\*.tif" | |
| 4 | + | ``` | |
| 5 | + | ||
| 6 | + | # 2. 좌표변환 | |
| 7 | + | ```bash | |
| 8 | + | gdalwarp -s_srs EPSG:5187 -t_srs EPSG:3857 -of VRT ^ | |
| 9 | + | "C:\ujsky\source_all.vrt" "C:\ujsky\merged_3857.vrt" | |
| 10 | + | ||
| 11 | + | # 3. TMS 변환 | |
| 12 | + | ```bash | |
| 13 | + | gdal2tiles ^ | |
| 14 | + | --zoom=16-20 ^ | |
| 15 | + | --processes=14 ^ | |
| 16 | + | -w openlayers ^ | |
| 17 | + | --tmscompatible ^ | |
| 18 | + | --tiledriver=JPEG ^ | |
| 19 | + | --config GDAL_CACHEMAX 8192 ^ | |
| 20 | + | "C:\ujsky\merged_3857.vrt" "C:\ujsky\UJ_2026" | |
| 21 | + | ``` | |
OGG a révisé ce gist . Aller à la révision
1 file changed, 1 insertion, 1 deletion
\355\225\255\352\263\265\354\230\201\354\203\201TIF\353\245\274 TMS\353\241\234\353\263\200\355\231\230 \352\260\200\354\235\264\353\223\234.md"
| @@ -259,7 +259,7 @@ CPU 코어보다 많으면 오히려 느려질 수 있음 | |||
| 259 | 259 | | 압축시간 | 2시간 49분 | | |
| 260 | 260 | | 좌표변환 | 28분 | | |
| 261 | 261 | | TMS 생성 | 14시간 | | |
| 262 | - | ||
| 262 | + | | TMS 파일 | 약 24GB | | |
| 263 | 263 | --- | |
| 264 | 264 | ||
| 265 | 265 | # 추가 최적화 팁 (매우 중요) | |
OGG a révisé ce gist . Aller à la révision
1 file changed, 307 insertions
\355\225\255\352\263\265\354\230\201\354\203\201TIF\353\245\274 TMS\353\241\234\353\263\200\355\231\230 \352\260\200\354\235\264\353\223\234.md" (fichier créé)
| @@ -0,0 +1,307 @@ | |||
| 1 | + | # 항공영상 TIF → TMS 타일 변환 가이드 | |
| 2 | + | ||
| 3 | + | 대용량 항공영상(약 **1TB GeoTIFF**)을 **OpenLayers에서 사용할 TMS 타일**로 변환하는 절차를 정리한다. | |
| 4 | + | ||
| 5 | + | 본 가이드는 **GDAL 기반 처리**를 기준으로 작성되었으며 다음 환경을 기준으로 한다. | |
| 6 | + | ||
| 7 | + | * GDAL (OSGeo4W) | |
| 8 | + | * OpenLayers 3.x | |
| 9 | + | * 좌표계: **EPSG:5187 → EPSG:3857** | |
| 10 | + | * 타일 포맷: **JPEG** | |
| 11 | + | * 타일 레벨: **16 ~ 20** | |
| 12 | + | ||
| 13 | + | --- | |
| 14 | + | ||
| 15 | + | # 전체 작업 흐름 | |
| 16 | + | ||
| 17 | + | ``` | |
| 18 | + | 원본 TIFF | |
| 19 | + | │ | |
| 20 | + | ├─ 1. tif 정보 확인 | |
| 21 | + | │ | |
| 22 | + | ├─ 2. JPEG 압축 GeoTIFF 생성 (용량 최적화) | |
| 23 | + | │ | |
| 24 | + | ├─ 3. 좌표계 변환 (5187 → 3857) | |
| 25 | + | │ | |
| 26 | + | └─ 4. TMS 타일 생성 | |
| 27 | + | ``` | |
| 28 | + | ||
| 29 | + | --- | |
| 30 | + | ||
| 31 | + | # 1. TIFF 정보 확인 | |
| 32 | + | ||
| 33 | + | 먼저 원본 TIFF의 메타데이터를 확인한다. | |
| 34 | + | ||
| 35 | + | ```bash | |
| 36 | + | gdalinfo "E:\UJ_2025_10.tif" | |
| 37 | + | ``` | |
| 38 | + | ||
| 39 | + | 확인해야 할 주요 정보 | |
| 40 | + | ||
| 41 | + | | 항목 | 확인 이유 | | |
| 42 | + | | ----------------- | -------------- | | |
| 43 | + | | Coordinate System | 좌표변환 필요 여부 확인 | | |
| 44 | + | | Pixel Size | 영상 해상도 확인 | | |
| 45 | + | | Band Count | RGB인지 확인 | | |
| 46 | + | | Image Size | 처리시간 예측 | | |
| 47 | + | | Compression | 이미 압축된 파일인지 확인 | | |
| 48 | + | ||
| 49 | + | ### 주의사항 | |
| 50 | + | ||
| 51 | + | 대용량 TIFF의 경우 아래 정보가 중요하다. | |
| 52 | + | ||
| 53 | + | * **Band 수** | |
| 54 | + | RGB 영상이라면 보통 **3 bands** | |
| 55 | + | ||
| 56 | + | * **Block Size** | |
| 57 | + | 타일 생성 시 성능과 관련됨 | |
| 58 | + | ||
| 59 | + | * **BigTIFF 여부** | |
| 60 | + | 4GB 이상 파일은 BigTIFF 필요 | |
| 61 | + | ||
| 62 | + | --- | |
| 63 | + | ||
| 64 | + | # 2. 원본 TIFF 압축 저장 (JPEG 압축) | |
| 65 | + | ||
| 66 | + | 외장하드의 대용량 TIFF를 **로컬 SSD로 이동하면서 JPEG 압축 GeoTIFF 생성**. | |
| 67 | + | ||
| 68 | + | ```bash | |
| 69 | + | gdal_translate -of GTiff ^ | |
| 70 | + | -b 1 -b 2 -b 3 ^ | |
| 71 | + | -co COMPRESS=JPEG ^ | |
| 72 | + | -co JPEG_QUALITY=70 ^ | |
| 73 | + | -co PHOTOMETRIC=YCBCR ^ | |
| 74 | + | -co TILED=YES ^ | |
| 75 | + | -co BLOCKXSIZE=512 ^ | |
| 76 | + | -co BLOCKYSIZE=512 ^ | |
| 77 | + | -co BIGTIFF=YES ^ | |
| 78 | + | -co NUM_THREADS=ALL_CPUS ^ | |
| 79 | + | --config GDAL_CACHEMAX 8192 ^ | |
| 80 | + | E:\UJ_2025_10.tif D:\tiffs\UJ_2025_10_extreme.tif | |
| 81 | + | ``` | |
| 82 | + | ||
| 83 | + | ## 옵션 설명 | |
| 84 | + | ||
| 85 | + | | 옵션 | 설명 | | |
| 86 | + | | -------------------- | ---------------- | | |
| 87 | + | | -of GTiff | 출력 포맷 GeoTIFF | | |
| 88 | + | | -b 1 -b 2 -b 3 | RGB 밴드 선택 | | |
| 89 | + | | COMPRESS=JPEG | JPEG 압축 사용 | | |
| 90 | + | | JPEG_QUALITY=70 | 압축 품질 (50~80 권장) | | |
| 91 | + | | PHOTOMETRIC=YCBCR | JPEG 압축 효율 증가 | | |
| 92 | + | | TILED=YES | 타일 구조 TIFF 생성 | | |
| 93 | + | | BLOCKXSIZE=512 | 타일 크기 | | |
| 94 | + | | BLOCKYSIZE=512 | 타일 크기 | | |
| 95 | + | | BIGTIFF=YES | 4GB 이상 파일 지원 | | |
| 96 | + | | NUM_THREADS=ALL_CPUS | CPU 멀티코어 사용 | | |
| 97 | + | | GDAL_CACHEMAX | 메모리 캐시 (MB) | | |
| 98 | + | ||
| 99 | + | --- | |
| 100 | + | ||
| 101 | + | ## 성능 팁 | |
| 102 | + | ||
| 103 | + | ### JPEG_QUALITY | |
| 104 | + | ||
| 105 | + | | 값 | 용도 | | |
| 106 | + | | -- | ------- | | |
| 107 | + | | 90 | 고품질 | | |
| 108 | + | | 70 | 일반 항공영상 | | |
| 109 | + | | 50 | 최대 압축 | | |
| 110 | + | ||
| 111 | + | 항공영상 배경지도 용도라면 | |
| 112 | + | ||
| 113 | + | **70 추천** | |
| 114 | + | ||
| 115 | + | --- | |
| 116 | + | ||
| 117 | + | ### BLOCK SIZE | |
| 118 | + | ||
| 119 | + | 512x512 추천 이유 | |
| 120 | + | ||
| 121 | + | * GDAL 내부 처리 효율 | |
| 122 | + | * 타일 생성 속도 개선 | |
| 123 | + | * 디스크 IO 감소 | |
| 124 | + | ||
| 125 | + | --- | |
| 126 | + | ||
| 127 | + | ### GDAL_CACHEMAX | |
| 128 | + | ||
| 129 | + | 메모리 캐시 설정 | |
| 130 | + | ||
| 131 | + | 예시 | |
| 132 | + | ||
| 133 | + | ``` | |
| 134 | + | --config GDAL_CACHEMAX 8192 | |
| 135 | + | ``` | |
| 136 | + | ||
| 137 | + | 의미 | |
| 138 | + | ||
| 139 | + | ``` | |
| 140 | + | 8GB 메모리 사용 | |
| 141 | + | ``` | |
| 142 | + | ||
| 143 | + | --- | |
| 144 | + | ||
| 145 | + | # 3. 좌표변환 (EPSG:5187 → EPSG:3857) | |
| 146 | + | ||
| 147 | + | OpenLayers에서 사용하려면 **Web Mercator(3857)** 좌표계로 변환한다. | |
| 148 | + | ||
| 149 | + | ```bash | |
| 150 | + | gdalwarp -s_srs EPSG:5187 -t_srs EPSG:3857 ^ | |
| 151 | + | -r bilinear ^ | |
| 152 | + | -of GTiff ^ | |
| 153 | + | -co COMPRESS=JPEG -co JPEG_QUALITY=70 -co PHOTOMETRIC=YCBCR ^ | |
| 154 | + | -co TILED=YES -co BLOCKXSIZE=512 -co BLOCKYSIZE=512 ^ | |
| 155 | + | -co BIGTIFF=YES ^ | |
| 156 | + | -wm 8192 ^ | |
| 157 | + | --config GDAL_NUM_THREADS ALL_CPUS ^ | |
| 158 | + | D:\tiffs\UJ_2025_10_extreme.tif D:\tiffs\UJ_2025_10_3857_final.tif | |
| 159 | + | ``` | |
| 160 | + | ||
| 161 | + | --- | |
| 162 | + | ||
| 163 | + | ## 옵션 설명 | |
| 164 | + | ||
| 165 | + | | 옵션 | 설명 | | |
| 166 | + | | ---------------- | ---------------- | | |
| 167 | + | | -s_srs | 원본 좌표계 | | |
| 168 | + | | -t_srs | 목표 좌표계 | | |
| 169 | + | | -r bilinear | 보간법 | | |
| 170 | + | | -wm | warp memory (MB) | | |
| 171 | + | | GDAL_NUM_THREADS | 멀티코어 사용 | | |
| 172 | + | ||
| 173 | + | --- | |
| 174 | + | ||
| 175 | + | ## 보간법 선택 | |
| 176 | + | ||
| 177 | + | | 옵션 | 용도 | | |
| 178 | + | | -------- | ---------- | | |
| 179 | + | | nearest | 범주형 데이터 | | |
| 180 | + | | bilinear | 일반 영상 (추천) | | |
| 181 | + | | cubic | 고품질 영상 | | |
| 182 | + | ||
| 183 | + | 항공영상은 | |
| 184 | + | ||
| 185 | + | **bilinear 추천** | |
| 186 | + | ||
| 187 | + | --- | |
| 188 | + | ||
| 189 | + | # 4. TMS 타일 생성 | |
| 190 | + | ||
| 191 | + | 최종적으로 **OpenLayers용 TMS 타일 생성** | |
| 192 | + | ||
| 193 | + | ```bash | |
| 194 | + | gdal2tiles ^ | |
| 195 | + | --zoom=16-20 ^ | |
| 196 | + | --processes=8 ^ | |
| 197 | + | -w openlayers ^ | |
| 198 | + | --tmscompatible ^ | |
| 199 | + | --tiledriver=JPEG ^ | |
| 200 | + | D:\tiffs\UJ_2025_10_3857_final.tif D:\tiles\UJ_2025 | |
| 201 | + | ``` | |
| 202 | + | ||
| 203 | + | --- | |
| 204 | + | ||
| 205 | + | ## 옵션 설명 | |
| 206 | + | ||
| 207 | + | | 옵션 | 설명 | | |
| 208 | + | | --------------- | ---------------- | | |
| 209 | + | | --zoom | 생성 타일 레벨 | | |
| 210 | + | | --processes | 멀티프로세스 수 | | |
| 211 | + | | -w openlayers | OpenLayers 뷰어 생성 | | |
| 212 | + | | --tmscompatible | TMS 방식 타일 | | |
| 213 | + | | --tiledriver | JPEG 타일 | | |
| 214 | + | ||
| 215 | + | --- | |
| 216 | + | ||
| 217 | + | ## zoom 레벨 선택 | |
| 218 | + | ||
| 219 | + | 일반적인 지도 기준 | |
| 220 | + | ||
| 221 | + | | Zoom | 용도 | | |
| 222 | + | | ----- | ---- | | |
| 223 | + | | 12~14 | 광역지도 | | |
| 224 | + | | 15~17 | 도시 | | |
| 225 | + | | 18~20 | 항공영상 | | |
| 226 | + | ||
| 227 | + | 항공영상은 | |
| 228 | + | ||
| 229 | + | ``` | |
| 230 | + | 16~20 | |
| 231 | + | ``` | |
| 232 | + | ||
| 233 | + | 추천 | |
| 234 | + | ||
| 235 | + | --- | |
| 236 | + | ||
| 237 | + | ## processes 옵션 | |
| 238 | + | ||
| 239 | + | 멀티코어 처리 | |
| 240 | + | ||
| 241 | + | 예시 | |
| 242 | + | ||
| 243 | + | ``` | |
| 244 | + | --processes=8 | |
| 245 | + | ``` | |
| 246 | + | ||
| 247 | + | 주의 | |
| 248 | + | ||
| 249 | + | CPU 코어보다 많으면 오히려 느려질 수 있음 | |
| 250 | + | ||
| 251 | + | --- | |
| 252 | + | ||
| 253 | + | # 최종 결과 | |
| 254 | + | ||
| 255 | + | | 항목 | 결과 | | |
| 256 | + | | ------ | ------- | | |
| 257 | + | | 원본파일 | 약 1TB | | |
| 258 | + | | 압축파일 | 약 1.8GB | | |
| 259 | + | | 압축시간 | 2시간 49분 | | |
| 260 | + | | 좌표변환 | 28분 | | |
| 261 | + | | TMS 생성 | 14시간 | | |
| 262 | + | ||
| 263 | + | --- | |
| 264 | + | ||
| 265 | + | # 추가 최적화 팁 (매우 중요) | |
| 266 | + | ||
| 267 | + | ### 1TB 영상 처리 권장 환경 | |
| 268 | + | ||
| 269 | + | | 항목 | 권장 | | |
| 270 | + | | --- | -------- | | |
| 271 | + | | RAM | 32GB 이상 | | |
| 272 | + | | SSD | NVMe | | |
| 273 | + | | CPU | 8core 이상 | | |
| 274 | + | ||
| 275 | + | --- | |
| 276 | + | ||
| 277 | + | ### 디스크 IO 병목 방지 | |
| 278 | + | ||
| 279 | + | 가능하면 | |
| 280 | + | ||
| 281 | + | ``` | |
| 282 | + | 외장 HDD → SSD | |
| 283 | + | ``` | |
| 284 | + | ||
| 285 | + | 로 복사 후 작업 | |
| 286 | + | ||
| 287 | + | --- | |
| 288 | + | ||
| 289 | + | ### GDAL 병렬 처리 | |
| 290 | + | ||
| 291 | + | 환경변수 추가 가능 | |
| 292 | + | ||
| 293 | + | ``` | |
| 294 | + | set GDAL_NUM_THREADS=ALL_CPUS | |
| 295 | + | ``` | |
| 296 | + | ||
| 297 | + | --- | |
| 298 | + | ||
| 299 | + | # OpenLayers 사용 예시 | |
| 300 | + | ||
| 301 | + | ```javascript | |
| 302 | + | new ol.layer.Tile({ | |
| 303 | + | source: new ol.source.XYZ({ | |
| 304 | + | url: '/tiles/UJ_2025/{z}/{x}/{y}.jpg' | |
| 305 | + | }) | |
| 306 | + | }); | |
| 307 | + | ``` | |