2015-01-20 10 views
11

मैं नीचे पंक्तियों पर दिखाए गए रास्टर फ़ंक्शन का उपयोग कर रहा हूं। मेरी आखिरी रेखा कुछ आउटपुट पैदा करती है। उस आउटपुट में एक रेखा है जो dimensions : 240, 320, 76800 (nrow, ncol, ncell) कहती है। मैं उस छवि को दोबारा प्रिंट करना चाहता हूं लेकिन केवल 200 पंक्तियों और पहले 300 कॉलम कहूंगा। मैं उसे कैसे कर सकता हूँ? नीचे दूसरा अंतिम पंक्ति पूरी छवि भूखंडोंछवि रास्टर आर पैकेज - पृष्ठभूमि और सीमा और किंवदंती के बिना रास्टर प्रिंटिंग

f <- "pictures/image1-1421787394.jpeg" 
f 
r <- raster(f) 
plot(r); 
r 

============================= Update1

मैंने फसल वाली छवि को सहेजने के लिए png(filename = '~/x.png');par(mar=rep(0, 4), xpd = TRUE, oma=rep(0, 4),bty='n') ; plot(r,xlim=c(0,200),ylim=c(0,200),legend=FALSE,axes=FALSE); dev.off() किया था। मैं किंवदंती और अक्ष और काले बॉक्स से छुटकारा पाने में सक्षम था। लेकिन समस्या यह है कि सहेजी गई छवि में फसल वाले भाग से कहीं अधिक है - उदाहरण के लिए छवि के चारों ओर सफेद भाग। मैं केवल मूल के फसल वाले हिस्से को सहेजना चाहता हूं (छवि आकार 200 * 200 पिक्सेल रखें)। कृपया मुझे बताएं कि यह कैसे करें?

इसके अलावा, मैं एक लाल वर्ग को कैसे जोड़ सकता हूं जो उपरोक्त फसल वाले हिस्से से मूल छवि में मेल खाता है? मेरा मतलब है कि मैं मूल छवि के शीर्ष पर एक लाल वर्ग (केवल किनारों) प्राप्त करना चाहता हूं और फिर इसे (मूल छवि + वर्ग) को एक नई छवि के रूप में सहेजना चाहता हूं।

मैं यह कैसे कर सकता हूं?

Update2 ++++++++++++++++++++++++++++++++++++++++++++++++

दिखाने के लिए मैं क्या सफेद पृष्ठभूमि

भूखंडों नीचे अंतिम पंक्ति छवि क्रॉप मतलब repeatable उदाहरण जोड़ने। मैं चाहता हूं कि यह छवि 100 * 100 हो क्योंकि मेरी एक्सलिम और यलिम 100 हैं। लेकिन मुझे नीचे दी गई उदाहरण में दिखाए गए अनुसार एक सफेद पृष्ठभूमि दिखाई देती है। (आप पृष्ठभूमि नहीं देख सकते हैं लेकिन अगर आप अपनी मशीन पर कोड चलाने के लिए और छवि खोलते हैं, तो आप इसे देखेंगे।)

library(raster) 
r <- raster(nrow=240, ncol=320) 
values(r) <- 1:ncell(r) 
plot(r) 
plot(r,xlim=c(0,100),ylim=c(0,100),legend=FALSE,axes=FALSE,frame.plot=F) 

enter image description here

उत्तर

5

आप xlim और ylim की स्थापना करके यह कर सकते हैं:

plot(r,xlim=c(0,299),ylim=c(0,199)) 

[अद्यतन] सफेद पृष्ठभूमि से छुटकारा पाने के लिए, आपको useRaster=F पैरामीटर की कोशिश कर सकते हैं:

plot(r,xlim=c(0,100),ylim=c(0,100),legend=FALSE,axes=FALSE,frame.plot=F,useRaster=F) 
+0

क्या नई छवि (फसल) को सहेजने का कोई तरीका है? – user2543622

+0

निश्चित - करें 'png (filename =' ~/x.png '); साजिश (आर, xlim = ग (0200), ylim = ग (0200)); dev.off() '। आप विभिन्न प्रारूपों में छवि का उत्पादन करने के लिए 'pdf() 'या' jpeg() 'जैसे अन्य आदेश भी कर सकते हैं। –

+0

एक और सवाल: मैं getValues ​​() फ़ंक्शन का उपयोग कर मान प्राप्त करने की योजना बना रहा हूं। getValues ​​(आर) ठीक काम करता है। लेकिन मैं केवल फसल छवि के लिए मूल्य प्राप्त करना चाहता हूं। मैं xlim और ylim पैरामीटर के साथ conjuction में getValues ​​फ़ंक्शन का उपयोग कैसे कर सकता हूं? – user2543622

4

अच्छी तरह से अपने प्रश्न समझ में हैं, तो आप ग (240, 320, 1) के मंद (आर) के साथ एक RasterLayer आर है और आप प्रथम 200 पंक्तियां और 300 कॉलम के लिए है कि फसल के लिए और फिर बिना कि साजिश चाहते हैं सफेद जगह

हमेशा उदाहरण डेटा प्रदान करें। इस मामले में ऐसा करना आसान है।

library(raster) 
r <- raster(nrow=240, ncol=320) 
values(r) <- 1:ncell(r) 

पंक्तियों/स्तंभों द्वारा फसल के विभिन्न तरीके हैं। उदाहरण के लिए आप एक हद तक वस्तु बना सकते हैं और इसका उपयोग कर सकते हैं।

e <- extent(r, 1, 200, 1, 300) 
rc <- crop(r, e) 

एक और तरीका है (छोटे rasters आकार के लिए) अनुक्रमण और ड्रॉप = FALSE

rc <- r[1:200, 1:300, drop=FALSE] 

उपयोग करने के लिए एक नक्शा आप 'साजिश' या 'छवि' का उपयोग कर सकते बनाने के लिए किया जाएगा।शायद छवि अपनी पसंद (कम सफेद स्थान है, लेकिन कोई कथा)

image(rc) 
साजिश आप की साजिश रचने से पहले डिवाइस के आकार सेट कर सकते साथ

की अधिक है।

dev.new(height=nrow(r), width=ncol(r)) 
plot(rc, legend=FALSE) 

आप व्हाइटस्पेस से बचने के लिए पीएनजी जैसी फाइल को भी प्लॉट कर सकते हैं; कैसे आप इस तरह के माई

png('test.png', width=450, height=275) 
plot(rc) 
dev.off() 

अन्य तरीके इस से निपटने के लिए spplot का उपयोग शामिल है, या levelplot rasterVis पैकेज में

spplot(rc) 
library(rasterVis) 
levelplot(rc) 

पर लाल आयत प्राप्त करने के लिए के रूप में अपने 'par'ameters सेट पर निर्भर करता है मूल छवि

plot(r) 
plot(e, add=TRUE, col='red', lwd=2) 
+0

Update1 उत्तर तभी दें जब मैं png आदेश का उपयोग कर रहा हूँ क्या पैरामीटर को किसी भी पृष्ठभूमि से बचने के लिए सेट करना चाहिए? आपके उदाहरण में फसल की गई छवि 200 * 300 (हद तक कमांड के अनुसार) होने के बाद पीएनजी कमांड में आपके पास चौड़ाई = 450, ऊंचाई = 275 क्यों है? – user2543622

+0

भी जब मैं अपनी मूल छवि नीचे प्लॉट बाएं हाथ कोने 0,0 है। लेकिन जब मैं विस्तार करता हूं तो यह छवि के शीर्ष भाग पर एक क्षैतिज पट्टी के रूप में क्यों दिखाई देता है? क्या यह छवि के बाएं हिस्से में लंबवत बार नहीं होना चाहिए? – user2543622

+0

मुझे नहीं पता कि "किसी भी पृष्ठभूमि से बचें" से आपका क्या मतलब है। मैं किंवदंती को समायोजित करने के लिए चौड़ाई/ऊंचाई बदलता हूं। मुझे नहीं पता कि क्षैतिज और लंबवत बार से मेरा क्या मतलब है (मैं या तो नहीं देखता)। – RobertH

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