2013-10-08 6 views
5

मैं परिभाषित ग्रिड सेल में एक उच्च रिज़ॉल्यूशन से एक कम रिज़ॉल्यूशन (अलग-अलग सीमा के साथ) को रास्टर को दोहराना चाहता हूं। स्नैपिंग के लिए इनपुट के रूप में मौजूदा रास्टर फ़ाइल का उपयोग करने का कोई तरीका है?मौजूदा ग्रिड में रास्टर स्नैपिंग का पुन: नमूना कैसे करें?

रास्टर पैकेज में, aggregate और resample पर्याप्त प्रतीत होता है लेकिन मुझे यह नहीं पता कि यह कैसे किया जाए।

+0

क्या आपको एक अलग ग्रिड पर इंटरपोलेट करने की आवश्यकता है, या क्या? सभी 'रास्टर' फाइलें, जहां तक ​​मुझे पता है, एक समान आयताकार ग्रिड पर डेटा परिभाषित करते हैं, इसलिए "मौजूदा रास्टर फ़ाइल का उपयोग करके" का अर्थ केवल "एमएक्सएन से एलएक्सके ग्रिड तक एकत्रित या इंटरपोल करना होगा।" –

+0

प्रश्न में स्पष्टता की कमी थी और इसका कोई उदाहरण नहीं था। –

उत्तर

1

आप एल कर सकते हैं system के साथ बाहरी कमांड को लॉन्च करें और gdal_translate या gdal_warp कमांड पर कॉल करें। इस कोर्स के GDAL उपयोगिताओं

की स्थापना की आवश्यकता
+0

विचार के लिए धन्यवाद लेकिन gdal_translate का उपयोग इंटरपोलेशन विधि को नियंत्रित करने की अनुमति नहीं देता है। मुझे gdalwarp का उपयोग कर समाधान मिला – Wraf

6

यदि आप एक प्रक्षेपण और संकल्प में रास्टर हैं तो आपको projectRaster का उपयोग कर सकते हैं और आपको एक अलग विशेष रिज़ॉल्यूशन और प्रोजेक्शन में आउटपुट की आवश्यकता है।

from तर्क आपका उच्च रिज़ॉल्यूशन रास्टर है और to तर्क आपका निम्न रास्टर रास्टर है। आप स्पष्ट डेटा के लिए एकत्रीकरण (यानी निरंतर डेटा के लिए bilinear और ngb (निकटतम पड़ोसी) के लिए सही विधि का चयन सुनिश्चित करें।

require(raster) 

# Projection info 
proj1 <- CRS("+proj=laea +lon_0=20 +lat_0=5 +ellps=sphere +unit=km +to_meter=1e3") 
proj2 <- CRS("+proj=longlat +datum=WGS84 +ellps=WGS84") 
# High res raster 
r1km <- raster(nrows = 1515 , ncols = 2300 , xmn = -4000 , xmx = -1700 , ymn = -15 , ymx = 1500 , crs = proj1) 

# Low res raster 
r5km <- raster(nrows = 303 , ncols = 460 , xmn = -20 , xmx = -5 , ymn = 4 , ymx = 15 , crs = proj2) 

# Set some values in high res raster 
pts <- rasterToPoints(r1km) 
values(r1km) <- 0.01*pts[,1] + sin(0.02*pi*pts[,2]) 

# Reproject using the attributes of the low res raster for output 
out <- projectRaster(from = r1km , to = r5km , method = "bilinear") 

# Plot - extent of second raster doesn't fully cover first so some data is missing 
par(mfrow = c(1,2)) 
plot(r1km) 
plot(out) 

enter image description here

अपने इनपुट और आउटपुट डेटा संकल्प में छोड़कर ही कर रहे हैं, तो आप कुल उपयोग कर सकते हैं ...

# If same extent and resolution require use aggregate 
r1 <- raster(system.file("external/rlogo.grd", package="raster")) 
r5 <- aggregate(r1 , fact = 5 , method = "bilinear") 
par(mfrow = c(1,2)) 
plot(r1) 
plot(r5) 

enter image description here

+1

धन्यवाद लेकिन मेरी दो फाइलें एक ही प्रक्षेपण में हैं, इसलिए परियोजना काम नहीं करती है। कुल के बारे में, मैं ग्रिड को स्नैप करने के लिए सीधे एक फ़ाइल निर्दिष्ट नहीं कर सकता, क्योंकि मैं "तथ्य" तर्क का उपयोग नहीं करना चाहता लेकिन एक फ़ाइल? – Wraf

+0

@ वाफ आपको वास्तव में एक पुनरुत्पादित उदाहरण प्रदान करना चाहिए जो दिखाता है कि आपने क्या किया है। मुझे नहीं लगता कि मैं आपकी आवश्यकताओं पर इस अनुमान लगाने पर और अधिक प्रयास करता हूं। कृपया पढ़ें [** एक महान पुनरुत्पादनीय उदाहरण कैसे बनाएं **] (http://stackoverflow.com/q/5963269/1478381) और तदनुसार अपना प्रश्न अपडेट करें! –

+0

धन्यवाद। दरअसल, जब कोई पुन: उत्पन्न नहीं किया जाता है तो उत्तर खोजने में आसान नहीं होता है। लेकिन डेटासेट बड़े पैमाने पर उपयोग किया जाता है और ऐसा उदाहरण बनाना इतना आसान नहीं है। – Wraf

1

यह समाधान काम करता है:

system(paste("gdalwarp" 
,paste(dir_path,"fileHR.tif",sep="") 
,paste(dir_path,"fileLR.tif",sep=""),sep=" ")) 

जहां dir_path निर्देशिका है जहाँ आप फाइल जमा हो जाती है है, fileHR.tif उच्च संकल्प फाइल है, fileLR.tif कम resoltion फ़ाइल है ।

संबंधित मुद्दे