linuxnetcdfncocdo-climate

Is there a way to crop a NETCDF file?


Imagine that you have a file example.nc, that has wind data defined in 90N, 90S, 180E, 180W region. Is there anyway I could in linux, with a simple nc-type command (without extracting the data in matlab/python to rewrite), crop this file to include a smaller region, subset of the above.

For example, 30N, 10S, 60E and 30W.


Solution

  • nco works fine, but just to list an alternative, one can also do it using cdo (climate data operators), which I find easier to remember. You can specify directly the longitude and latitude values in this way:

    cdo sellonlatbox,lon1,lon2,lat1,lat2 infile.nc outfile.nc
    

    where lon1,lon2,lat1,lat2 define the boundaries of the area you require.

    Note that longitude can be specified using 0:360 or also -180:180 conventions irrespective of that used in the input file. The output conventions will follow those used in the cdo command. This this command can also be used to convert a file from one format to the other.

    For more details on extracting subregions, I have posted this video tutorial on youtube

    If you don't have cdo already installed you can get it on Ubuntu with

    sudo apt-get install cdo
    

    cdo has many other functions for processing, combining and splitting files and an excellent online documentation. Note that for cdo to work the coordinate variables (lat/lon) need to be defined according to CF conventions, so in that way the nco solution is more robust.