Search code examples
gdalnetcdfnetcdf4ncocdo-climate

GeoTIFF to NetCDF with time variable enabled


I have thousand GeoTIFF files (monthly precipitation from 1981) and would like to convert it into single NetCDF with time dimension enabled.

I have read various similar thread in StackOverflow and GIS StackExchange, but could not find the best solution for my case, either the script is too complicated (I don't have programming skill) or the solution didn't cover time dimension enabled.

What I have done is:

  • Convert all TIF in a folder to GRIB2 using GDAL: for i in *.tif; do gdal_translate -of GRIB $i ../GRIB/$i.grb2; done
  • Convert GRIB2 to NetCDF using CDO: for i in *.grb2; do cdo -r -f nc copy $i ../NetCDF/$i.nc; done
  • Merge all NC in a folder using NCO: ncrcat *.nc merge.nc
  • Then check the file: ncdump -h merge.nc I got this
netcdf merge {
dimensions:
    time = UNLIMITED ; // (467 currently)
    lon = 920 ;
    lat = 339 ;
variables:
    double time(time) ;
        time:standard_name = "time" ;
        time:units = "minutes since 1970-1-1 00:00:00" ;
        time:calendar = "proleptic_gregorian" ;
        time:axis = "T" ;
    double lon(lon) ;
        lon:standard_name = "longitude" ;
        lon:long_name = "longitude" ;
        lon:units = "degrees_east" ;
        lon:axis = "X" ;
    double lat(lat) ;
        lat:standard_name = "latitude" ;
        lat:long_name = "latitude" ;
        lat:units = "degrees_north" ;
        lat:axis = "Y" ;
    float param255.255.0(time, lat, lon) ;

// global attributes:
        :CDI = "Climate Data Interface version 1.9.8 (https://mpimet.mpg.de/cdi)" ;
        :Conventions = "CF-1.6" ;
        :history = "Tue Jul  7 09:49:30 2020: ncrcat idn_cli_chirps-v2.0.1981.01.tif.grb2.nc idn_cli_chirps-v2.0.1981.02.tif.grb2.nc idn_cli_chirps-v2.0.1981.03.tif.grb2.nc idn_cli_chirps-v2.0.1981.04.tif.grb2.nc idn_cli_chirps-v2.0.1981.05.tif.grb2.nc idn_cli_chirps-v2.0.1981.06.tif.grb2.nc idn_cli_chirps-v2.0.1981.07.tif.grb2.nc idn_cli_chirps-v2.0.1981.08.tif.grb2.nc idn_cli_chirps-v2.0.1981.09.tif.grb2.nc idn_cli_chirps-v2.0.1981.10.tif.grb2.nc idn_cli_chirps-v2.0.1981.11.tif.grb2.nc idn_cli_chirps-v2.0.1981.12.tif.grb2.nc idn_cli_chirps-v2.0.1982.01.tif.grb2.nc idn_cli_chirps-v2.0.1982.02.tif.grb2.nc idn_cli_chirps-v2.0.1982.03.tif.grb2.nc idn_cli_chirps-v2.0.1982.04.tif.grb2.nc idn_cli_chirps-v2.0.1982.05.tif.grb2.nc idn_cli_chirps-v2.0.1982.06.tif.grb2.nc idn_cli_chirps-v2.0.1982.07.tif.grb2.nc idn_cli_chirps-v2.0.1982.08.tif.grb2.nc idn_cli_chirps-v2.0.1982.09.tif.grb2.nc idn_cli_chirps-v2.0.1982.10.tif.grb2.nc idn_cli_chirps-v2.0.1982.11.tif.grb2.nc idn_cli_chirps-v2.0.1982.12.tif.grb2.nc idn_cli_chirps-v2.0.1983.01.tif.grb2.nc idn_cli_chirps-v2.0.1983.02.tif.grb2.nc idn_cli_chirps-v2.0.1983.03.tif.grb2.nc idn_cli_chirps-v2.0.1983.04.tif.grb2.nc idn_cli_chirps-v2.0.1983.05.tif.grb2.nc idn_cli_chirps-v2.0.1983.06.tif.grb2.nc idn_cli_chirps-v2.0.1983.07.tif.grb2.nc idn_cli_chirps-v2.0.1983.08.tif.grb2.nc idn_cli_chirps-v2.0.1983.09.tif.grb2.nc idn_cli_chirps-v2.0.1983.10.tif.grb2.nc idn_cli_chirps-v2.0.1983.11.tif.grb2.nc idn_cli_chirps-v2.0.1983.12.tif.grb2.nc idn_cli_chirps-v2.0.1984.01.tif.grb2.nc idn_cli_chirps-v2.0.1984.02.tif.grb2.nc idn_cli_chirps-v2.0.1984.03.tif.grb2.nc idn_cli_chirps-v2.0.1984.04.tif.grb2.nc idn_cli_chirps-v2.0.1984.05.tif.grb2.nc idn_cli_chirps-v2.0.1984.06.tif.grb2.nc idn_cli_chirps-v2.0.1984.07.tif.grb2.nc idn_cli_chirps-v2.0.1984.08.tif.grb2.nc idn_cli_chirps-v2.0.1984.09.tif.grb2.nc idn_cli_chirps-v2.0.1984.10.tif.grb2.nc idn_cli_chirps-v2.0.1984.11.tif.grb2.nc idn_cli_chirps-v2.0.1984.12.tif.grb2.nc idn_cli_chirps-v2.0.1985.01.tif.grb2.nc idn_cli_chirps-v2.0.1985.02.tif.grb2.nc idn_cli_chirps-v2.0.1985.03.tif.grb2.nc idn_cli_chirps-v2.0.1985.04.tif.grb2.nc idn_cli_chirps-v2.0.1985.05.tif.grb2.nc idn_cli_chirps-v2.0.1985.06.tif.grb2.nc idn_cli_chirps-v2.0.1985.07.tif.grb2.nc idn_cli_chirps-v2.0.1985.08.tif.grb2.nc idn_cli_chirps-v2.0.1985.09.tif.grb2.nc idn_cli_chirps-v2.0.1985.10.tif.grb2.nc idn_cli_chirps-v2.0.1985.11.tif.grb2.nc idn_cli_chirps-v2.0.1985.12.tif.grb2.nc idn_cli_chirps-v2.0.1986.01.tif.grb2.nc idn_cli_chirps-v2.0.1986.02.tif.grb2.nc idn_cli_chirps-v2.0.1986.03.tif.grb2.nc idn_cli_chirps-v2.0.1986.04.tif.grb2.nc idn_cli_chirps-v2.0.1986.05.tif.grb2.nc idn_cli_chirps-v2.0.1986.06.tif.grb2.nc idn_cli_chirps-v2.0.1986.07.tif.grb2.nc idn_cli_chirps-v2.0.1986.08.tif.grb2.nc idn_cli_chirps-v2.0.1986.09.tif.grb2.nc idn_cli_chirps-v2.0.1986.10.tif.grb2.nc idn_cli_chirps-v2.0.1986.11.tif.grb2.nc idn_cli_chirps-v2.0.1986.12.tif.grb2.nc idn_cli_chirps-v2.0.1987.01.tif.grb2.nc idn_cli_chirps-v2.0.1987.02.tif.grb2.nc idn_cli_chirps-v2.0.1987.03.tif.grb2.nc idn_cli_chirps-v2.0.1987.04.tif.grb2.nc idn_cli_chirps-v2.0.1987.05.tif.grb2.nc idn_cli_chirps-v2.0.1987.06.tif.grb2.nc idn_cli_chirps-v2.0.1987.07.tif.grb2.nc idn_cli_chirps-v2.0.1987.08.tif.grb2.nc idn_cli_chirps-v2.0.1987.09.tif.grb2.nc idn_cli_chirps-v2.0.1987.10.tif.grb2.nc idn_cli_chirps-v2.0.1987.11.tif.grb2.nc idn_cli_chirps-v2.0.1987.12.tif.grb2.nc idn_cli_chirps-v2.0.1988.01.tif.grb2.nc idn_cli_chirps-v2.0.1988.02.tif.grb2.nc idn_cli_chirps-v2.0.1988.03.tif.grb2.nc idn_cli_chirps-v2.0.1988.04.tif.grb2.nc idn_cli_chirps-v2.0.1988.05.tif.grb2.nc idn_cli_chirps-v2.0.1988.06.tif.grb2.nc idn_cli_chirps-v2.0.1988.07.tif.grb2.nc idn_cli_chirps-v2.0.1988.08.tif.grb2.nc idn_cli_chirps-v2.0.1988.09.tif.grb2.nc idn_cli_chirps-v2.0.1988.10.tif.grb2.nc idn_cli_chirps-v2.0.1988.11.tif.grb2.nc idn_cli_chirps-v2.0.1988.12.tif.grb2.nc idn_cli_chirps-v2.0.1989.01.tif.grb2.nc idn_cli_chirps-v2.0.1989.02.tif.grb2.nc idn_cli_chirps-v2.0.1989.03.tif.grb2.nc idn_cli_chirps-v2.0.1989.04.tif.grb2.nc idn_cli_chirps-v2.0.1989.05.tif.grb2.nc idn_cli_chirps-v2.0.1989.06.tif.grb2.nc idn_cli_chirps-v2.0.1989.07.tif.grb2.nc idn_cli_chirps-v2.0.1989.08.tif.grb2.nc idn_cli_chirps-v2.0.1989.09.tif.grb2.nc idn_cli_chirps-v2.0.1989.10.tif.grb2.nc idn_cli_chirps-v2.0.1989.11.tif.grb2.nc idn_cli_chirps-v2.0.1989.12.tif.grb2.nc idn_cli_chirps-v2.0.1990.01.tif.grb2.nc idn_cli_chirps-v2.0.1990.02.tif.grb2.nc idn_cli_chirps-v2.0.1990.03.tif.grb2.nc idn_cli_chirps-v2.0.1990.04.tif.grb2.nc idn_cli_chirps-v2.0.1990.05.tif.grb2.nc idn_cli_chirps-v2.0.1990.06.tif.grb2.nc idn_cli_chirps-v2.0.1990.07.tif.grb2.nc idn_cli_chirps-v2.0.1990.08.tif.grb2.nc idn_cli_chirps-v2.0.1990.09.tif.grb2.nc idn_cli_chirps-v2.0.1990.10.tif.grb2.nc idn_cli_chirps-v2.0.1990.11.tif.grb2.nc idn_cli_chirps-v2.0.1990.12.tif.grb2.nc idn_cli_chirps-v2.0.1991.01.tif.grb2.nc idn_cli_chirps-v2.0.1991.02.tif.grb2.nc idn_cli_chirps-v2.0.1991.03.tif.grb2.nc idn_cli_chirps-v2.0.1991.04.tif.grb2.nc idn_cli_chirps-v2.0.1991.05.tif.grb2.nc idn_cli_chirps-v2.0.1991.06.tif.grb2.nc idn_cli_chirps-v2.0.1991.07.tif.grb2.nc idn_cli_chirps-v2.0.1991.08.tif.grb2.nc idn_cli_chirps-v2.0.1991.09.tif.grb2.nc idn_cli_chirps-v2.0.1991.10.tif.grb2.nc idn_cli_chirps-v2.0.1991.11.tif.grb2.nc idn_cli_chirps-v2.0.1992.01.tif.grb2.nc idn_cli_chirps-v2.0.1992.02.tif.grb2.nc idn_cli_chirps-v2.0.1992.03.tif.grb2.nc idn_cli_chirps-v2.0.1992.04.tif.grb2.nc idn_cli_chirps-v2.0.1992.05.tif.grb2.nc idn_cli_chirps-v2.0.1992.06.tif.grb2.nc idn_cli_chirps-v2.0.1992.07.tif.grb2.nc idn_cli_chirps-v2.0.1992.08.tif.grb2.nc idn_cli_chirps-v2.0.1992.09.tif.grb2.nc idn_cli_chirps-v2.0.1992.10.tif.grb2.nc idn_cli_chirps-v2.0.1992.11.tif.grb2.nc idn_cli_chirps-v2.0.1992.12.tif.grb2.nc idn_cli_chirps-v2.0.1993.01.tif.grb2.nc idn_cli_chirps-v2.0.1993.02.tif.grb2.nc idn_cli_chirps-v2.0.1993.03.tif.grb2.nc idn_cli_chirps-v2.0.1993.04.tif.grb2.nc idn_cli_chirps-v2.0.1993.05.tif.grb2.nc idn_cli_chirps-v2.0.1993.06.tif.grb2.nc idn_cli_chirps-v2.0.1993.07.tif.grb2.nc idn_cli_chirps-v2.0.1993.08.tif.grb2.nc idn_cli_chirps-v2.0.1993.09.tif.grb2.nc idn_cli_chirps-v2.0.1993.10.tif.grb2.nc idn_cli_chirps-v2.0.1993.11.tif.grb2.nc idn_cli_chirps-v2.0.1993.12.tif.grb2.nc idn_cli_chirps-v2.0.1994.01.tif.grb2.nc idn_cli_chirps-v2.0.1994.02.tif.grb2.nc idn_cli_chirps-v2.0.1994.03.tif.grb2.nc idn_cli_chirps-v2.0.1994.04.tif.grb2.nc idn_cli_chirps-v2.0.1994.05.tif.grb2.nc idn_cli_chirps-v2.0.1994.06.tif.grb2.nc idn_cli_chirps-v2.0.1994.07.tif.grb2.nc idn_cli_chirps-v2.0.1994.08.tif.grb2.nc idn_cli_chirps-v2.0.1994.09.tif.grb2.nc idn_cli_chirps-v2.0.1994.10.tif.grb2.nc idn_cli_chirps-v2.0.1994.11.tif.grb2.nc idn_cli_chirps-v2.0.1994.12.tif.grb2.nc idn_cli_chirps-v2.0.1995.01.tif.grb2.nc idn_cli_chirps-v2.0.1995.02.tif.grb2.nc idn_cli_chirps-v2.0.1995.03.tif.grb2.nc idn_cli_chirps-v2.0.1995.04.tif.grb2.nc idn_cli_chirps-v2.0.1995.05.tif.grb2.nc idn_cli_chirps-v2.0.1995.06.tif.grb2.nc idn_cli_chirps-v2.0.1995.07.tif.grb2.nc idn_cli_chirps-v2.0.1995.08.tif.grb2.nc idn_cli_chirps-v2.0.1995.09.tif.grb2.nc idn_cli_chirps-v2.0.1995.10.tif.grb2.nc idn_cli_chirps-v2.0.1995.11.tif.grb2.nc idn_cli_chirps-v2.0.1995.12.tif.grb2.nc idn_cli_chirps-v2.0.1996.01.tif.grb2.nc idn_cli_chirps-v2.0.1996.02.tif.grb2.nc idn_cli_chirps-v2.0.1996.03.tif.grb2.nc idn_cli_chirps-v2.0.1996.04.tif.grb2.nc idn_cli_chirps-v2.0.1996.05.tif.grb2.nc idn_cli_chirps-v2.0.1996.06.tif.grb2.nc idn_cli_chirps-v2.0.1996.07.tif.grb2.nc idn_cli_chirps-v2.0.1996.08.tif.grb2.nc idn_cli_chirps-v2.0.1996.09.tif.grb2.nc idn_cli_chirps-v2.0.1996.10.tif.grb2.nc idn_cli_chirps-v2.0.1996.11.tif.grb2.nc idn_cli_chirps-v2.0.1996.12.tif.grb2.nc idn_cli_chirps-v2.0.1997.01.tif.grb2.nc idn_cli_chirps-v2.0.1997.02.tif.grb2.nc idn_cli_chirps-v2.0.1997.03.tif.grb2.nc idn_cli_chirps-v2.0.1997.04.tif.grb2.nc idn_cli_chirps-v2.0.1997.05.tif.grb2.nc idn_cli_chirps-v2.0.1997.06.tif.grb2.nc idn_cli_chirps-v2.0.1997.07.tif.grb2.nc idn_cli_chirps-v2.0.1997.08.tif.grb2.nc idn_cli_chirps-v2.0.1997.09.tif.grb2.nc idn_cli_chirps-v2.0.1997.10.tif.grb2.nc idn_cli_chirps-v2.0.1997.11.tif.grb2.nc idn_cli_chirps-v2.0.1997.12.tif.grb2.nc idn_cli_chirps-v2.0.1998.01.tif.grb2.nc idn_cli_chirps-v2.0.1998.02.tif.grb2.nc idn_cli_chirps-v2.0.1998.03.tif.grb2.nc idn_cli_chirps-v2.0.1998.04.tif.grb2.nc idn_cli_chirps-v2.0.1998.05.tif.grb2.nc idn_cli_chirps-v2.0.1998.06.tif.grb2.nc idn_cli_chirps-v2.0.1998.07.tif.grb2.nc idn_cli_chirps-v2.0.1998.08.tif.grb2.nc idn_cli_chirps-v2.0.1998.09.tif.grb2.nc idn_cli_chirps-v2.0.1998.10.tif.grb2.nc idn_cli_chirps-v2.0.1998.11.tif.grb2.nc idn_cli_chirps-v2.0.1998.12.tif.grb2.nc idn_cli_chirps-v2.0.1999.01.tif.grb2.nc idn_cli_chirps-v2.0.1999.02.tif.grb2.nc idn_cli_chirps-v2.0.1999.03.tif.grb2.nc idn_cli_chirps-v2.0.1999.04.tif.grb2.nc idn_cli_chirps-v2.0.1999.05.tif.grb2.nc idn_cli_chirps-v2.0.1999.06.tif.grb2.nc idn_cli_chirps-v2.0.1999.07.tif.grb2.nc idn_cli_chirps-v2.0.1999.08.tif.grb2.nc idn_cli_chirps-v2.0.1999.09.tif.grb2.nc idn_cli_chirps-v2.0.1999.10.tif.grb2.nc idn_cli_chirps-v2.0.1999.11.tif.grb2.nc idn_cli_chirps-v2.0.1999.12.tif.grb2.nc idn_cli_chirps-v2.0.2000.01.tif.grb2.nc idn_cli_chirps-v2.0.2000.02.tif.grb2.nc idn_cli_chirps-v2.0.2000.03.tif.grb2.nc idn_cli_chirps-v2.0.2000.04.tif.grb2.nc idn_cli_chirps-v2.0.2000.05.tif.grb2.nc idn_cli_chirps-v2.0.2000.06.tif.grb2.nc idn_cli_chirps-v2.0.2000.07.tif.grb2.nc idn_cli_chirps-v2.0.2000.08.tif.grb2.nc idn_cli_chirps-v2.0.2000.09.tif.grb2.nc idn_cli_chirps-v2.0.2000.10.tif.grb2.nc idn_cli_chirps-v2.0.2000.11.tif.grb2.nc idn_cli_chirps-v2.0.2000.12.tif.grb2.nc idn_cli_chirps-v2.0.2001.01.tif.grb2.nc idn_cli_chirps-v2.0.2001.02.tif.grb2.nc idn_cli_chirps-v2.0.2001.03.tif.grb2.nc idn_cli_chirps-v2.0.2001.04.tif.grb2.nc idn_cli_chirps-v2.0.2001.05.tif.grb2.nc idn_cli_chirps-v2.0.2001.06.tif.grb2.nc idn_cli_chirps-v2.0.2001.07.tif.grb2.nc idn_cli_chirps-v2.0.2001.08.tif.grb2.nc idn_cli_chirps-v2.0.2001.09.tif.grb2.nc idn_cli_chirps-v2.0.2001.10.tif.grb2.nc idn_cli_chirps-v2.0.2001.11.tif.grb2.nc idn_cli_chirps-v2.0.2001.12.tif.grb2.nc idn_cli_chirps-v2.0.2002.01.tif.grb2.nc idn_cli_chirps-v2.0.2002.02.tif.grb2.nc idn_cli_chirps-v2.0.2002.03.tif.grb2.nc idn_cli_chirps-v2.0.2002.04.tif.grb2.nc idn_cli_chirps-v2.0.2002.05.tif.grb2.nc idn_cli_chirps-v2.0.2002.06.tif.grb2.nc idn_cli_chirps-v2.0.2002.07.tif.grb2.nc idn_cli_chirps-v2.0.2002.08.tif.grb2.nc idn_cli_chirps-v2.0.2002.09.tif.grb2.nc idn_cli_chirps-v2.0.2002.10.tif.grb2.nc idn_cli_chirps-v2.0.2002.11.tif.grb2.nc idn_cli_chirps-v2.0.2002.12.tif.grb2.nc idn_cli_chirps-v2.0.2003.01.tif.grb2.nc idn_cli_chirps-v2.0.2003.02.tif.grb2.nc idn_cli_chirps-v2.0.2003.03.tif.grb2.nc idn_cli_chirps-v2.0.2003.04.tif.grb2.nc idn_cli_chirps-v2.0.2003.05.tif.grb2.nc idn_cli_chirps-v2.0.2003.06.tif.grb2.nc idn_cli_chirps-v2.0.2003.07.tif.grb2.nc idn_cli_chirps-v2.0.2003.08.tif.grb2.nc idn_cli_chirps-v2.0.2003.09.tif.grb2.nc idn_cli_chirps-v2.0.2003.10.tif.grb2.nc idn_cli_chirps-v2.0.2003.11.tif.grb2.nc idn_cli_chirps-v2.0.2003.12.tif.grb2.nc idn_cli_chirps-v2.0.2004.01.tif.grb2.nc idn_cli_chirps-v2.0.2004.02.tif.grb2.nc idn_cli_chirps-v2.0.2004.03.tif.grb2.nc idn_cli_chirps-v2.0.2004.04.tif.grb2.nc idn_cli_chirps-v2.0.2004.05.tif.grb2.nc idn_cli_chirps-v2.0.2004.06.tif.grb2.nc idn_cli_chirps-v2.0.2004.07.tif.grb2.nc idn_cli_chirps-v2.0.2004.08.tif.grb2.nc idn_cli_chirps-v2.0.2004.09.tif.grb2.nc idn_cli_chirps-v2.0.2004.10.tif.grb2.nc idn_cli_chirps-v2.0.2004.11.tif.grb2.nc idn_cli_chirps-v2.0.2004.12.tif.grb2.nc idn_cli_chirps-v2.0.2005.01.tif.grb2.nc idn_cli_chirps-v2.0.2005.02.tif.grb2.nc idn_cli_chirps-v2.0.2005.03.tif.grb2.nc idn_cli_chirps-v2.0.2005.04.tif.grb2.nc idn_cli_chirps-v2.0.2005.05.tif.grb2.nc idn_cli_chirps-v2.0.2005.06.tif.grb2.nc idn_cli_chirps-v2.0.2005.07.tif.grb2.nc idn_cli_chirps-v2.0.2005.08.tif.grb2.nc idn_cli_chirps-v2.0.2005.09.tif.grb2.nc idn_cli_chirps-v2.0.2005.10.tif.grb2.nc idn_cli_chirps-v2.0.2005.11.tif.grb2.nc idn_cli_chirps-v2.0.2005.12.tif.grb2.nc idn_cli_chirps-v2.0.2006.01.tif.grb2.nc idn_cli_chirps-v2.0.2006.02.tif.grb2.nc idn_cli_chirps-v2.0.2006.05.tif.grb2.nc idn_cli_chirps-v2.0.2006.06.tif.grb2.nc idn_cli_chirps-v2.0.2006.07.tif.grb2.nc idn_cli_chirps-v2.0.2006.08.tif.grb2.nc idn_cli_chirps-v2.0.2006.09.tif.grb2.nc idn_cli_chirps-v2.0.2006.10.tif.grb2.nc idn_cli_chirps-v2.0.2006.11.tif.grb2.nc idn_cli_chirps-v2.0.2006.12.tif.grb2.nc idn_cli_chirps-v2.0.2007.01.tif.grb2.nc idn_cli_chirps-v2.0.2007.02.tif.grb2.nc idn_cli_chirps-v2.0.2007.03.tif.grb2.nc idn_cli_chirps-v2.0.2007.04.tif.grb2.nc idn_cli_chirps-v2.0.2007.05.tif.grb2.nc idn_cli_chirps-v2.0.2007.06.tif.grb2.nc idn_cli_chirps-v2.0.2007.07.tif.grb2.nc idn_cli_chirps-v2.0.2007.08.tif.grb2.nc idn_cli_chirps-v2.0.2007.09.tif.grb2.nc idn_cli_chirps-v2.0.2007.10.tif.grb2.nc idn_cli_chirps-v2.0.2007.11.tif.grb2.nc idn_cli_chirps-v2.0.2007.12.tif.grb2.nc idn_cli_chirps-v2.0.2008.01.tif.grb2.nc idn_cli_chirps-v2.0.2008.02.tif.grb2.nc idn_cli_chirps-v2.0.2008.03.tif.grb2.nc idn_cli_chirps-v2.0.2008.04.tif.grb2.nc idn_cli_chirps-v2.0.2008.05.tif.grb2.nc idn_cli_chirps-v2.0.2008.06.tif.grb2.nc idn_cli_chirps-v2.0.2008.07.tif.grb2.nc idn_cli_chirps-v2.0.2008.08.tif.grb2.nc idn_cli_chirps-v2.0.2008.09.tif.grb2.nc idn_cli_chirps-v2.0.2008.10.tif.grb2.nc idn_cli_chirps-v2.0.2008.11.tif.grb2.nc idn_cli_chirps-v2.0.2008.12.tif.grb2.nc idn_cli_chirps-v2.0.2009.01.tif.grb2.nc idn_cli_chirps-v2.0.2009.02.tif.grb2.nc idn_cli_chirps-v2.0.2009.03.tif.grb2.nc idn_cli_chirps-v2.0.2009.04.tif.grb2.nc idn_cli_chirps-v2.0.2009.05.tif.grb2.nc idn_cli_chirps-v2.0.2009.06.tif.grb2.nc idn_cli_chirps-v2.0.2009.07.tif.grb2.nc idn_cli_chirps-v2.0.2009.08.tif.grb2.nc idn_cli_chirps-v2.0.2009.09.tif.grb2.nc idn_cli_chirps-v2.0.2009.10.tif.grb2.nc idn_cli_chirps-v2.0.2009.11.tif.grb2.nc idn_cli_chirps-v2.0.2009.12.tif.grb2.nc idn_cli_chirps-v2.0.2010.01.tif.grb2.nc idn_cli_chirps-v2.0.2010.02.tif.grb2.nc idn_cli_chirps-v2.0.2010.03.tif.grb2.nc idn_cli_chirps-v2.0.2010.04.tif.grb2.nc idn_cli_chirps-v2.0.2010.05.tif.grb2.nc idn_cli_chirps-v2.0.2010.06.tif.grb2.nc idn_cli_chirps-v2.0.2010.07.tif.grb2.nc idn_cli_chirps-v2.0.2010.08.tif.grb2.nc idn_cli_chirps-v2.0.2010.09.tif.grb2.nc idn_cli_chirps-v2.0.2010.10.tif.grb2.nc idn_cli_chirps-v2.0.2010.11.tif.grb2.nc idn_cli_chirps-v2.0.2010.12.tif.grb2.nc idn_cli_chirps-v2.0.2011.01.tif.grb2.nc idn_cli_chirps-v2.0.2011.02.tif.grb2.nc idn_cli_chirps-v2.0.2011.03.tif.grb2.nc idn_cli_chirps-v2.0.2011.04.tif.grb2.nc idn_cli_chirps-v2.0.2011.05.tif.grb2.nc idn_cli_chirps-v2.0.2011.06.tif.grb2.nc idn_cli_chirps-v2.0.2011.07.tif.grb2.nc idn_cli_chirps-v2.0.2011.08.tif.grb2.nc idn_cli_chirps-v2.0.2011.09.tif.grb2.nc idn_cli_chirps-v2.0.2011.10.tif.grb2.nc idn_cli_chirps-v2.0.2011.11.tif.grb2.nc idn_cli_chirps-v2.0.2011.12.tif.grb2.nc idn_cli_chirps-v2.0.2012.01.tif.grb2.nc idn_cli_chirps-v2.0.2012.02.tif.grb2.nc idn_cli_chirps-v2.0.2012.03.tif.grb2.nc idn_cli_chirps-v2.0.2012.04.tif.grb2.nc idn_cli_chirps-v2.0.2012.05.tif.grb2.nc idn_cli_chirps-v2.0.2012.06.tif.grb2.nc idn_cli_chirps-v2.0.2012.07.tif.grb2.nc idn_cli_chirps-v2.0.2012.08.tif.grb2.nc idn_cli_chirps-v2.0.2012.09.tif.grb2.nc idn_cli_chirps-v2.0.2012.10.tif.grb2.nc idn_cli_chirps-v2.0.2012.11.tif.grb2.nc idn_cli_chirps-v2.0.2012.12.tif.grb2.nc idn_cli_chirps-v2.0.2013.01.tif.grb2.nc idn_cli_chirps-v2.0.2013.02.tif.grb2.nc idn_cli_chirps-v2.0.2013.03.tif.grb2.nc idn_cli_chirps-v2.0.2013.04.tif.grb2.nc idn_cli_chirps-v2.0.2013.05.tif.grb2.nc idn_cli_chirps-v2.0.2013.06.tif.grb2.nc idn_cli_chirps-v2.0.2013.07.tif.grb2.nc idn_cli_chirps-v2.0.2013.08.tif.grb2.nc idn_cli_chirps-v2.0.2013.09.tif.grb2.nc idn_cli_chirps-v2.0.2013.10.tif.grb2.nc idn_cli_chirps-v2.0.2013.11.tif.grb2.nc idn_cli_chirps-v2.0.2013.12.tif.grb2.nc idn_cli_chirps-v2.0.2014.01.tif.grb2.nc idn_cli_chirps-v2.0.2014.02.tif.grb2.nc idn_cli_chirps-v2.0.2014.03.tif.grb2.nc idn_cli_chirps-v2.0.2014.04.tif.grb2.nc idn_cli_chirps-v2.0.2014.05.tif.grb2.nc idn_cli_chirps-v2.0.2014.06.tif.grb2.nc idn_cli_chirps-v2.0.2014.07.tif.grb2.nc idn_cli_chirps-v2.0.2014.08.tif.grb2.nc idn_cli_chirps-v2.0.2014.09.tif.grb2.nc idn_cli_chirps-v2.0.2014.10.tif.grb2.nc idn_cli_chirps-v2.0.2014.11.tif.grb2.nc idn_cli_chirps-v2.0.2014.12.tif.grb2.nc idn_cli_chirps-v2.0.2015.01.tif.grb2.nc idn_cli_chirps-v2.0.2015.02.tif.grb2.nc idn_cli_chirps-v2.0.2015.03.tif.grb2.nc idn_cli_chirps-v2.0.2015.04.tif.grb2.nc idn_cli_chirps-v2.0.2015.06.tif.grb2.nc idn_cli_chirps-v2.0.2015.07.tif.grb2.nc idn_cli_chirps-v2.0.2015.08.tif.grb2.nc idn_cli_chirps-v2.0.2015.09.tif.grb2.nc idn_cli_chirps-v2.0.2015.10.tif.grb2.nc idn_cli_chirps-v2.0.2015.11.tif.grb2.nc idn_cli_chirps-v2.0.2015.12.tif.grb2.nc idn_cli_chirps-v2.0.2016.01.tif.grb2.nc idn_cli_chirps-v2.0.2016.02.tif.grb2.nc idn_cli_chirps-v2.0.2016.03.tif.grb2.nc idn_cli_chirps-v2.0.2016.04.tif.grb2.nc idn_cli_chirps-v2.0.2016.05.tif.grb2.nc idn_cli_chirps-v2.0.2016.06.tif.grb2.nc idn_cli_chirps-v2.0.2016.07.tif.grb2.nc idn_cli_chirps-v2.0.2016.08.tif.grb2.nc idn_cli_chirps-v2.0.2016.09.tif.grb2.nc idn_cli_chirps-v2.0.2016.10.tif.grb2.nc idn_cli_chirps-v2.0.2016.11.tif.grb2.nc idn_cli_chirps-v2.0.2016.12.tif.grb2.nc idn_cli_chirps-v2.0.2017.01.tif.grb2.nc idn_cli_chirps-v2.0.2017.02.tif.grb2.nc idn_cli_chirps-v2.0.2017.03.tif.grb2.nc idn_cli_chirps-v2.0.2017.04.tif.grb2.nc idn_cli_chirps-v2.0.2017.05.tif.grb2.nc idn_cli_chirps-v2.0.2017.06.tif.grb2.nc idn_cli_chirps-v2.0.2017.07.tif.grb2.nc idn_cli_chirps-v2.0.2017.08.tif.grb2.nc idn_cli_chirps-v2.0.2017.09.tif.grb2.nc idn_cli_chirps-v2.0.2017.10.tif.grb2.nc idn_cli_chirps-v2.0.2017.11.tif.grb2.nc idn_cli_chirps-v2.0.2017.12.tif.grb2.nc idn_cli_chirps-v2.0.2018.01.tif.grb2.nc idn_cli_chirps-v2.0.2018.02.tif.grb2.nc idn_cli_chirps-v2.0.2018.03.tif.grb2.nc idn_cli_chirps-v2.0.2018.04.tif.grb2.nc idn_cli_chirps-v2.0.2018.05.tif.grb2.nc idn_cli_chirps-v2.0.2018.06.tif.grb2.nc idn_cli_chirps-v2.0.2018.07.tif.grb2.nc idn_cli_chirps-v2.0.2018.08.tif.grb2.nc idn_cli_chirps-v2.0.2018.09.tif.grb2.nc idn_cli_chirps-v2.0.2018.10.tif.grb2.nc idn_cli_chirps-v2.0.2018.11.tif.grb2.nc idn_cli_chirps-v2.0.2018.12.tif.grb2.nc idn_cli_chirps-v2.0.2019.01.tif.grb2.nc idn_cli_chirps-v2.0.2019.02.tif.grb2.nc idn_cli_chirps-v2.0.2019.03.tif.grb2.nc idn_cli_chirps-v2.0.2019.05.tif.grb2.nc idn_cli_chirps-v2.0.2019.06.tif.grb2.nc idn_cli_chirps-v2.0.2019.07.tif.grb2.nc idn_cli_chirps-v2.0.2019.08.tif.grb2.nc idn_cli_chirps-v2.0.2019.09.tif.grb2.nc idn_cli_chirps-v2.0.2019.10.tif.grb2.nc idn_cli_chirps-v2.0.2019.11.tif.grb2.nc idn_cli_chirps-v2.0.2019.12.tif.grb2.nc idn_cli_chirps-v2.0.2020.01.tif.grb2.nc idn_cli_chirps-v2.0.2020.02.tif.grb2.nc idn_cli_chirps-v2.0.2020.03.tif.grb2.nc idn_cli_chirps-v2.0.2020.04.tif.grb2.nc merge.nc\n",
            "Tue Jul 07 09:38:36 2020: cdo -r -f nc copy idn_cli_chirps-v2.0.1981.01.tif.grb2 ../NetCDF/idn_cli_chirps-v2.0.1981.01.tif.grb2.nc" ;
        :CDO = "Climate Data Operators version 1.9.8 (https://mpimet.mpg.de/cdo)" ;
        :NCO = "netCDF Operators version 4.9.3 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ;
}

I would like to change the variable name and edit the content of param255.255.0(time, lat, lon) ; into something like below:

float precipitation(time,lat,lon) ;
    precipitation:_FIllValue = -9999.9f ;
    precipitation:_CodeMissingValue = "-9999.9f" ;
    precipitation:_DimensionNames = "time,lat,lon" ;
    precipitation:_Units = "mm/month" ;
    precipitation:_missing_values = -9999.9f ;
    precipitation:_units = "mm" ;

Is it possible using NCO or CDO? If yes, how to do that? Is the process I have done above correct and make sense? Any recommendation are welcome.

When opening merge.nc in Panoply, I found all the date is 1970-01-01 How to make the date following the date that could be found in input filename?


Solution

  • I found a way on how to convert a folder of CHIRPS GeoTIFF data to single NetCDF file with time dimension enabled that is CF-Compliant

    This is based on Rich Signell's answer on StackExchange: https://gis.stackexchange.com/a/70487 and I modify it so can works using CHIRPS dekad data. Adjustment is needed if using other timesteps data for CHIRPS. And NCO must be installed before using this script.

    #!/usr/bin/env python
    
    import numpy as np
    import datetime as dt
    import os
    import gdal
    import netCDF4
    import re
    
    ds = gdal.Open('/path/to/dir/chirps-v2.0.1981.01.1.tif') # Data location
    a = ds.ReadAsArray()
    nlat,nlon = np.shape(a)
    
    b = ds.GetGeoTransform() #bbox, interval
    lon = np.arange(nlon)*b[1]+b[0]
    lat = np.arange(nlat)*b[5]+b[3]
    
    basedate = dt.datetime(1980,1,1,0,0,0)
    
    
    # Create NetCDF file
    nco = netCDF4.Dataset('chirps_dekads.nc','w',clobber=True) # Output name
    
    
    # Chunking is optional, but can improve access a lot: 
    # (see: http://www.unidata.ucar.edu/blogs/developer/entry/chunking_data_choosing_shapes)
    chunk_lon=10
    chunk_lat=10
    chunk_time=12
    
    
    # Create dimensions, variables and attributes:
    nco.createDimension('lon',nlon)
    nco.createDimension('lat',nlat)
    nco.createDimension('time',None)
    
    timeo = nco.createVariable('time','f4',('time'))
    timeo.units = 'days since 1980-1-1 00:00:00'
    timeo.standard_name = 'time'
    timeo.calendar = 'gregorian'
    timeo.axis = 'T'
    
    lono = nco.createVariable('lon','f4',('lon'))
    lono.units = 'degrees_east'
    lono.standard_name = 'longitude'
    lono.long_name = 'longitude'
    lono.axis = 'X'
    
    lato = nco.createVariable('lat','f4',('lat'))
    lato.units = 'degrees_north'
    lato.standard_name = 'latitude'
    lato.long_name = 'latitude'
    lato.axis = 'Y'
    
    # Create container variable for CRS: lon/lat WGS84 datum
    crso = nco.createVariable('crs','i4')
    crso.long_name = 'Lon/Lat Coords in WGS84'
    crso.grid_mapping_name='latitude_longitude'
    crso.longitude_of_prime_meridian = 0.0
    crso.semi_major_axis = 6378137.0
    crso.inverse_flattening = 298.257223563
    
    # Create float variable for precipitation data, with chunking
    pcpo = nco.createVariable('precip', 'f4',  ('time', 'lat', 'lon'), 
       zlib=True,chunksizes=[chunk_time,chunk_lat,chunk_lon],fill_value=-9999.)
    pcpo.units = 'mm'
    pcpo.standard_name = 'convective precipitation rate'
    pcpo.long_name = 'Climate Hazards group InfraRed Precipitation with Stations'
    pcpo.time_step = 'dekad'
    pcpo.missing_value = -9999.
    pcpo.geospatial_lat_min = -50.
    pcpo.geospatial_lat_max = 50.
    pcpo.geospatial_lon_min = -180.
    pcpo.geospatial_lon_max = 180.
    pcpo.grid_mapping = 'crs'
    pcpo.set_auto_maskandscale(False)
    
    # Additional attributes
    nco.Conventions='CF-1.6'
    nco.title = "CHIRPS v2.0"
    nco.history = "created by Climate Hazards Group. University of California at Santa Barbara"
    nco.version = "Version 2.0"
    nco.comments = "time variable denotes the first day of the given dekad."
    nco.website = "https://www.chc.ucsb.edu/data/chirps"
    nco.date_created = "2020-12-10"
    nco.creator_name = "Ethan Hunt"
    nco.creator_email = "ethan.hunt@mi6.imf"
    nco.institution = "Impossible Mission Force"
    nco.note = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua"
    
    
    # Write lon,lat
    lono[:]=lon
    lato[:]=lat
    
    pat = re.compile('chirps-v2.0.[0-9]{4}\.[0-9]{2}\.[0-9]{1}')
    itime=0
    
    # Step through data, writing time and data to NetCDF
    for root, dirs, files in os.walk('/path/to/dir/'):
        dirs.sort()
        files.sort()
        for f in files:
            if re.match(pat,f):
                # read the time values by parsing the filename
                year=int(f[12:16])
                mon=int(f[17:19])
                dekad=int(f[20:21])
                date=dt.datetime(year,mon,dekad,0,0,0)
                print(date)
                dtime=(date-basedate).total_seconds()/86400.
                timeo[itime]=dtime
               # precipitation
                pcp_path = os.path.join(root,f)
                print(pcp_path)
                pcp=gdal.Open(pcp_path)
                a=pcp.ReadAsArray()  #data
                pcpo[itime,:,:]=a
                itime=itime+1
    
    nco.close()