अनुवाद कैसे करें (पुनरावृत्ति) एक .tif रेखापुंज परत?


10

मैं अपनी थीसिस (पर्यावरण भौतिकी) के लिए क्यूजीआईएस का उपयोग करना शुरू कर रहा हूं और स्वीकार करना होगा कि मैं इसके बारे में बहुत अनभिज्ञ हूं - मैंने हमेशा गणितज्ञ या मतलाब का उपयोग किया है।

मेरी समस्या यह है: मेरे पास एक रेखापुंज परत है, .tif प्रारूप में, जो गलत है (मुझे इसे 100 मी द्वारा दक्षिण और पश्चिम स्थानांतरित करने की आवश्यकता है)। मुझे इसका (अनुवाद) करने की आवश्यकता है, और मुझे इस बारे में बिल्कुल पता नहीं है कि मैं यह कैसे कर सकता हूं।

मैंने Affine रूपांतरण की कोशिश की है, लेकिन यह काम नहीं करता है (मुझे एक इनपुट परत का चयन नहीं करने देता है); मैंने यह भी पढ़ा है कि पायथन में एक रेखापुंज (पुनरावृत्ति) कैसे करें? लेकिन मुझे स्वीकार करना होगा कि मैं इसके बारे में ज्यादा नहीं समझ पाया हूं, मैंने कई बार कोशिश की लेकिन अजगर से अच्छा नहीं हूं।


मुझे लगता है कि .tif परत किसी तरह से भू-संदर्भित है? मेटाडेटा में किस समन्वय संदर्भ प्रणाली को कहा गया है? काफी संभावना है, आपको केवल सीआरएस सेटिंग्स को सही करने की आवश्यकता है और परत संरेखित होगी।
UnderDark

टिप्पणी के लिए धन्यवाद! हाँ, यह जियोफेरेन्स्ड है, और कोऑर्डिनेट सिस्टम सही है (WGS 84 / UTM ज़ोन 32N) .. इसलिए परत को बदलने की जरूरत ...

Affine Transform प्लगइन केवल वेक्टर लेयर्स के लिए है।
आंद्रे जे

जवाबों:


9

आह! मैं इसे करने में कामयाब रहा, जो कि लिंक की गई चर्चा में कहा गया है .... ( पायथन में एक रेखापुंज कैसे करें? ) ;) फिर भी धन्यवाद! :)

मैंने QGIS पायथन कंसोल से GDAL / पायथन का उपयोग किया! :)

मैंने जो लिखा था वह था:

from osgeo import gdal
gdal.AllRegister()
rast_src = gdal.Open('filename.tif', 1 )
gt = rast_src.GetGeoTransform()
gtl = list(gt)
gtl[0] -= 200
gtl[3] -= 100
rast_src.SetGeoTransform(tuple(gtl))
rast_src = None

EDIT: "gdall.AllRegister ()" को "gdal.AllRegister ()" में बदल दिया।


कोड में एक अक्षर टाइपो है: gdall.AllRegister दो "एल" के साथ वर्तनी नहीं माना जाता है। (यह जनरेट करता है: "'gdall' परिभाषित नहीं है") दुर्भाग्य से मैं इसे संपादित नहीं कर सकता क्योंकि संपादन कम से कम 6 महीने लंबा होना आवश्यक है।
Smerla

इस जवाब ने वास्तव में मेरी मदद की! केवल एक चीज जो मैं जोड़ना चाहूंगा, वह यह है कि किसी print(gtl)फ़ंक्शन को टाइप करके ट्रांसफ़ॉर्म करने से पहले अपनी इकाइयों को सुनिश्चित करें और जांचें । उदाहरण के लिए, मेरा रेखापुंज dd mm ss में था, और इसलिए यह पता लगाने के लिए कि दशमलव डिग्री में कितने मीटर हैं, मैंने यहां उपलब्ध तालिका (देशांतर से अक्षांश के लिए आसान!) का उपयोग किया: मीटर को दशमलव डिग्री में बदलने के लिए तालिका
जस्टिन एरे

1

Rasmoverप्लगइन आप क्या चाहते हैं क्या करना चाहिए।

आपको प्लगइन सूची में इसे प्राप्त करने के लिए प्रयोगात्मक प्लगइन्स की अनुमति है।

परिणाम एक आभासी रेखापुंज फ़ाइल है, जिसे आप ज़रूरत पड़ने पर मापदंडों को समायोजित करने के लिए एक पाठ संपादक के साथ संपादित कर सकते हैं।


यह नहीं मिल रहा है ... शायद 3.6 के लिए उपलब्ध नहीं है?
फोबरबार्के

1
प्लगइन github.com/geodrinx/rasmover पर पाया जा सकता है , लेकिन हाल ही में कोई गतिविधि नहीं। Osgeo-org.1560.x6.nabble.com/… और gis.stackexchange.com/questions/274074/… देखें । शायद Rasterbender प्लगइन इसे प्रतिस्थापित कर सकता है।
आंद्रे जे

0

विशेष मामले में जहां रेखापुंज में पहले से ही एक UTM प्रक्षेपण है, और आप इसे अनुदैर्ध्य रूप से दूसरे UTM क्षेत्र में ले जाना चाहते हैं, मैंने पाया कि gdal_translateयह कर सकता है। उदाहरण के लिए, इनपुट रेखापुंज किसी भी UTM ज़ोन Z में है, और आप इसे UTM ज़ोन 26 (यानी, सबसे अधिक अक्षांश पर अटलांटिक महासागर) में ले जाना चाहते हैं:

gdal_translate -a_srs '+proj=utm +zone=26 +datum=WGS84' input.tif output.tif

मूल और कोने मॉडल स्पेस यूनिट में समन्वय करते हैं, जैसा कि रिपोर्ट किया गया gdalinfoहै, वैसा ही रहता है। लेकिन कोने अक्षांश / देशांतर परिवर्तन में समन्वय करते हैं, और रेखापुंज वास्तव में दुनिया के दूसरे हिस्से में चले गए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.