# loading library and setup deirectory
setwd("E:/r")
library(raster)
## Loading required package: sp
library(ncdf4)
# file "air mon mean.nc , loading using "nc_open"
data<-nc_open('air.mon.mean.nc')
print(data)
## File air.mon.mean.nc (NC_FORMAT_CLASSIC):
## 
##      1 variables (excluding dimension variables):
##         float air[lon,lat,time]   
##             long_name: Monthly Mean Air Temperature
##             valid_range: -2000
##              valid_range: 2000
##             actual_range: -73.7799911499023
##              actual_range: 41.7490196228027
##             units: degC
##             add_offset: 0
##             scale_factor: 1
##             missing_value: -9.96920996838687e+36
##             precision: 1
##             least_significant_digit: 0
##             var_desc: Air Temperature
##             dataset: CDC Derived NCEP Reanalysis Products
##             level_desc: Surface
##             statistic: Mean
##             parent_stat: Individual Obs
## 
##      3 dimensions:
##         lon  Size:144
##             units: degrees_east
##             long_name: Longitude
##             actual_range: 0
##              actual_range: 357.5
##             standard_name: longitude
##             axis: X
##         lat  Size:73
##             units: degrees_north
##             actual_range: 90
##              actual_range: -90
##             long_name: Latitude
##             standard_name: latitude
##             axis: Y
##         time  Size:755   *** is unlimited ***
##             units: hours since 1-1-1 00:00:0.0
##             long_name: Time
##             actual_range: 17067072
##              actual_range: 17617872
##             delta_t: 0000-01-00 00:00:00
##             avg_period: 0000-01-00 00:00:00
##             prev_avg_period: 0000-00-01 00:00:00
##             standard_name: time
##             axis: T
## 
##     6 global attributes:
##         title: Monthly mean air temperature NCEP Reanalysis
##         history: Thu May  4 20:11:16 2000: ncrcat -d time,0,623 /Datasets/ncep.reanalysis.derived/surface/air.mon.mean.nc air.mon.mean.nc
## Thu May  4 18:11:50 2000: ncrcat -d time,0,622 /Datasets/ncep.reanalysis.derived/surface/air.mon.mean.nc ./surface/air.mon.mean.nc
## Mon Jul  5 23:47:18 1999: ncrcat ./air.mon.mean.nc /Datasets/ncep.reanalysis.derived/surface/air.mon.mean.nc /dm/dmwork/nmc.rean.ingest/combinedMMs/surface/air.mon.mean.nc
## /home/hoop/crdc/cpreanjuke2farm/cpreanjuke2farm Mon Oct 23 21:04:20 1995 from air.sfc.gauss.85.nc
## created 95/03/13 by Hoop (netCDF2.3)
##         description: Data from NCEP initialized reanalysis (4x/day).  These are the 0.9950 sigma level values
##         platform: Model
##         Conventions: COARDS
##         references: http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.reanalysis.derived.html
# USING RASTER LIBRARY
dataraster<-raster('air.mon.mean.nc')
print(dataraster)
## File E:\r\air.mon.mean.nc (NC_FORMAT_CLASSIC):
## 
##      1 variables (excluding dimension variables):
##         float air[lon,lat,time]   
##             long_name: Monthly Mean Air Temperature
##             valid_range: -2000
##              valid_range: 2000
##             actual_range: -73.7799911499023
##              actual_range: 41.7490196228027
##             units: degC
##             add_offset: 0
##             scale_factor: 1
##             missing_value: -9.96920996838687e+36
##             precision: 1
##             least_significant_digit: 0
##             var_desc: Air Temperature
##             dataset: CDC Derived NCEP Reanalysis Products
##             level_desc: Surface
##             statistic: Mean
##             parent_stat: Individual Obs
## 
##      3 dimensions:
##         lon  Size:144
##             units: degrees_east
##             long_name: Longitude
##             actual_range: 0
##              actual_range: 357.5
##             standard_name: longitude
##             axis: X
##         lat  Size:73
##             units: degrees_north
##             actual_range: 90
##              actual_range: -90
##             long_name: Latitude
##             standard_name: latitude
##             axis: Y
##         time  Size:755   *** is unlimited ***
##             units: hours since 1-1-1 00:00:0.0
##             long_name: Time
##             actual_range: 17067072
##              actual_range: 17617872
##             delta_t: 0000-01-00 00:00:00
##             avg_period: 0000-01-00 00:00:00
##             prev_avg_period: 0000-00-01 00:00:00
##             standard_name: time
##             axis: T
## 
##     6 global attributes:
##         title: Monthly mean air temperature NCEP Reanalysis
##         history: Thu May  4 20:11:16 2000: ncrcat -d time,0,623 /Datasets/ncep.reanalysis.derived/surface/air.mon.mean.nc air.mon.mean.nc
## Thu May  4 18:11:50 2000: ncrcat -d time,0,622 /Datasets/ncep.reanalysis.derived/surface/air.mon.mean.nc ./surface/air.mon.mean.nc
## Mon Jul  5 23:47:18 1999: ncrcat ./air.mon.mean.nc /Datasets/ncep.reanalysis.derived/surface/air.mon.mean.nc /dm/dmwork/nmc.rean.ingest/combinedMMs/surface/air.mon.mean.nc
## /home/hoop/crdc/cpreanjuke2farm/cpreanjuke2farm Mon Oct 23 21:04:20 1995 from air.sfc.gauss.85.nc
## created 95/03/13 by Hoop (netCDF2.3)
##         description: Data from NCEP initialized reanalysis (4x/day).  These are the 0.9950 sigma level values
##         platform: Model
##         Conventions: COARDS
##         references: http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.reanalysis.derived.html
#float air[lon,lat,time]   
#in this line "air " this is main variable 
# we need , plz follow following steps
# extract long ,lat , time , variable
lon<-ncvar_get(data,"lon")
nlon<-dim(lon)
lat<-ncvar_get(data,"lat")
nlat<-dim(lat)
time<-ncvar_get(data,"time")
# another package 
library(RNetCDF)
nc.file <- open.nc(paste0('air.mon.mean.nc')) 
lon <- var.get.nc(ncfile=nc.file, variable = 'lon')
lat <- rev(var.get.nc(ncfile=nc.file, variable = 'lat')) # Plotting requires incremented values
tmp <- var.get.nc(ncfile = nc.file, variable = 'air')
title <- att.get.nc(nc.file, variable = 'air', attribute = 'long_name')
title <- gsub('_', ' ', title)   # Substitute "_" by " " in title
close.nc(nc.file)   
print(nc.file)
## [1] 65536
## attr(,"class")
## [1] "NetCDF"
# january 
library(RColorBrewer)
library(maps)          # For World map
image(lon, lat, tmp[, , 1], col = rev(brewer.pal(10, "RdBu")), main=paste0(title, '\n', month.name[1]))
map(database = 'world', add = T, lwd=2)

# december 
image(lon, lat, tmp[, , 1], col = rev(brewer.pal(10, "RdBu")), main=paste0(title, '\n', month.name[12]))
map(database = 'world', add = T, lwd=2)