मेरे पास 1GB (.tif) आकार की एक छवि है, जिसकी चौड़ाई और ऊंचाई 94000x71680 है। मैं इस छवि को 20000X20000 टाइलों में बदलना चाहूंगा ताकि मैं उन्हें संसाधित कर सकूं।
मैं यह कैसे कर सकता हूँ?
मेरे पास 1GB (.tif) आकार की एक छवि है, जिसकी चौड़ाई और ऊंचाई 94000x71680 है। मैं इस छवि को 20000X20000 टाइलों में बदलना चाहूंगा ताकि मैं उन्हें संसाधित कर सकूं।
मैं यह कैसे कर सकता हूँ?
जवाबों:
मैं दो समाधान प्रस्तावित करता हूं: पहला QGIS का उपयोग करने वाला, दूसरा पायथन (GDAL) का उपयोग करने वाला।
QGIS में आप एक VRT मोज़ेक बना सकते हैं।
कृपया इस प्रक्रिया का पालन करें (नीचे दी गई छवि देखें):
Save As...
;Create VRT
विकल्प की जांच करें ;OK
बटन।उदाहरण के लिए, इस नमूना रेखापुंज पर उपरोक्त संवाद में मापदंडों का उपयोग (मेरे द्वारा निर्धारित पैरामीटर यादृच्छिक रूप से चुने गए हैं):
चरण 4 में निर्दिष्ट पथ में 100 टाइलें उत्पन्न करेगा:
उन्हें QGIS में लोड कर रहे हैं, वे इस तरह दिखते हैं:
जैसा कि @ Bugmenot123 ने टिप्पणियों में सही कहा है, परिणाम अजीब लगता है, क्योंकि प्रत्येक छवि की शैली प्रति छवि मूल्यों के वितरण के लिए खुद को फिट करती है (लेकिन डेटा पूरी तरह से ठीक है)।
समान परिणाम प्राप्त करने का दूसरा तरीका GDAL ( gdal_translate ) का उपयोग करना है ।
ऊपर वर्णित समान उदाहरण के संदर्भ में, आप इस स्क्रिप्ट का उपयोग कर सकते हैं:
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 , आप वर्चुअल टाइल बना सकते हैं जो केवल आपकी डिस्क पर कुछ बाइट्स का उपयोग करेगी। तब आप अधिकांश सॉफ्टवेयर्स का उपयोग कर सकते हैं जो आपके प्रसंस्करण को निष्पादित करने के लिए आपके vrt के इनपुट के रूप में लेंगे।
वैकल्पिक रूप से, मैं एक ऐसे उपकरण की तलाश करूँगा जो 1Gb छवि के साथ विभाजन और छवि को मिलाने के साथ काम कर सके। उदाहरण के लिए, OTB में बड़ी छवियों के साथ मानक (और कभी-कभी उन्नत) छवि प्रसंस्करण के लिए अधिकांश क्षमताएं हैं। आप पायथन के लिए ओटीबी को लपेट सकते हैं या इसे क्यूजीआईएस से या कमांड लाइनों से चला सकते हैं।
स्प्लिट रेस्टर टूल का उपयोग करके , आप विभाजन के कुछ तरीकों के आधार पर एक टाइल में एक रेखापुंज को विभाजित कर सकते हैं जिसमें प्रत्येक टाइल का आकार या टाइलों की संख्या शामिल है ।
आर्कगिस में स्प्लिटिंग रैस्टर भी देखें
GDAL का उपयोग करने वाला एक अन्य उपाय है gdal_retile.py टूल:
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