我有一个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 :(得分: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")
如果要更改轴的标题,请执行 not 更改aes
中的变量名称。这些值引用数据中的列,并且更改它们会导致出现错误,X
中没有名为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")
答案 1 :(得分: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
仅取决于维度land
,而不取决于x
和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)
答案 2 :(得分:5)
你想用R?
来形象化它吗?如果使用其他软件进行可视化不是问题,您可以使用 ncBrowse ,可用here或 Panoply ,这是一个更复杂的软件美国国家航空航天局,您可以下载here。
如果您想使用R,可以使用ncdf
包。借助get.var.ncdf
功能,您将能够提取数据。您可以使用sp
包和spplot
函数绘制它,也可以使用rgl
包(或者scatterplot
)。
答案 3 :(得分:4)
要快速查看文件,您可以使用ncview。这些地图并不是特别漂亮,但对于了解给定文件的外观非常实用。这也适用于远程服务器。