๐Ÿ›ฐ๏ธ ECW to JPEG TMS ํƒ€์ผ ๋ณ€ํ™˜ ๊ฐ€์ด๋“œ ๊ฐœ์š” ์›๋ณธ ๋ฐ์ดํ„ฐ: ECW (EPSG:5187 - ์ค‘๋ถ€์›์  2010) ๋ณ€ํ™˜ ๋ชฉํ‘œ: Web Mercator (EPSG:3857) ๊ธฐ๋ฐ˜ JPEG ํƒ€์ผ ์„œ๋น„์Šค ํ™˜๊ฒฝ: GeoServer + OpenLayers (TMS ๋ฐฉ์‹) Step 0. ์›๋ณธ ์ขŒํ‘œ๊ณ„ ํ™•์ธ (gdalinfo) ์›๋ณธ ํŒŒ์ผ์˜ ํˆฌ์˜ ์ •๋ณด๊ฐ€ EPSG:5187์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. (์ œ๊ณตํ•ด์ฃผ์‹  ์ด๋ฏธ์ง€์ƒ์—์„œ ํ™•์ธ ์™„๋ฃŒ) Bash gdalinfo "C:\Users\ASUS\Desktop\UJDRN\UJDRN6319.ecw" Step 1. ์›น ์ง€๋„์šฉ ์ขŒํ‘œ ๋ณ€ํ™˜ (gdalwarp) ์›น ์ง€๋„์˜ ํ‘œ์ค€์ธ EPSG:3857์œผ๋กœ ํˆฌ์˜๋ฒ•์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ๋ณ€ํ™˜ ๋Œ€์‹  VRT(๊ฐ€์ƒ ๋ฐ์ดํ„ฐ์…‹) ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์†๋„๋ฅผ ๋†’์ด๊ณ  ๋ถˆํ•„์š”ํ•œ ์ค‘๊ฐ„ ํŒŒ์ผ ์ƒ์„ฑ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. Bash gdalwarp -of VRT -s_srs EPSG:5187 -t_srs EPSG:3857 ^ "C:\Users\ASUS\Desktop\UJDRN\UJDRN6319.ecw" ^ "C:\Users\ASUS\Desktop\UJDRN\UJDRN6319.vrt" Step 2. ๋ฐด๋“œ ์ถ”์ถœ ๋ฐ ๋ฐ์ดํ„ฐ ์ •๊ทœํ™” (gdal_translate) ECW ํŒŒ์ผ์ด 4๋ฐด๋“œ(RGB + Alpha ๋“ฑ)์ธ ๊ฒฝ์šฐ, JPEG ํƒ€์ผ ์ƒ์„ฑ์„ ์œ„ํ•ด ๋ช…์‹œ์ ์œผ๋กœ 3๊ฐœ ๋ฐด๋“œ(RGB)๋งŒ ์ถ”์ถœํ•˜๊ณ  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ Byte๋กœ ๊ณ ์ •ํ•ฉ๋‹ˆ๋‹ค. Bash gdal_translate -of VRT -b 1 -b 2 -b 3 -ot Byte ^ "C:\Users\ASUS\Desktop\UJDRN\UJDRN6319.vrt" ^ "C:\Users\ASUS\Desktop\UJDRN\UJDRN6319_byte.vrt" Step 3. ์ตœ์ ํ™”๋œ JPEG ํƒ€์ผ ์ƒ์„ฑ (gdal2tiles) GeoServer์˜ TMS ์„œ๋น„์Šค ๊ทœ๊ฒฉ์— ํ˜ธํ™˜๋˜๋„๋ก ํƒ€์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Bash gdal2tiles --processes=4 ^ -z 16-21 ^ -w openlayers ^ --tmscompatible ^ --tiledriver=JPEG ^ --jpeg-quality=80 ^ "C:\Users\ASUS\Desktop\UJDRN\UJDRN6319_byte.vrt" ^ "C:\Users\ASUS\Desktop\UJDRN\UJDRN6319" ๐Ÿ’ก ์˜ต์…˜ ํ•ต์‹ฌ ํฌ์ธํŠธ --tmscompatible: GeoServer์˜ TMS ์—”์ง„์ด ์‚ฌ์šฉํ•˜๋Š” Y์ถ• ๋ฒˆํ˜ธ ์ฒด๊ณ„(์•„๋ž˜๊ฐ€ 0)์— ๋งž์ถฅ๋‹ˆ๋‹ค. --tiledriver=JPEG: ์šฉ๋Ÿ‰ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด JPEG๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. (200MB ์ˆ˜์ค€์œผ๋กœ ํšจ์œจ์  ๊ด€๋ฆฌ ๊ฐ€๋Šฅ) -w openlayers: ๋ณ€ํ™˜ ํ›„ ์ฆ‰์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” OpenLayers์šฉ openlayers.html ํŒŒ์ผ์„ ์ž๋™ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Step 4. OpenLayers ์—ฐ๋™ (GeoServer ํ™œ์šฉ ์‹œ) GeoServer์— ์ด ํƒ€์ผ์„ ๋“ฑ๋กํ•œ ํ›„ OpenLayers์—์„œ ํ˜ธ์ถœํ•  ๋•Œ, Y์ถ•์ด ๋ฐ˜์ „๋˜์–ด ๋ณด์ธ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด {-y} ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ tileGrid ์„ค์ •์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [OpenLayers ํ˜ธ์ถœ ์˜ˆ์‹œ ์ฝ”๋“œ] JavaScript const tmsLayer = new ol.layer.Tile({ source: new ol.source.XYZ({ // GeoServer์˜ GWC(GeoWebCache) ๋˜๋Š” ํƒ€์ผ ๊ฒฝ๋กœ ์ž…๋ ฅ // --tmscompatible ์˜ต์…˜์„ ์ผ์œผ๋ฏ€๋กœ {-y}๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Œ url: 'http://your-server/tiles/UJDRN6319/{z}/{x}/{-y}.jpg', wrapX: true }) }); ์ตœ์ข… ๊ฒฐ๊ณผ ์š”์•ฝ ํŒŒ์ผ ํฌ๋งท: JPEG (.jpg) ์ด ์šฉ๋Ÿ‰: ์•ฝ 200MB (ํ•ญ๊ณต์‚ฌ์ง„ ์คŒ 21๋ ˆ๋ฒจ ๋Œ€๋น„ ๋งค์šฐ ์šฐ์ˆ˜) ํ˜ธํ™˜์„ฑ: GeoServer TMS ํ‘œ์ค€ ๋ฐ OpenLayers ์ตœ์ ํ™”