मैं इस तरह से 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 एमबी:
मेरे अनुसार, एक्स्टेंट सही हैं क्योंकि क्यूजीस में यह डेटा और सैटेलाइट इमेजरी के अन्य स्रोत से मेल खाता है।
* यह मानते हुए कि आपकी इनपुट छवियों का आकार समान है, यह 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 से पहले टिफ को सफलतापूर्वक खोलने से पहले छोड़ देता हूं)। मुझे पता नहीं क्यों। और मेरे एंड्रॉइड ऐप में, यह काम नहीं करता है (शायद "टाइलेड = हां" का कारण)। मुझे अपने दम पर कुछ डॉक्टर पढ़ना है।