জিডিওয়াল্প দিয়ে ফাইলের আকার মুদ্রাস্ফীতি স্বাভাবিক?


19

বেশ কয়েকটি রেস্টার gdalwarpপ্রকল্পের মাধ্যমে -tapএবং বিন্যাস -থেকে-গ্রিডে সারিবদ্ধ করার পরে ( আমি) লক্ষ্য করেছি যে আউটপুট রাস্টারগুলি মূল রাস্টারদের তুলনায় উল্লেখযোগ্য পরিমাণে বড় ছিল। মোটামুটি পুঙ্খানুপুঙ্খ ওয়েব অনুসন্ধানের ফলে এই ট্র্যাক সমস্যাটি দেখা দিয়েছে :

ফ্র্যাঙ্ক ওয়ারমারডাম কারণটির ব্যাখ্যা দিয়েছিলেন:

"সতর্কতার সাথে পর্যালোচনা করলে, প্রশ্নের মধ্যে থাকা ফাইলের পার্থক্য কারণ জিডিফল্ড্যাট্যাসেট :: ক্রিয়েটকপি? () এর মধ্যে থেকে আউটপুট ফাইলটি লেখার জন্য gdal_translate টিআইএফএফআরাইটসেক্লাইন () ইন্টারফেস ব্যবহার করে এবং এটি কেবলমাত্র চূড়ান্ত 'স্ট্রিপ'-এর মতোই লেখেন চিত্রের ক্ষেত্রটি সম্পূর্ণ করার জন্য ফাইলটি প্রয়োজন But তবে gdalwarp ব্লোকিও ইন্টারফেসের মধ্য দিয়ে যায় যা সম্পূর্ণ চূড়ান্ত স্ট্রিপ, এমনকি সেই অংশটিও ফাইলের শেষের দিকে পড়ে writes "

এই ট্র্যাক ইস্যুটি years 7 বছর পুরনো, তবে আমি জানি যে gdalwarp২০০৯ সাল থেকে জিডিএল ইউটিলিটিগুলিতে কিছু পরিবর্তন হয়েছে। আমি জানতে চাই যে উপরের যুক্তিটি এখনও ধরে আছে এবং যদি ফাইল আকারের মূল্যস্ফীতিটি আমি দেখছি "স্বাভাবিক"। এখানে "স্বাভাবিক" শব্দটির অর্থ উদ্বেগজনক বা প্রত্যাশিত হিসাবে নেওয়া যেতে পারে তবে আরও গুরুত্বপূর্ণ: প্রভাবগুলি হ্রাস করার জন্য আউটপুট রাস্টার ফাইলের আকার হ্রাস করার জন্য এমন কিছু কি করা যেতে পারে? নীচে ফাইল আকারের মুদ্রাস্ফীতিটির আমি একটি টেবিল দিচ্ছি।

Input File Size (bytes)     Output File Size (bytes)    Inflation
1437380431                  1698334217                   18%
1428001178                  1698334433                   19%
  41683165                   137036637                  228%

ইনপুট টিআইএফএফ ফাইলগুলি আর্কজিআইএস-এ তৈরি করা হয়েছিল এবং এভাবে বহিরাগত ওয়ার্ল্ড ফাইলস, এক্সএমএল এবং ডিবিএফ ফাইল রয়েছে তবে এগুলি ফাইলের আকারে পার্থক্য তৈরি করে না। gdalwarpআমি এই সমস্ত ক্ষেত্রে এটি ব্যবহার করেছি বলে এখানে একটি নমুনা কল রয়েছে; প্রকৃত মৃত্যুদন্ডটি পাইথন দ্বারা পরিচালিত হয়েছিল subprocess( subprocess.Popen):

$ gdalwarp -tap -tr 30 30 -t_srs "+proj=aea +lat_1=20 +lat_2=60 +lat_0=40 +lon_0=-96 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs" -co "COMPRESS=LZW" input_file.tif output_file.tif

আমি বুঝতে পারি যে বিরল ক্ষেত্রে কম্প্রেশন একটি বৃহত্তর ফাইল তৈরি করে তবে এলজেডাব্লু সংক্ষেপণ ছাড়াই প্রভাবটি একই is সারণীতে অনুপাতগুলি এলজেডব্লিউ সংকোচনের সাথে রয়েছে।

উত্তর:


30

এটি একটি সুপরিচিত এবং দীর্ঘকালীন সমস্যা যে gdalwarp সংকোচনের সাথে ভাল আচরণ করে না । সমাধানটি কম্প্রেশন ছাড়াই gdalwarp হয় তারপরে সংক্ষেপণের সাথে gdal_translate।

দুটি দীর্ঘ প্রক্রিয়া এড়াতে, প্রথমে জিআরডাল্পটি ভিআরটি থেকে প্রথমে, এটি সত্যই দ্রুত, তারপরে gdal_translate -co কমপ্রেস = lzw বিকল্পের সাহায্যে।

অর্থাত

$ gdalwarp -tap -tr 30 30 -t_srs "etc..." -of vrt input_file.tif output_file.vrt
$ gdal_translate -co compress=LZW output_file.vrt output_file.tif

জিডিএল 2 এক্স ব্যবহার করে আপনি ভিআরটি লিখে /vsistdoutএবং পাইপ gdal_translateকরে /vsistdinএবং ইনপুট হিসাবে নির্দিষ্ট করে একে একক ক্রিয়ায় একত্রিত করতে পারেন । উদাহরণ স্বরূপ:

gdalwarp -q -t_srs EPSG:32611 -of vrt input_file.tif /vsistdout/ | gdal_translate -co compress=lzw  /vsistdin/ output_file.tif

আপনার সমাধানের জন্য ধন্যবাদ, যা আমি সফলভাবে একটি পূর্ণসংখ্যার ওভারফ্লো ত্রুটি এড়াতে ব্যবহার করেছি। তবে এটি ত্রুটিটি সমাধান করার সময়, আমি আমার পাহাড়ের এক অদ্ভুত প্যাটার্ন পেয়েছি। আমি এখানে একটি পৃথক প্রশ্ন পোস্ট করেছি, আপনি যদি একবার খেয়াল
টিম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.