আমার প্রস্থ এবং উচ্চতা 94000x71680 এর সাথে আকারের 1GB (.টিফিট) এর একটি চিত্র রয়েছে। আমি এই চিত্রটি 20000X20000 টাইলস হিসাবে কাটাতে চাই যাতে আমি তাদের প্রক্রিয়া করতে পারি।
কিভাবে আমি এটি করতে পারব?
আমার প্রস্থ এবং উচ্চতা 94000x71680 এর সাথে আকারের 1GB (.টিফিট) এর একটি চিত্র রয়েছে। আমি এই চিত্রটি 20000X20000 টাইলস হিসাবে কাটাতে চাই যাতে আমি তাদের প্রক্রিয়া করতে পারি।
কিভাবে আমি এটি করতে পারব?
উত্তর:
আমি দুটি সমাধান প্রস্তাব করছি: প্রথমটি কিউজিআইএস ব্যবহার করে, দ্বিতীয়টি পাইথন (জিডিএল) ব্যবহার করে।
কিউজিসে আপনি একটি ভিআরটি মোজাইক তৈরি করতে পারেন।
দয়া করে এই পদ্ধতিটি অনুসরণ করুন (নীচের চিত্রটি দেখুন):
Save As...
;Create VRT
বিকল্পটি পরীক্ষা করুন ;OK
বোতাম।উদাহরণস্বরূপ, এই নমুনা রাস্টার উপরের কথোপকথনের পরামিতিগুলি ব্যবহার করে (আমি যে প্যারামিটারগুলি সেট করেছি তা এলোমেলোভাবে বেছে নেওয়া হয়):
চার ধাপে নির্দিষ্ট করা পথে 100 টি টাইল উত্পন্ন করবে:
এগুলি কিউজিআইএস-এ লোড করা হচ্ছে, তারা এ জাতীয় দেখাচ্ছে:
@ বাগম্যানোট 123 মন্তব্যগুলিতে সঠিকভাবে বলেছে, ফলাফলটি কেবল অদ্ভুত দেখাচ্ছে কারণ প্রতিটি চিত্রের শৈলী চিত্র প্রতি মানগুলির বন্টনের সাথে নিজেকে ফিট করে (তবে ডেটা পুরোপুরি ঠিক আছে)।
একই ফলাফলটি পাওয়ার আরেকটি উপায় হ'ল জিডিএল ( জিডিএল_ট্রান্সলেট ) ব্যবহার ।
উপরে বর্ণিত একই উদাহরণের রেফারেন্স সহ আপনি এই স্ক্রিপ্টটি ব্যবহার করতে পারেন:
import os, gdal
in_path = 'C:/Users/Marco/Desktop/'
input_filename = 'dtm_5.tif'
out_path = 'C:/Users/Marco/Desktop/output_folder/'
output_filename = 'tile_'
tile_size_x = 50
tile_size_y = 70
ds = gdal.Open(in_path + input_filename)
band = ds.GetRasterBand(1)
xsize = band.XSize
ysize = band.YSize
for i in range(0, xsize, tile_size_x):
for j in range(0, ysize, tile_size_y):
com_string = "gdal_translate -of GTIFF -srcwin " + str(i)+ ", " + str(j) + ", " + str(tile_size_x) + ", " + str(tile_size_y) + " " + str(in_path) + str(input_filename) + " " + str(out_path) + str(output_filename) + str(i) + "_" + str(j) + ".tif"
os.system(com_string)
স্পষ্টতই আপনার নির্দিষ্ট ক্ষেত্রে মানগুলি মানিয়ে নেওয়া দরকার।
বিভক্ত হবে না
আপনি gdalbuildvrt , আপনি ভার্চুয়াল টাইলস তৈরি করতে পারেন যা কেবলমাত্র আপনার ডিস্কে কয়েকটি বাইট ব্যবহার করবে। তারপরে আপনি বেশিরভাগ সফ্টওয়্যার ব্যবহার করতে পারেন যা আপনার প্রসেসিং সম্পাদন করতে আপনার ভিআরটি'কে ইনপুট হিসাবে গ্রহণ করবে।
বিকল্পভাবে, আমি বরং এমন একটি সরঞ্জামের সন্ধান করব যা বিভক্তির চেয়ে 1 জিবি চিত্রের সাথে কাজ করতে পারে এবং একটি চিত্রকে মার্জ করে। উদাহরণস্বরূপ, ওটিবির বড় চিত্র সহ স্ট্যান্ডার্ড (এবং কখনও কখনও উন্নত) চিত্র প্রসেসিংয়ের সর্বাধিক ক্ষমতা রয়েছে। আপনি পাইথনের জন্য ওটিবি মোড়ানো বা কিউজিআইএস বা কমান্ড লাইন থেকে চালাতে পারেন run
বিভক্ত রাস্টার সরঞ্জামটি ব্যবহার করে , আপনি প্রতিটি টাইলের আকার বা টাইলের সংখ্যা সহ বিভাগের কয়েকটি পদ্ধতির ভিত্তিতে একটি রাস্টারকে টাইলগুলিতে বিভক্ত করতে পারেন ।
আরো দেখুন ArcGIS মধ্যে বিভাজন রাস্টার
জিডিএল ব্যবহার করে অন্য একটি সমাধান হ'ল জিডিএল_টাইল.পি সরঞ্জাম:
mkdir image_tiles
gdal_retile.py -v -r bilinear -levels 1 -ps 20000 20000 -co "TILED=YES" -co "COMPRESS=JPEG" -targetDir image_tiles big_input_image.tif
আরও তথ্যের জন্য দেখুন: http://www.gdal.org/gdal_retile.html