एक बड़े रेखापुंज ईसीडब्ल्यू फ़ाइल को क्लिप करने का सबसे अच्छा तरीका?


9

मैं एक बड़े ECW (नीचे विवरण) को क्लिप करने की कोशिश कर रहा हूं, लेकिन पूरी तरह से संसाधित होने के लिए रेखापुंज फ़ाइल बहुत बड़ी है।

नीचे ECW के कुछ विवरण

ड्राइवर: ECW / ERDAS कम्प्रेस्ड वेवलेट्स (SDK 5.0)

फ़ाइल का आकार: 50gb आकार 450000, 565081 पिक्सेल आकार: 0.15 0.15 रंग = RGB COMPRESSION_RATE_TARGET = 9 संस्करण = 2 बैंड की संख्या: 4

जिस क्षेत्र में मैं क्लिप करना चाहता हूं, वह मूल फ़ाइल का 1/5 हिस्सा है।

यहां उन तरीकों को बताया गया है जिन्हें मैंने बिना किसी सफलता के आजमाया है:

  1. इग्गी को टिफ़ / अन्य प्रारूपों में सहेजने के लिए आर्गिस का इस्तेमाल किया ... (मैंने जल्दी से हार मान ली)

  2. प्रयुक्त Qgis और उसके क्लिपर उपकरण ... फ़ाइल निर्माण लगभग 40% पर रुका रहा।

  3. QGis के अलावा अन्य विकल्पों के साथ OSGeo4W से बाहर gdal_translate का उपयोग किया। (यह सोचकर कोशिश की कि MAYBE Qgis का उपयोग न करने वाली कुछ मेमोरी को मुक्त कर देगा)

  4. इस्तेमाल किया gdal_retile यह सोचकर कि मैं छवि को टुकड़ों में काट दूंगा और जो मैं चाहता था उसे हड़प लूंगा। कमांड "gdal_retile -ps 10000 10000 -of ecw -tileIndex टाइल.shp -targetDir input.ecw यह भी जल्दी दुर्घटनाग्रस्त हो गया"

क्या किसी को कुछ पता है?

जानकारी के लिए मैं 16GB RAM के साथ i5-3470 3.2Ghz पर विंडोज़ 7 64 बिट्स चलाता हूं।

जवाबों:


5

अन्य विचार जो आप आजमा सकते हैं:

  1. -srcwin स्विच के साथ gdal_translate
  2. gdalwarp -cutline और -crop_to_cutline और -wm स्विचेस के साथ। अंतिम एक कैशिंग के लिए मेमोरी निर्दिष्ट करता है और आपको उन मुद्दों पर प्राप्त कर सकता है जिन्हें आपने QGIS में क्लिपर का उपयोग किया था (क्योंकि यह अनिवार्य रूप से एक ही फ़ंक्शन है)
  3. QGIS रेखापुंज कैलकुलेटर जिस क्षेत्र को आप चाहते हैं (क्लिपर की तुलना में सरल) की सीमा निर्धारित करता है।
  4. SAGA-> बहुभुज के साथ क्लिप ग्रिड - कौन जानता है, यह अधिक स्मृति कुशल हो सकता है।
  5. स्मृति में रेखापुंज के एक उपसमूह को पढ़ने और इसे बचाने के लिए पायथन और नेम्पी / साइंसपी का उपयोग करके एक कोड को कोड करें।

मुझे संदेह है कि एक बहुत ही साधारण फसल को करने के लिए (या तो रेखीय कैलकुलेटर या gdal_translate में -srcwin स्विच के साथ) बहुभुज के साथ फसल की तुलना में कम स्मृति भूख होगी, क्योंकि आपके पास कोई ज्यामिति जाँच और रूपांतरण नहीं है। विकल्प 5 को कम से कम मेमोरी का उपयोग करना चाहिए क्योंकि आप केवल वही पढ़ रहे हैं जिसकी आपको आवश्यकता है। पर एक नजर डालें इस ट्यूटोरियल यदि आप एक 'कैसे' (बिट पढ़ने और ब्लॉक द्वारा लिखने पर अनुकूलन) की जरूरत है।


जवाब के लिए धन्यवाद! मैं एसएजीए की कोशिश करूंगा और अगर यह काम नहीं करता है तो मैं नेम्पी के साथ जाऊंगा।
ब्लू

5

आप GDAL के उपकरण के साथ सीधे कटौती कर सकते हैं gdal_translate यदि आप रुचि के क्षेत्र के निर्देशांक जानना है, अगर इसकी भूसंदर्भित:

gdal_translate -projwin [ulx uly lrx lry] infile outfile  

यदि -srswinध्वज का उपयोग इस तरह नहीं किया जाता है:

gdal_translate -srcwin [xoff yoff xsize ysize] शिशु की पोशाक।

एक अन्य विकल्प 'वर्चुअल' रास्टर (कुछ किलोबाइट का) बनाने का है जो कि आपके प्रारंभिक डेटासेट पर, gdalbuildrt के साथ इंगित करता है

gdalbuildvrt -te [xmin ymin xmax ymax] infile outfile.vrt

दुर्भाग्य से आपको gdalbuildvrt का उपयोग करने के लिए एक जियॉर्फ़ेरेटेड फ़ाइल की आवश्यकता होगी।

क्लिप करने के बाद, आसान देखने के लिए पिरामिड बनाना न भूलें। निम्न आदेश DEFLATE (दोषरहित) एल्गोरिथ्म के साथ संपीड़ित बाहरी पिरामिड का निर्माण करेगा :

gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE outfile 2 4 8 16

अंतिम चरण के रूप में आपके आँकड़ों की गणना कर सकते हैं और साथ ही एक विशेष व्यावसायिक कार्यक्रम के साथ कुछ बेवकूफ समस्याओं से बचने के लिए:

gdalinfo -stats outfile

उत्तर के लिए धन्यवाद। मैंने एक आभासी रेखापुंज बनाया है और <code> gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE आउटफिट 2 4 8 16 </ code> चलाया है, मुझे यकीन नहीं है कि मुझे निम्न त्रुटि संदेश क्यों मिला है ERROR 1: गायब होने के कारण TIFF फ़ाइल नहीं बना सकता DEFLATE के लिए कोडेक। अवलोकन भवन विफल रहा।
ब्लू

यदि वे आपके मामले का वर्णन करते हैं, तो कीड़े -बग की जाँच करें : 8782 और ऑसगेव 4-बग: 382 । इस बीच, किसी भी संपीड़न एल्गोरिदम के बिना साक्षात्कार बनाने की कोशिश करें, या किसी अन्य को चुनें
13

ऐसा लगता है कि मैं इसे 2 चरणों में काम कर रहा था: gdaladdo -ro input.vrt 2 4 8 16तब gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE input.vrt 2 4 8 16। मेरा लक्ष्य ईसीडब्ल्यू के साथ समाप्त करना है, इसलिए मैंने कोशिश की gdal_translate -of ECW input.vrt output.ecw और निम्नलिखित त्रुटि हुई:0ERROR 6: GDALDriver::Create() ... no create method implemented for this format.
ब्लू

@blue ECW एक मालिकाना प्रारूप है और इसे विशेष उपचार की आवश्यकता है। कृपया पहले जांच लें कि क्या गदल ईसीडब्ल्यू में लिख सकता है gdalinfo --formats। यदि आप सूची में ECW नहीं देखते हैं, तो उन निर्देशों को आज़माएं: faunalia.pt/node/438
6:18 बजे

0

काम करने के लिए एक सीधी 'क्लिप' का उपयोग gdalwarpकरना चाहिए (मुझे पता है कि यह एक हीला-पुराना सवाल है: 18 महीने का IRL इंटरनेट वर्षों में एक भूवैज्ञानिक युग की तरह है)।

मेरे पास एक 70Gb एरियल (ECW, 94000x81000 पिक्सेल 10cm / px पर) है, और GDAL मनमाने ढंग से इसे एक आकृति के साथ क्लिप कर सकता है

gdalwarp -cutline [clipfile] -crop_to_cutline [infile] [outfile]

विंडोज कमांड-लाइन पर। (मुझे पता है कि इस समाधान के लिए हित के लक्ष्य क्षेत्र के लिए एक आकृति निर्माण की आवश्यकता है, लेकिन यह जीआईएस के लिए ज्ञात सबसे बड़ी चुनौती नहीं है)।

एक आधे-उपनगर के आकार का हिस्सा निकालने के लिए ~ 0.4sec लगता है; क्वार्टर में फ़ाइल को स्लाइस करने के लिए 4sec लेता है। मेरी मशीन के चश्मे नाटकीय रूप से अलग नहीं हैं (i7-4770 @ 3.4GHz, 16GB RAM, Win7-64 अल्टीमेट)।


गदलवारप का जिक्र पहले ही किया जा चुका था। प्रदर्शन और विशिष्ट उदाहरण छवि के आकार के बारे में जानकारी एक स्वागत योग्य है, लेकिन वास्तव में यह एक टिप्पणी होनी चाहिए gis.stackexchange.com/a/74450/108 (और कोड स्वरूपण के साथ कमांड लाइन के साथ एक सुझाए गए संपादन का स्वागत करना होगा। ; यह पढ़ने में आसान है)
मैट विल्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.