GDAL को संपीड़न के साथ जियोटीफ़ फ़ाइलों का उत्पादन करने के लिए सेट किया जाना चाहिए? किस एल्गोरिथ्म का उपयोग किया जाना चाहिए?


50

मेरे पास GIS डेटा का एक फ़ोल्डर है जिसमें मुख्य रूप से GeoTIFF फाइलें हैं। पूरे सेट के बारे में पर में वजन का होता है 1.2 GB। मैंने देखा कि अगर मैं सामग्री को एक टारबॉल में पैक करता हूं, तो यह लगभग स्मैश करता है 82 MB। मैं सेट को पुनरीक्षण नियंत्रण प्रणाली में जांचना चाहूंगा कि यह दूसरे लोगों द्वारा काम किया जा सकता है और ऐसा लगता है कि कुछ जगह है जिसे निचोड़ा जा सकता है।

GDAL GeoTIFF ड्राइवर पृष्ठ बहुत सारे विकल्पों को सूचीबद्ध करता है, जिनका उपयोग संकुचित GeoTIFF फ़ाइलों को बनाने के लिए किया जा सकता है। वहाँ भी बहुत सारे विकल्प हैं जो प्रत्येक एल्गोरिथ्म के काम करने के तरीके को प्रभावित करते हैं।

मदद पृष्ठ विकल्पों का वर्णन करने में एक अच्छा काम करता है, लेकिन एल्गोरिथ्म या ट्रेडऑफ़ का चयन करने के तरीके के बारे में विस्तार से नहीं बताता है कि संपीड़न के अलग-अलग स्तर से जुड़े हैं। यह निम्नलिखित प्रश्नों की ओर जाता है:

  • संपीड़न का उपयोग करने के पेशेवरों को अंतरिक्ष में एक नाटकीय बचत है। क्या विपक्ष हैं? क्या छवि खो जाने पर जानकारी खो गई है?

  • एक एल्गोरिथ्म और संपीड़न स्तर चुनने के बारे में कैसे जाना चाहिए। क्या कुछ प्रकार की छवियां एक निश्चित एल्गोरिथ्म में खुद को उधार देती हैं?

जवाबों:


84

संपीड़न विधि का चयन करने के लिए आपको एक कमांड का उपयोग करने की आवश्यकता है जैसे:

gdal_translate -co "COMPRESS=method" src_dataset dst_dataset

जब आप कम्प्रेशन का उपयोग करते हैं तो सबसे बड़ा ट्रेड-ऑफ अतिरिक्त प्रोसेसिंग समय होता है जो कि इमेज को अनकम्प्रेस्ड करने के लिए आवश्यक होता है, और इमेज को अनकम्प्रेस्ड करने के बाद भी मेमोरी की समान मात्रा का उपभोग करेगा। जानकारी के नुकसान के बारे में संपीड़न के दो बुनियादी प्रकार हैं :

  • दोषरहित - जो मूल डेटा मूल्यों को संरक्षित करता है
  • हानिपूर्ण - जो डेटा को अधिक स्थान बचाने के लिए नीचा दिखाता है

जब मूल डेटा मानों को डीईएम या रेखापुंज की तरह संरक्षित किया जाना चाहिए, तो आप दोषरहित एल्गोरिदम बनाएंगे। PACKBITS , DEFLATE और LZW जैसे एल्गोरिदम दोषरहित हैं और संपीड़न अनुपात के अनुसार आदेश दिए जा सकते हैं:

  1. LZW - उच्चतम संपीड़न अनुपात, उच्चतम प्रसंस्करण शक्ति
  2. हवा निकालना
  3. PACKBITS - सबसे कम संपीड़न अनुपात, सबसे कम प्रसंस्करण शक्ति

संपीड़न अनुपात अभी भी डेटा पर निर्भर करता है, यदि डेटा में बहुत अधिक समान मूल्य हैं तो PACKBITS अच्छे परिणाम देगा।

दोषरहित के विपरीत, आप जेपीईजी जैसे हानिरहित एल्गोरिदम का उपयोग चूहों को संपीड़ित करने के लिए करेंगे, जिन्हें सटीक मान वापस नहीं करना है। उदाहरण के लिए, ऑर्थोपोटोस या उपग्रह इमेजरी को हानिपूर्ण एल्गोरिदम का उपयोग करके संकुचित किया जा सकता है।


5
अच्छा जवाब के लिए +1। PACKBITS रन-लेंथ एन्कोडिंग का एक रूप है ( en.wikipedia.org/wiki/Run-length_encoding ) जो आसन्न समान मानों के साथ डेटा के लिए अच्छी तरह से काम करेगा (यदि उदाहरण के लिए, आपके पास बहुत सारे NULL या एक वर्गीकृत रेखापुंज है) और LZW एक अधिक मजबूत एल्गोरिथ्म है जो अधिक प्रकार के डेटा पर प्रभावी है। सामान्य व्यापार-बंद अंतरिक्ष और गति के बीच है जैसा कि उल्लेख किया गया है, इसलिए जो उपयुक्त है वह आपके उपयोग और डेटा पर निर्भर करता है। इसके अलावा, कुछ सॉफ़्टवेयर कुछ प्रकार के GeoTiff संपीड़न का समर्थन नहीं करते हैं।
19

3
यह एक अच्छा, प्रासंगिक पोस्ट linfiniti.com/2011/05/…
oeon

1
अच्छा जवाब, यह आपके विकल्पों को अच्छी तरह से सारांशित करता है। यह भी याद रखें कि उन संपीड़न विधियों में से प्रत्येक में आपके द्वारा निर्धारित पैरामीटर हैं, जो परिणाम को काफी प्रभावित करेगा। @ j03lar50n, ख़ुशी है कि आपको मेरा ब्लॉग लेख उपयोगी लगा ...
R Thiede

सुंदर जवाब! बहुत सरल और सही बात है।
sys49152

@scw क्या आप इस बारे में अधिक कह सकते हैं कि कौन सा सॉफ़्टवेयर कुछ प्रकार के संपीड़न का समर्थन नहीं करता है - विशेष रूप से, क्या कोई सॉफ्टवेयर है जो lzw या पैकट्स का समर्थन नहीं करेगा? या आप ज्यादातर कम आम एल्गोरिदम का जिक्र कर रहे हैं?
डेविड लेबॉयर

28

के साथ lzwऔर deflateसंपीड़न का उपयोग -co predictor=2इमेजरी के साथ मदद कर सकता है जो आसानी से अलग हो रहा है क्योंकि यह पूर्ण मूल्यों के बजाय पिक्सेल से पिक्सेल तक के अंतर को संकुचित करता है, और ये छोटे होंगे और अधिक पैटर्न ( रेफ ) होंगे। प्रिडिक्टर केवल lzwऔर deflateसंपीड़न के साथ उपयोगी है , विकल्प का अन्य तरीकों के साथ कोई प्रभाव नहीं है।

gdal_translate -co compress=lzw -co predictor=2 ...

भविष्यवक्ता बचत नाटकीय हो सकती है। मैं सिर्फ 17GB का उपयोग करके 16bit geotiff ऊंचाई मॉडल की एक निर्देशिका को फिर से संकुचित कर देता हूं, जो कि भविष्यवक्ता = 2 के साथ केवल 5GB में डिफ़ॉल्ट LZW सेटिंग्स के साथ है।

भविष्यवाणियों 2 और 3 के बीच अंतर पर परस्पर विरोधी जानकारी है और जब प्रत्येक को सबसे अच्छा लागू किया जाता है ( ref1 , ref2 )। शायद एक और सवाल के लिए ईंधन।

बचत के लिए एक और आसान विकल्प है -co tiled=yes। कुछ सॉफ्टवेयर हैं जो टाइल की गई छवियों को नहीं पढ़ सकते हैं, लेकिन वे दुर्लभ हो रहे हैं और ज्यादातर जीआईएस के बाहर हैं (मुझे किसी भी मुख्य स्ट्रीम जीआईएस सॉफ्टवेयर का पता नहीं है जो अब उन्हें नहीं पढ़ता है)।

संपीडित ओवरव्यू का उपयोग करने के @ अल्फोंक्स के उत्तर पर निर्माण करने के लिए : यह डेटा की अखंडता के लिए आधार छवि को संग्रहीत करने की अनुमति देता है, और पिरामिड को नुकसानदेह होने के लिए, गति और कुछ अंतरिक्ष बचत के लिए। यह दोनों दुनिया के लगभग सर्वश्रेष्ठ है। gdaladdoRGB छवियों के साथ सबसे छोटे संभव ओवरव्यू के लिए : डिफ़ॉल्ट निकटतम पड़ोसी के बजाय jpeg संपीड़न, औसतन या गॉसियन रीसम्पलिंग का उपयोग करें (ओवरव्यू को चिकना बनाता है), और YCBCR फोटोमेट्रिक ओवरव्यू। इन विकल्पों के बारे में अधिक जानकारी के लिए गदलदादो संदर्भ पृष्ठ देखें (हालांकि यह फोटोमीट्रिक क्या है इसके बारे में बहुत कुछ नहीं कहता है)।

यह एक विंडोज़ बैच फ़ाइल का एक हिस्सा है जिसका उपयोग मैं एक निर्देशिका में सभी टिफ्स पर बाहरी जेपीईजी साक्षात्कार लागू करने के लिए करता हूं:

set _opts= -r gauss --config PHOTOMETRIC_OVERVIEW YCBCR ^
--config COMPRESS_OVERVIEW JPEG --config JPEG_QUALITY_OVERVIEW 85

for %%a in (*.tif) do gdaladdo -ro %_opts% %%a 2 4 8 16 32 64

टिप्पणियाँ

जीडीएएल 1.6.0 ने पुनरुत्पादन की शुरुआत की, gaussजो averageउच्च विपरीत या शोर पैटर्न के साथ तेज किनारों के मामले में बेहतर परिणाम दे सकता है । 2 स्तरों (2 4 8 ...) की शक्तियों का उपयोग किया जाना चाहिए ताकि 3x3 को फिर से खोलना गाऊसी कर्नेल चुना जाए।

JPEG_QUALITY_OVERVIEW 85 - यदि निर्दिष्ट नहीं है तो 75% के डिफ़ॉल्ट का उपयोग किया जाता है, जो छोटी फ़ाइल का उत्पादन करता है, लेकिन मुझे 85% बेहतर बनाम आकार में गुणवत्ता व्यापार बंद लगता है।

अद्यतन, २०१५: GDAL १. here और २.० ने बहुत सारे नए विकल्प पेश किए हैं जो यहां नहीं हैं और जिनके पास मुझे पचाने का समय नहीं है। आधिकारिक gtiff प्रारूप पृष्ठ पढ़ें , मुझे यकीन है कि अतिरिक्त उपयोगी सेटिंग्स विस्तृत हैं।


10

बड़ी आपदाओं के लिए जियोफाई, जियोफाई फाइल में अतिरिक्त छवियों के रूप में डाउनस्टॉल किए गए ओवरव्यू को स्टोर करने की संभावना प्रदान करता है। यह गदलददो (= GDAL ADD ओवरव्यू) के साथ किया जा सकता है। जब ये ओवरव्यू बनाते हैं, तो आप मैन्युअल रूप से उन्हें भी सेक करने के लिए गाल्ड बता सकते हैं:

gdaladdo --config COMPRESS_OVERVIEW JPEG 

बहुत अधिक आकार जोड़े बिना आपके डेटा को देखने की गति। नोट: जियोस्टेरर्स जैसे जियोसर्वर, यूडिग, एटलसटाइटलर, जियोफाइबर सभी इस सुविधा और लाभ का उपयोग कर सकते हैं।



4

अंतत: आपको शायद विभिन्न विकल्पों के साथ प्रयोग करना होगा और देखना होगा कि आपकी आवश्यकताओं को पूरा करता है।

मैं जेपीईजी-कंप्रेस्ड जियोफाई का बढ़ा हुआ उपयोग तरंगिका आधारित प्रारूपों पर कर रहा हूं। मेरे परिणाम बहुत अच्छे रहे हैं। ऐसा करने के लिए GDAL का उपयोग करने से बहुत अधिक डेटा हानि के बिना तरंग-आधारित स्वरूपों के तुलनीय संपीड़न अनुपात प्राप्त हुए हैं। विघटन के साथ आने वाला प्रदर्शन स्वीकार्य है।

इस दृष्टिकोण के बारे में मुझे जो सबसे अधिक पसंद है वह यह है कि जियोफिट समर्थन लगभग सार्वभौमिक है, जबकि तरंगिका आधारित प्रारूपों के लिए समर्थन हमेशा आश्वस्त नहीं होता है और कभी-कभी कांटेदार लाइसेंस मुद्दों के अधीन होता है।


3

भू संसाधन बनाम मैपिंग के ईसीडब्ल्यू ( एन्हैंस्ड कम्प्रेस्ड वेवलेट ) संपीड़न की तुलना में मेरा अनुभव यह है कि उच्च रिज़ॉल्यूशन वाली हवाई तस्वीरों को संपीड़ित करते समय ईसीडब्ल्यू बेहतर परिमाण का आदेश देता है। वेवलेट आधारित संपीड़न का एक और महत्वपूर्ण लाभ यह है कि, पुराने स्वरूपों के विपरीत, जियोफिफ़, जेपीईजी - जेपीईजी 2000 नहीं -, छवि के एक हिस्से को विघटित किया जा सकता है [रेफ। 1]। इस लाभ के महत्व को कम करके नहीं आंका जाना चाहिए, खासकर जब "लगभग आधे कंप्यूटर मेमोरी आकार से बड़ा" के साथ काम कर रहा हो।

ऐसा लगता है - मुझे कभी भी इसका परीक्षण करने का मौका नहीं मिला है - कि MrSID , एक अन्य प्रॉपर, तरंगिका आधारित फ़ाइल प्रारूप, "पुराने" प्रारूपों और चयनात्मक अपघटन की तुलना में उच्च संपीड़न अनुपात भी प्रदर्शित करता है।

संदर्भ। 1: http://www.ifp.uni-stuttgart.de/publications/phowo01/Ueffing.pdf


1
dariapra, याद रखें कि GeoTIFF-Packbits या GeoTIFF-LZW दोषरहित कंप्रेशन हैं जबकि ECW और JPEG हानिप्रद हैं। दोषरहित या दोषपूर्ण संपीड़न को भविष्य के डेटा उपयोग के आधार पर सावधानी से चुना जाना चाहिए।
मार्कसएन

1
मैं यह दावा नहीं कर रहा हूं कि शिथिल संपीड़न प्रारूप हमेशा एक वैध भंडारण प्रारूप है। मेरा मतलब यह था कि ईसीडब्ल्यू जैसे प्रारूप का उपयोग करना कुछ उत्पादन वातावरणों में उपयुक्त है। उदाहरण के लिए, यदि हम एक MapServer उदाहरण है जिसमें WMS के माध्यम से ortophoto परतों की सेवा की जाती है, तो ECW GeoTIFF से अधिक उपयुक्त प्रारूप है। कुछ भी नहीं मना है कि आप दोषरहित संपीड़न का उपयोग करके भी ऑर्थोटो को स्टोर करते हैं।
दरियाप्रा १६'१०

3

@Dodobas और @ मैट- विल्की के जवाब छवि आकार को कम करने के लिए GDAL के साथ कंप्रेसिंग और धुंधलापन के कृत्यों से संबंधित सबसे अधिक चीजों को कवर करते हैं।

मैं दो चीजें जोड़ना चाहूंगा:

  • फ़ाइल प्रारूप GDAL से प्रलेखन: http://www.gdal.org/frmt_gtiff.html ;
    • निर्माण विकल्प देखें ( -co), विशेष रूप से:
      • COMPRESS
      • NUM_THREADS
      • PREDICTOR
      • ZLEVEL
  • और यह सत्यापित करना आवश्यक है कि वह सॉफ़्टवेयर जो GeoTIFF का उपभोग कर रहा है:
    • वांछित संपीड़न विधि का समर्थन करता है;
    • संपीड़न का उपयोग करने की सिफारिश करता है।

उदाहरण के लिए, GeoServer , GeoTIFF को संपीड़ित करने की अनुशंसा नहीं करता है :

अंतिम नोट के रूप में, जियोटीफ़ विभिन्न प्रकार के संपीड़न का समर्थन करता है, लेकिन हम इसका उपयोग नहीं करने का सुझाव देते हैं। जब भी यह बहुत छोटी फ़ाइलों के लिए अनुमति देता है, तो विघटन की प्रक्रिया महंगी होती है और प्रत्येक डेटा एक्सेस पर प्रदर्शन किया जाएगा, प्रतिपादन धीमा कर देगा। हमारे अनुभव में, डीकंप्रेसन का समय शुद्ध डिस्क डेटा रीडिंग से अधिक है।

यह विशेष रूप से सच है अगर पहले से ही ओवरव्यू, टाइलिंग और उच्च प्रदर्शन भंडारण मीडिया (एंटरप्राइज ग्रेड डिस्क या एसएसडी) का उपयोग कर रहे हैं।


मुझे अपनी jpeg छवि को भी कॉपी करने की आवश्यकता है क्योंकि मैं अपने रैस्टर को गाल्डिन पायथन के साथ बदलने में सक्षम नहीं हूं। यह मेमोरी त्रुटि दिखा रहा है और कभी-कभी मेमोरी से बाहर भी। किसी को भी हो सकता है मुझे पता है कि मैं अजगर में इस लाइन (gdal_translate -co "COMPRESS = विधि" src_dataset dst_dataset) को कैसे लागू कर सकता हूं। मैं गदल का इस्तेमाल करने में नया हूं। इसलिए, संरचना को समझना कभी-कभी मेरे लिए कठिन होता है।
शिउली पेरविन

1
@ShiuliPervin, पहले, JPEG पहले से ही एक संकुचित (हानिपूर्ण) प्रारूप है। दूसरा, ऐसा लगता है कि आपके पास चंक का मुद्दा है, संपीड़न नहीं। एक बार में सभी के बजाय टाइल, स्ट्रिप्स या चंक में फ़ाइल पढ़ें। यदि फ़ाइल संपीड़ित है, तो भी जब आप इसे उपयोग करते हैं तो इसे असम्पीडित करना होगा (उदाहरण के लिए: यदि 4GB फ़ाइलों को संपीड़ित करते समय डिस्क पर 2GB का उपयोग किया जाता है, तो यह तब भी 4GB RAM लेगा जब यह सभी प्रसंस्करण के लिए लोड हो जाता है। अंतरिक्ष की बचत के विकल्प, आप GeoTIFF के लिए विरल स्वरूप में देखना चाह सकते हैं ।
केविन

1
@ShiuliPervin, हालांकि, मैं आपके प्रश्न को गलत समझ सकता हूं। संपीड़न स्वयं अक्सर बहुत सारी मेमोरी का उपयोग करता है, लेकिन आपके सिस्टम को ओवरफ्लो नहीं करना चाहिए, जब तक कि लाइब्रेरी में कोई बग न हो या आपको एक अमान्य तर्क दिया जाए। यदि आप एक GeoTIFF के लिए संपीड़न प्रकार के रूप में JPEG के साथ समस्या कर रहे हैं, तो शायद LZMA या DEFLATE का प्रयास करें।
केविन

0

नए GDAL संस्करणों का उपयोग करने वालों के लिए, दोषरहित ZStandard ( ZSTD ) संपीड़न (GDAL> = 2.3) और हानिपूर्ण सीमित त्रुटि त्रुटि संपीड़न ( LERC ) संपीड़न (GDAL> = 2.4) विकल्प उपलब्ध हैं।

आम तौर पर बोल रहा है, ZSTDदोनों की तुलना में LZWऔर DEFLATEसमान संपीड़न अनुपात के साथ तेजी से डेटा रीड गति प्रदान करता है , हालांकि यह फ़ाइल लिखते समय कुछ धीमा हो सकता है (आपके द्वारा उपयोग की जाने वाली सेटिंग्स के आधार पर)।

यदि आप डेटा परिशुद्धता के बारे में उपद्रव नहीं कर रहे हैं (उदाहरण के लिए केवल विश्लेषण के बजाय विज़ुअलाइज़ेशन कर रहे हैं), तो LERCएक अच्छा विकल्प हो सकता है। एक MAX_Z_ERRORसेटिंग है जो आपको ट्विक करने की अनुमति देती है कि आप कितना सटीक बलिदान करने के लिए तैयार हैं। उदाहरण के लिए एक MAX_Z_ERROR=0.001या 1 मिमी एक बेंचमार्क (देखें में 50% की अंतरिक्ष की बचत दिया रेफरी )।

सबसे अच्छी बात यह है कि आप भी गठजोड़ कर सकते हैं है LERCके साथ ZSTDका उपयोग कर COMPRESS=LERC_ZSTD! या यदि आप उपयोग करना पसंद करते हैं DEFLATE, तो आप कर सकते हैं COMPRESS=LERC_DEFLATE। आधिकारिक GDAL GeoTIFF डॉक्स https://gdal.org/drivers/raster/gtiff.html#creation-options पर संयोजनों / सेटिंग्स की पूरी सूची देखें

अधिक विवरण और पूर्ण बेंचमार्क तुलना इस मूल्यवान संदर्भ में पाई जा सकती है:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.