Saving tracks#

huracanpy.save supports saving data as CSV or NetCDF which is detected by the file extension.

You can also use xarray.Dataset.to_netcdf to save NetCDF files, but they must then be loaded with xarray.open_dataset huracanpy.save does call to_netcdf but also has some additional steps to make sure the resulting NetCDF file uses the CF convention used for loading.

[1]:
import huracanpy

tracks = huracanpy.load(huracanpy.example_csv_file)  # Load sample file
huracanpy.save(tracks, "saved_data.csv")  # Save as csv
huracanpy.save(tracks, "saved_data.nc")  # Save as NetCDF
[2]:
!head -5 saved_data.csv
track_id,i,j,lon,lat,slp,zs,wind10,time
0,482,417,120.5,-14.25,99876.38,-10.7118,14.64815,1980-01-06 06:00:00
0,476,419,119.0,-14.75,99811.0,-16.10522,13.98848,1980-01-06 12:00:00
0,476,420,119.0,-15.0,99536.94,-40.20874,13.69575,1980-01-06 18:00:00
0,477,420,119.25,-15.0,99414.56,-50.43206,17.97812,1980-01-07 00:00:00
[3]:
!ncdump -h saved_data.nc
netcdf saved_data {
dimensions:
        trajectory = 3 ;
        record = 99 ;
variables:
        int64 track_id(trajectory) ;
        int64 i(record) ;
        int64 j(record) ;
        double lon(record) ;
                lon:_FillValue = NaN ;
        double lat(record) ;
                lat:_FillValue = NaN ;
        double slp(record) ;
                slp:_FillValue = NaN ;
        double zs(record) ;
                zs:_FillValue = NaN ;
        double wind10(record) ;
                wind10:_FillValue = NaN ;
        int64 time(record) ;
                time:units = "hours since 1980-01-06 06:00:00" ;
                time:calendar = "proleptic_gregorian" ;
        int64 rowSize(trajectory) ;
                rowSize:sample_dimension = "record" ;
}