कई रिस्तेदारों के विलय का परिणाम इतना बड़ा क्यों है? [बन्द है]


10

मैं इस तरह से 14 जियोटीफ़ को मर्ज करने की कोशिश करता हूं:

यहां छवि विवरण दर्ज करें

प्रत्येक जियोटीफ़ लगभग 50Mb है। मुझे आउटपुट पर जियोटीफ़ चाहिए

मेरा वर्कफ़्लो:

gdalbuildvrt -input_file_list list.txt test.vrt 

(जहां मेरी सूची में टिफ़्स का नाम है)

फिर :

gdal_translate -of Gtiff test.vrt test.tif
Input file size is 79841, 59955

यह काम करता है, लेकिन परिणाम 13,3 Gb का एक जियोटीफ़ है! 14 फ़ाइलों के लिए, प्रत्येक 50 एमबी, मैंने 700 एमबी की जियोटीफ़ का प्रयास किया, 13 जीबी का नहीं।

मुझे पता है कि गाल्ड डिफ़ॉल्ट रूप से संपीड़ित नहीं होता है, इसलिए मैंने इस कमांड की कोशिश की:

gdal_translate -of Gtiff -co COMPRESS=JPEG test.vrt test_compressed.tif

लेकिन फ़ाइल का "मर्ज" JPEG संपीड़न के लिए बहुत बड़ा है:

Input file size is 79841, 59955
0ERROR 1: JPEGPreEncode:Strip/tile too large for JPEG
ERROR 1: WriteEncodedTile/Strip() failed.
ERROR 1: JPEGPreEncode:Strip/tile too large for JPEG
ERROR 1: WriteEncodedTile/Strip() failed.
ERROR 1: An error occured while writing a dirty block
...

इसलिए मैंने एक और वर्कफ़्लो की कोशिश की, और अपने सभी tif को jpeg (14 एमबी प्रत्येक) में परिवर्तित किया, एक vrt फ़ाइल का निर्माण किया और LZW संपीड़न के साथ इसका अनुवाद किया। लेकिन आउटपुट जियोटीफ लगभग 5 जीबी है।

क्या आप मुझे बता सकते हैं कि नौकरी करने के लिए सबसे अच्छा अभ्यास क्या है, और यदि 14 * 50Mb में से एक जियोटीफ़ प्राप्त करना संभव है?

मैंने इसे आज़माया नहीं, लेकिन मैंने इस tif को फ़ोटोशॉप में मर्ज करने के बारे में सोचा, फिर ऊपरी बाएँ / निचले निचले निर्देशांक के साथ फिर से जियोरैसफेर किया। इस वर्कफ़्लो के साथ मुझे लगता है कि मेरे पास 14 * 50 एमबी होंगे, लेकिन मुझे यकीन नहीं है। और मैं गाल्ड बेस्ट प्रैक्टिस सीखना चाहता हूं, इसलिए मैंने फिलहाल इसकी कोशिश नहीं की


काटने के लिए आ रहा है: यदि इनपुट 8 बिट के साथ tif है और डिफ़ॉल्ट रूप से निर्यात 32 बिट है, तो आपको गंभीर परेशानी होगी। इसलिए सुनिश्चित करें कि आप अपनी बाइट परिभाषा को बनाए रखें जैसा कि यह है। और याद रखें: पूर्ण tif प्रोब होगा। एक झगड़ा हमेशा आयताकार के रूप में 20x 50mb है

अगर मुझे समझ में आता है, तो इस स्क्रीनशॉट पर हरे रंग में इंगित संख्या को बाईं ओर और दाईं ओर समान होना चाहिए?

बिट्स

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

50 एमबी की 14 टिफ़ मूल रूप से 700 एमबी की 14 टीफ़्स थी जिसे मैंने गाल_ट्रांसलेट के साथ -को कम्प्रेस = जेपीईजी के साथ संसाधित किया। मैंने एमबी की संख्या को कम करने के लिए रेखापुंज को संकुचित किया, लेकिन शायद यह एक अच्छा विचार नहीं था?

यह स्क्रीनशॉट एक ही जियोटीफ़ (01.tif) के 2 गदल जानकारी का प्रतिनिधित्व करता है, स्क्रीनशॉट के बाईं ओर 700 एमबी के गैर-संकुचित Gtiff का गाल्डिफ़ो है, जो कम्पेटेस = जेपीईजी के साथ दाएं समान Gtiff को समाप्त करता है, इसलिए हरे रंग में अंतर के साथ 50 एमबी:

गैर-सेक और 01.tif फ़ाइल के gdalinfo सेक

मेरे अनुसार, एक्स्टेंट सही हैं क्योंकि क्यूजीस में यह डेटा और सैटेलाइट इमेजरी के अन्य स्रोत से मेल खाता है।

* यह मानते हुए कि आपकी इनपुट छवियों का आकार समान है, यह 20000 * 12000 पिक्सेल प्रति इनपुट चित्र बनाता है, जो 50 एमबी की छवि के लिए बड़ा है, हो सकता है कि आप मोज़ेक बनाते समय अपने समन्वय प्रणाली की सीमा पार कर रहे हों। *

मुझे यह समझने में यकीन नहीं है कि "हद पार करने" से आपका क्या मतलब है। लेकिन मैंने QGIS में अपने 5 Gb LZW को खोलने की कोशिश की, और हद अच्छी है, क्योंकि यह डेटा के अन्य स्रोत से मेल खाता है।

आपके उत्तर से मुझे एहसास होता है कि Gtiff का आकार एक जैसा नहीं है, क्या आपको लगता है कि यह विलय के बाद आकार के बढ़ने का कारण हो सकता है? क्योंकि गदल एक ही आकार की फाइल पसंद करती है। मैंने प्रत्येक Gtiff पर अपना आकार पाने के लिए एक gdalinfo बनाया, Gtiffs के आकार के बीच बहुत कम अंतर है:

02.tif Size is 19956, 11981
03.tif Size is 19959, 11993
04.tif Size is 19961, 11992
05.tif Size is 19958, 11993
06.tif Size is 19958, 11990
07.tif Size is 19956, 11984
08.tif Size is 19956, 11993
09.tif Size is 19958, 11993
10.tif Size is 19958, 11989
11.tif Size is 19958, 11985
12.tif Size is 19958, 11993
13.tif Size is 19959, 11993
14.tif Size is 19960, 11994

फिर आपको अपनी छवियों की पिक्सेल गहराई को देखना चाहिए: यदि आपका इनपुट बाइट्स में था,> तो आपको बाइट्स रखना चाहिए। gdal_translate -of Gtiff -ot Byte -co COMPRESS = LZW test.vrt test.tif

मैंने इस आदेश की कोशिश की लेकिन गदल ने मुझे बताया कि टिफ का आकार पार हो गया था।

Input file size is 79841, 59955
0...10...20...30...40...50..ERROR 1: TIFFAppendToStrip:Maximum TIFF file size exceeded. Use BIGTIFF=YES creation option.
ERROR 1: WriteEncodedTile/Strip() failed.

लेकिन अगर मुझे एक बड़ा झगड़ा पैदा करना है, तो यह मेरी समस्या का समाधान नहीं करता है क्योंकि यह 4 जीबी से अधिक है। क्या मेरे मामले में पिक्सेल की गहराई महत्वपूर्ण है? (नक्शे की एचडी तस्वीर, फिर भू-संदर्भ, डीईएम नहीं)

टिप्पणी 1: vrt बनाने से पहले अपनी छवियों को jpeg में बदलना मदद नहीं करता है और आप डेटा को ढीला कर सकते हैं।

अगर मैं थोड़ी सी जानकारी को ढीला कर दूं तो यह गंभीर नहीं है। मैं इसे ढीला नहीं करना चाहता, बेशक, लेकिन अगर मुझे इसकी कोई समस्या नहीं है। मुझे यकीन था कि अगर मैं jpeg के साथ काम करता हूं तो आउटपुट हल्का होगा, लेकिन एक निष्कर्ष के रूप में, यह सच नहीं है जब आउटपुट Gtiff होता है। तो यह एक अच्छा उपाय नहीं है। मैं इस समाधान को छोड़ देता हूं।

> टिप्पणी 2: vrt का उपयोग करना सहायक है: क्या आप सुनिश्चित हैं कि आपको GTiff की आवश्यकता है?

हां, मुझे एक Gtiff की आवश्यकता है, क्योंकि मुझे इसे एक मोबाइल एप्लिकेशन में आयात करना होगा, जिसे काम करने के लिए जियोटीफ़ इनपुट की आवश्यकता है (मुझे लगता है कि ऐप जियोस्पेशल पीडीएफ इनपुट भी ले सकता है, लेकिन मैं इसके साथ कभी काम नहीं करता, और मैं अपनी समस्या को समझना चाहता हूं गदल, क्योंकि यह पहली बार मेरे पास नहीं है)।


मैंने कोशिश की -co tiled = yes -co bigtiff = yes -co compress = jpeg -co photometric = ycbcr और मैंने कोशिश की -co झुका = Yes -co BLOCKXSIZE = 512 -co BLOCKAPZZE = 512

ये 2 कमांड अच्छी तरह से काम करते हैं, मेरा आकार ~ 700 एमबी है। यह वही है जिसकी मुझे उम्मीद थी।

अब मुझे एक और समस्या है: इसे QGIS द्वारा जल्दी नहीं खोला जा सकता है। मुझे 15 मिनट इंतजार करना होगा (लेकिन मैं QGIS से पहले टिफ को सफलतापूर्वक खोलने से पहले छोड़ देता हूं)। मुझे पता नहीं क्यों। और मेरे एंड्रॉइड ऐप में, यह काम नहीं करता है (शायद "टाइलेड = हां" का कारण)। मुझे अपने दम पर कुछ डॉक्टर पढ़ना है।


Use -co tiled = yes -co bigtiff = yes -co compress = jpeg -co photometric = ycbcr
user30184

जवाबों:


2

आपकी आउटपुट छवि में आपकी इनपुट छवियों के योग से अधिक पिक्सेल होंगे, लेकिन यह बड़े अंतर की व्याख्या नहीं करता है। मेरा सुझाव है कि आप अपनी छवियों की विशेषताओं को गालडिनफ़ो के आधार पर देखें, ताकि यह देखा जा सके कि किस संपीड़न का उपयोग किया जाता है और जांचें कि एक्स्टेंट सही हैं। (यह मानते हुए कि आपकी इनपुट छवियों का आकार समान है, यह 20000 * 12000 पिक्सेल प्रति इनपुट चित्र बनाता है, जो कि 50 एमबी की छवि के लिए बड़ा है, हो सकता है कि आप मोज़ेक बनाते समय अपने समन्वय प्रणाली की सीमा को पार कर रहे हों।) तब आप अपनी छवियों की पिक्सेल गहराई को देखें: यदि आपका इनपुट बाइट्स में था, तो आपको बाइट्स रखना चाहिए।

gdal_translate -of Gtiff -ot Byte -co COMPRESS=LZW test.vrt test.tif 

टिप्पणी 1: vrt बनाने से पहले अपनी छवियों को jpeg में बदलना मदद नहीं करता है (यह अगले चरण से पहले असम्पीडित होगा) और आप डेटा को ढीला कर सकते हैं।

टिप्पणी 2: vrt का उपयोग करना सहायक है: क्या आप सुनिश्चित हैं कि आपको GTiff की आवश्यकता है?

संपादित करें: आपकी छवियों के आकार के साथ कोई चमत्कार नहीं है, लेकिन आपको आउटपुट के रूप में टाइल वाले टिफ़ का उपयोग करना चाहिए ताकि आप अपने बड़े डेटा के साथ jpeg संपीड़न का उपयोग कर सकें (-co TILED = yes -co BLOCKXSIZE = 512 -co BLOCKYSIZE = 512 )। यदि यह बहुत बड़ा रहता है, तो एकमात्र उपाय यह है कि कम रिज़ॉल्यूशन पर रेज़लूशन के लिए गालडैप का इस्तेमाल किया जाए।


काटने के लिए आ रहा है: यदि इनपुट 8 बिट के साथ tif है और डिफ़ॉल्ट रूप से निर्यात 32 बिट है, तो आपको गंभीर परेशानी होगी। इसलिए सुनिश्चित करें कि आप अपनी बाइट परिभाषा को बनाए रखें जैसा कि यह है। और याद रखें: पूर्ण tif प्रोब होगा। एक झगड़ा हमेशा आयताकार के रूप में 20x 50mb है।
रिकार्डो

आपको 20000 x 12000 कहां से मिला? प्रश्न में दिखाया गया आउटपुट इनपुट इमेज का सुझाव देगा 79841 x 59955।
ईविल जीनियस

79841, 59955 इनपुट vrt का आकार है। लेकिन 5 पंक्तियाँ और 4 कॉलम हैं, इसलिए मैंने ~ 80000 को 4 और ~ 60000 से 5 से विभाजित किया। जैसा कि मैंने कहा, यह मानता है कि छवियों का आकार समान है और आकृति पर जैसे स्थित हैं।
राडौक्सु

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