如何从可视化netCDF文件的地图?(How to visualize a map from a n

2019-06-27 20:17发布

我有我想只可视化土壤深度图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"

看来,我必须连接与经度和土地点的纬度来获得地图土壤depth.I的我真的很困惑。可有人帮我这类型的数据。

Answer 1:

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取决于尺寸land ,而不是在xy所以我不知道,这会让你当谈到绘制此数据集。

编辑

原来,有一个链接一个关键xyland

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)



Answer 2:

我更愿意用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")


如果你想改变一个轴的标题, 改变变量名aes 。 这些值是指列中的数据,并改变它们导致你得到的错误,没有名为轴Xland_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")


Answer 3:

你想有R可视化呢?

如果不是与其他软件进行可视化的问题,你可以使用ncBrowse,可在这里 ,或一整套 ,更复杂的一个,由美国航天局提供的,您可以donwload 这里 。

如果你想有R工作,你可以使用ncdf包。 您将能够将数据由于提取到get.var.ncdf功能。 您可以绘制它归功于sp包和spplot功能或使用rgl包(或者scatterplot )。



Answer 4:

对于快速看着你可以使用ncview文件。 地图是不是特别漂亮,但非常实用为获得一个什么样的给定文件看起来像一个想法。 这也很容易工作在远程服务器上。

在这里看到: http://meteora.ucsd.edu/~pierce/ncview_home_page.html



文章来源: How to visualize a map from a netcdf file?