2012-09-05 6 views
5

मैं एक netcdf फ़ाइल है कि मैं सिर्फ कल्पना करने के लिए मिट्टी गहराई नक्शा करना चाहते हैंnetcdf फ़ाइल से मानचित्र को कैसे विज़ुअलाइज़ करें?

[1] "file C:\\Users\\SoilDepth-gswp.nc has 3 dimensions:" 
    [1] "x Size: 360" 
    [1] "y Size: 150" 
    [1] "land Size: 15238" 
    [1] "------------------------" 
    [1] "file C:\\SoilDepth-gswp.nc has 3 variables:" 
    [1] "float nav_lon[x,y] Longname:Longitude Missval:1e+30" 
    [1] "float nav_lat[x,y] Longname:Latitude Missval:1e+30" 
    [1] "float SoilDepth[land] Longname:Soil depth Missval:1.00000002004088e+20" 

ऐसा लगता है मैं देशांतर के साथ-साथ भूमि अंकों के साथ अक्षांश कनेक्ट करने के लिए मिट्टी गहराई का एक नक्शा प्राप्त करने के लिए कि मैं वास्तव में उलझन में हूं। क्या कोई इस तरह के डेटा के साथ मेरी मदद कर सकता है।

+0

अपने ग्रिड के आकार, (360 * 150 = 54e3) है, जबकि अपनी 'land' चर का आकार 15238 है, जो आपके gridsize की एक बहु नहीं है। क्या आपके पास इसके लिए कोई स्पष्टीकरण है? –

+0

आपको यह डेटा कहां मिला? या आपने इसे स्वयं बनाया है? अंतर एनए मूल्यों की उपस्थिति के कारण हो सकता है, यानी समुद्र में कोई मिट्टी की गहराई नहीं है। –

+1

'भूमि' एक चर नहीं है लेकिन एक और आयाम है इसलिए इसे आकार x * y – plannapus

उत्तर

10
library(ncdf) 
# I'm assuming this is the netcdf file you are working with: 
download.file("http://dods.ipsl.jussieu.fr/gswp/Fixed/SoilDepth.nc", destfile="SoilDepth.nc") 
soil <- open.ncdf("SoilDepth.nc") 
#The way to extract a variable is as following: 
soil$var[[3]] -> var3 # here, as shown in your question, SoilDepth is the 3rd variable 
get.var.ncdf(soil, var3) -> SoilDepth 

dim(SoilDepth) 
[1] 15238 

के रूप में अपने netcdf फ़ाइल के लिए सारांश में कहा गया था, चर SoilDepth केवल और नहीं आयाम landx और y पर पर निर्भर करता है इसलिए मुझे यकीन है कि जब यह इस डेटासेट की साजिश रचने की बात आती है, जहां कि तुम कितने बजे है नहीं कर रहा हूँ ।

संपादित

यह पता चला एक महत्वपूर्ण यह है कि लिंक x, y और land है:

download.file("http://dods.ipsl.jussieu.fr/gswp/Fixed/landmask_gswp.nc", destfile="landmask.nc") 
landmask <- open.ncdf("landmask.nc") 
landmask$var[[3]] -> varland 
get.var.ncdf(landmask, varland) -> land 
sum(land==1) 
[1] 15238 

तो क्रम में प्लॉट करने के लिए:

# The values where stored in an expected order, hence the transpose 
land = t(land) 
land[land==1] <- SoilDepth 
land[land==0] <- NA 
land = t(land) 
image(land) 

enter image description here

+0

के उत्तर में ठीक करने के लिए कुछ कोड जोड़ा है, 'get.var.ncdf (nc, "SoilDepth") के परिणाम पर बस साजिश को कॉल करना भी एक अच्छा टाइमरी नहीं देता है। अजीब फ़ाइल ... –

+0

शायद आयाम 'भूमि' और आयाम' x' और 'y' के बीच एक अंतर्निहित संबंध है लेकिन मुझे लगता है कि यह नहीं लगता है ... – plannapus

+0

मुझे रिश्ते को खोजने में कठिनाई भी होती है। ओपी को डेटा के निर्माता से पूछने की जरूरत है ... –

5

क्या आप इसे आर के साथ देखना चाहते हैं?

यदि यह एक और सॉफ्टवेयर के साथ कल्पना करने के लिए एक समस्या नहीं है, तो आप नासा, जो आप here donwload कर सकते हैं द्वारा प्रदान की ncBrowse, उपलब्ध here, या आड़, एक अधिक जटिल से एक का उपयोग कर सकते हैं।

यदि आप आर के साथ काम करना चाहते हैं, तो आप ncdf पैकेज का उपयोग कर सकते हैं। आप get.var.ncdf फ़ंक्शन के लिए अपना डेटा निकालने में सक्षम होंगे। आप इसे sp पैकेज और spplot फ़ंक्शन के लिए धन्यवाद दे सकते हैं या rgl पैकेज (या अन्य scatterplot) का उपयोग कर सकते हैं।

+0

मैंने इस समस्या को @plannapus –

11

मैं विज़ुअलाइजेशन के लिए ggplot2 पैकेज का उपयोग करना पसंद करता हूं। @plannapus के उत्कृष्ट समाधान का उपयोग करना:

require(reshape) 
require(ggplot2); theme_set(theme_bw()) 
land_df = melt(land) 
ggplot(aes(x = X1, y = X2, fill = value), data = land_df) + 
    geom_raster() + coord_equal() + 
    scale_fill_continuous(na.value = "transparent") 

enter image description here


आप एक अक्ष का शीर्षक बदलना चाहते हैं, नहीं परिवर्तन aes में चर नाम है। ये मान डेटा में कॉलम का संदर्भ देते हैं, और उन्हें बदलने से आपको मिलने वाली त्रुटि होती है, नामक कोई अक्ष नहीं है land_df में। यदि आप धुरी पर रखे गए नाम को बदलना चाहते हैं:

ggplot(aes(x = X1, y = X2, fill = value), data = land_df) + 
    geom_raster() + coord_equal() + 
    scale_fill_continuous(na.value = "transparent") + 
    scale_x_continuous("X") 
+0

पढ़ें '? Scale_fill_continuous', या http://had.co.nz/ggplot2/scale_continuous.html –

+0

यदि वे आपको परेशान करते हैं, तो आप उन्हें करके उन्हें हटाने में सक्षम होना चाहिए: + थीम (axis.title = element_blank()) – JEquihua

4

फ़ाइलों को तुरंत देखने के लिए आप ncview का उपयोग कर सकते हैं। नक्शे विशेष रूप से सुंदर नहीं हैं, लेकिन यह एक विचार प्राप्त करने के लिए बहुत ही कार्यात्मक है कि दी गई फ़ाइल कैसा दिखता है। यह दूरस्थ सर्वर पर आसानी से काम करता है।

यहाँ देखें: http://meteora.ucsd.edu/~pierce/ncview_home_page.html

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