How to visualize a map from a netcdf file?

前端 未结 4 1849
醉酒成梦
醉酒成梦 2021-01-03 04:18

I have a netcdf file that I would like to just visualize the soil depth map

   [1] \"file C:\\\\Users\\\\SoilDepth-gswp.nc has 3 dimensions:\"
     [1] \"x           


        
相关标签:
4条回答
  • 2021-01-03 04:33
    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
    

    As was said in the summary for your netcdf file, the variable SoilDepth depends on dimension land only and not on x and y so I'm not sure where does that leave you when it comes to plotting this dataset.

    Edit

    It turns out there is a key that links x, y and 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
    

    So in order to plot:

    # 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 讨论(0)
  • 2021-01-03 04:39

    I prefer to use the ggplot2 package for visualization. Using the excellent solution of @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


    If you want to change the title of an axis, do not change the variable name in aes. These values refer to columns in the data, and changing them leads to the error you get, there is no axis named X in land_df. If you want to change the name placed on the axis:

    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 讨论(0)
  • 2021-01-03 04:40

    Do you want to visualize it with R ?

    If it is not a problem to visualize with another software, you can use ncBrowse, available here, or Panoply, a more complex one, provided by NASA, which you can donwload here.

    If you want to work with R, you can use ncdf package. You will be able to extract your data thanks to the get.var.ncdffunction. You can plot it thanks to the sp package and spplotfunction or use the rglpackage (or else scatterplot).

    0 讨论(0)
  • 2021-01-03 04:50

    For quickly looking at files you can use ncview. The maps are not particularly pretty, but very functional for getting an idea of what a given file looks like. Also this works easily on remote servers.

    See here: http://meteora.ucsd.edu/~pierce/ncview_home_page.html

    0 讨论(0)
提交回复
热议问题