2 প্রদত্ত রাস্টার স্তরগুলির অভিন্ন সামগ্রী রয়েছে কিনা তা দেখার জন্য কি কোনও উপায় আছে ?
আমাদের কর্পোরেট শেয়ারড স্টোরেজ ভলিউমটিতে আমাদের একটি সমস্যা রয়েছে: এটি এখন এত বড় যে পুরো ব্যাক আপ নিতে 3 দিনের বেশি সময় লাগে। প্রাথমিক তদন্তে প্রকাশ পেয়েছে যে সবচেয়ে বড় স্পেস গ্রাসকারী অপরাধীরা অন / অফ রেস্টারদেরকে সত্যই সিসিআইটিটি সংকোচনের সাথে 1-বিট স্তর হিসাবে সংরক্ষণ করতে হবে।
এই নমুনা চিত্রটি বর্তমানে 2 বিট (তাই 3 সম্ভাব্য মান) এবং এলজিডাব্লু সংক্ষেপিত টিফ হিসাবে সংরক্ষণ করা হয়েছে, ফাইল সিস্টেমে 11 এমবি। 1 বিট রূপান্তরিত (সুতরাং 2 সম্ভাব্য মান) এবং সিসিআইটিটি গ্রুপ 4 সংক্ষেপণের প্রয়োগের পরে আমরা এটিকে 1.3 মেগাবাইটে নামিয়ে আনব, সঞ্চয়ের বিশালতার প্রায় পুরো ক্রম।
(এটি আসলে খুব ভাল আচরণের নাগরিক, 32 বিট ফ্লোট হিসাবে অন্যদেরও সংরক্ষণ করা আছে!)
এটি দুর্দান্ত খবর! তবে এটি প্রয়োগ করতে প্রায় 7,000 চিত্র রয়েছে। এগুলি সংকোচনের জন্য কোনও স্ক্রিপ্ট লেখা সহজ হবে:
for old_img in [list of images]:
convert_to_1bit_and_compress(old_img)
remove(old_img)
replace_with_new(old_img, new_img)
... তবে এটি একটি গুরুত্বপূর্ণ পরীক্ষাটি হারিয়েছে: নতুন সংকোচিত সংস্করণটি কি সামগ্রী-অভিন্ন?
if raster_diff(old_img, new_img) == "Identical":
remove(old_img)
rename(new_img, old_img)
এমন কোনও সরঞ্জাম বা পদ্ধতি রয়েছে যা চিত্র-এ-এর সামগ্রীটি স্বয়ংক্রিয়ভাবে (ডিস্ক) প্রমাণ করতে পারে যে চিত্র-বি এর সামগ্রীর সাথে মূল্য-অভিন্ন?
আমার কাছে আরকিজিআইএস 10.2 এবং কিউজিআইএস এ অ্যাক্সেস রয়েছে তবে ওভাররাইট করার আগে যথাযথতা নিশ্চিত করার জন্য এই সমস্ত চিত্র নিজে নিজেই পরিদর্শন করার প্রয়োজনকে বাধা দিতে পারে তার চেয়ে অন্য যে কোনও কিছুর জন্য আমি উন্মুক্ত। এটা তোলে ভুল করে রূপান্তর করতে ভয়ঙ্কর হতে হবে এবং একটি চিত্র যে সত্যিই ওভাররাইট করবে হয়নি এটা মান বন্ধ / উপর বেশী। সংগ্রহ এবং উত্পন্ন করতে হাজার হাজার ডলার ব্যয় হয়।
আপডেট: সবচেয়ে বড় অপরাধীরা 32 বিট ফ্লোট যা একপাশে 100,000 পিক্সের অবধি, তাই GB 30 গিগাবাইট কমপ্রেসড।
NoData
কথোপকথনে যথাযথ পরিচালনা পরিচালনা নিশ্চিত করার জন্য ধন্যবাদ ।
len(numpy.unique(yourraster)) == 2
, তবে আপনি জানেন যে এর 2 টি অনন্য মান রয়েছে এবং আপনি নিরাপদে এটি করতে পারেন।
numpy.unique
অন্যান্য পার্থক্য স্থির কিনা তা পরীক্ষা করার অন্যান্য উপায়ের তুলনায় গণনাগতভাবে (সময় এবং স্থান উভয় ক্ষেত্রে উভয়ই) ব্যয়বহুল হতে চলেছে। যখন দুটি খুব বড় ভাসমান পয়েন্ট রাস্টারগুলির মধ্যে একটি পার্থক্যের মুখোমুখি হয় যা অনেক পার্থক্য প্রদর্শন করে (যেমন একটি ক্ষতিগ্রস্থ সংকোচিত সংস্করণের সাথে একটি আসল তুলনা করা) তখন এটি চিরতরে ডুবে যায় বা পুরোপুরি ব্যর্থ হয়।
gdalcompare.py
দুর্দান্ত প্রতিশ্রুতি দেখিয়েছেন ( উত্তর দেখুন )
raster_diff(old_img, new_img) == "Identical"
হ'ল পরীক্ষা করা হবে যে পার্থক্যের নিখুঁত মানের জোনাল সর্বাধিক 0 সমান, যেখানে অঞ্চলটি পুরো গ্রিডের পরিমাণের উপরে নেওয়া হয়। এটি কি আপনি খুঁজছেন এমন সমাধান? (যদি তাই হয়, এটা পরিশ্রুত করা চেক করার জন্য যে কোন NoData মান সামঞ্জস্যপূর্ণ, খুব প্রয়োজন হবে।)