diff --git a/utils/test/prepdata.sh b/utils/test/prepdata.sh index abcc578f8..502d64371 100755 --- a/utils/test/prepdata.sh +++ b/utils/test/prepdata.sh @@ -3,7 +3,16 @@ set -e project_source_dir=$1 +ncgen -o rads_adt_3a_2021181.nc4 ${project_source_dir}/testdata/rads_adt_3a_2021181.cdl +ncgen -o rads_adt_3b_2021181.nc4 ${project_source_dir}/testdata/rads_adt_3b_2021181.cdl +ncgen -o rads_adt_3a_2021182.nc4 ${project_source_dir}/testdata/rads_adt_3a_2021182.cdl +ncgen -o rads_adt_3b_2021182.nc4 ${project_source_dir}/testdata/rads_adt_3b_2021182.cdl +ncgen -o rads_adt_c2_2021181.nc4 ${project_source_dir}/testdata/rads_adt_c2_2021181.cdl +ncgen -o rads_adt_c2_2021182.nc4 ${project_source_dir}/testdata/rads_adt_c2_2021182.cdl +ncgen -o rads_adt_j3_2021181.nc4 ${project_source_dir}/testdata/rads_adt_j3_2021181.cdl ncgen -o rads_adt_j3_2021182.nc4 ${project_source_dir}/testdata/rads_adt_j3_2021182.cdl +ncgen -o rads_adt_sa_2021181.nc4 ${project_source_dir}/testdata/rads_adt_sa_2021181.cdl +ncgen -o rads_adt_sa_2021182.nc4 ${project_source_dir}/testdata/rads_adt_sa_2021182.cdl ncgen -o icec_amsr2_north_1.nc4 ${project_source_dir}/testdata/icec_amsr2_north_1.cdl ncgen -o icec_amsr2_north_2.nc4 ${project_source_dir}/testdata/icec_amsr2_north_2.cdl ncgen -o icec_amsr2_south_1.nc4 ${project_source_dir}/testdata/icec_amsr2_south_1.cdl diff --git a/utils/test/testdata/rads_adt_3a_2021181.cdl b/utils/test/testdata/rads_adt_3a_2021181.cdl new file mode 100644 index 000000000..8cb22f2c8 --- /dev/null +++ b/utils/test/testdata/rads_adt_3a_2021181.cdl @@ -0,0 +1,110 @@ +netcdf rads_adt_3a_2021181 { +dimensions: + time = UNLIMITED ; // (11 currently) +variables: + int adt_egm2008(time) ; + adt_egm2008:_FillValue = 2147483647 ; + adt_egm2008:long_name = "absolute dynamic topography (EGM2008)" ; + adt_egm2008:standard_name = "absolute_dynamic_topography_egm2008" ; + adt_egm2008:units = "m" ; + adt_egm2008:scale_factor = 0.0001 ; + adt_egm2008:coordinates = "lon lat" ; + int adt_xgm2016(time) ; + adt_xgm2016:_FillValue = 2147483647 ; + adt_xgm2016:long_name = "absolute dynamic topography (XGM2016)" ; + adt_xgm2016:standard_name = "absolute_dynamic_topography_xgm2016" ; + adt_xgm2016:units = "m" ; + adt_xgm2016:scale_factor = 0.0001 ; + adt_xgm2016:coordinates = "lon lat" ; + int cycle(time) ; + cycle:_FillValue = 2147483647 ; + cycle:long_name = "cycle number" ; + cycle:field = 9905s ; + int lat(time) ; + lat:_FillValue = 2147483647 ; + lat:long_name = "latitude" ; + lat:standard_name = "latitude" ; + lat:units = "degrees_north" ; + lat:scale_factor = 1.e-06 ; + lat:field = 201s ; + lat:comment = "Positive latitude is North latitude, negative latitude is South latitude" ; + int lon(time) ; + lon:_FillValue = 2147483647 ; + lon:long_name = "longitude" ; + lon:standard_name = "longitude" ; + lon:units = "degrees_east" ; + lon:scale_factor = 1.e-06 ; + lon:field = 301s ; + lon:comment = "East longitude relative to Greenwich meridian" ; + int pass(time) ; + pass:_FillValue = 2147483647 ; + pass:long_name = "pass number" ; + pass:field = 9906s ; + short sla(time) ; + sla:_FillValue = 32767s ; + sla:long_name = "sea level anomaly" ; + sla:standard_name = "sea_surface_height_above_sea_level" ; + sla:units = "m" ; + sla:quality_flag = "swh sig0 range_rms range_numval flags swh_rms sig0_rms" ; + sla:scale_factor = 0.0001 ; + sla:coordinates = "lon lat" ; + sla:field = 0s ; + sla:comment = "Sea level determined from satellite altitude - range - all altimetric corrections" ; + double time_dtg(time) ; + time_dtg:long_name = "time_dtg" ; + time_dtg:standard_name = "time_dtg" ; + time_dtg:units = "yyyymmddhhmmss" ; + time_dtg:coordinates = "lon lat" ; + time_dtg:comment = "UTC time formatted as yyyymmddhhmmss" ; + double time_mjd(time) ; + time_mjd:long_name = "Modified Julian Days" ; + time_mjd:standard_name = "time" ; + time_mjd:units = "days since 1858-11-17 00:00:00 UTC" ; + time_mjd:field = 105s ; + time_mjd:comment = "UTC time of measurement expressed in Modified Julian Days" ; + +// global attributes: + :Conventions = "CF-1.7" ; + :title = "RADS 4 pass file" ; + :institution = "EUMETSAT / NOAA / TU Delft" ; + :source = "radar altimeter" ; + :references = "RADS Data Manual, Version 4.2 or later" ; + :featureType = "trajectory" ; + :ellipsoid = "TOPEX" ; + :ellipsoid_axis = 6378136.3 ; + :ellipsoid_flattening = 0.00335281317789691 ; + :filename = "rads_adt_3a_2021181.nc" ; + :mission_name = "SNTNL-3A" ; + :mission_phase = "a" ; + :log01 = "2021-07-01 | /Users/rads/bin/rads2nc --ymd=20210630000000,20210701000000 -C1,1000 -S3a -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/181/rads_adt_3a_2021181.nc: RAW data from" ; + :history = "Mon Sep 25 17:01:30 2023: ncks -d time,0,10 rads_adt_3a_2021181.nc rads_adt_3a_2021181.ncn\n", + "2021-07-01 21:14:30 : /Users/rads/bin/rads2nc --ymd=20210630000000,20210701000000 -C1,1000 -S3a -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/181/rads_adt_3a_2021181.nc" ; + :NCO = "netCDF Operators version 5.0.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; +data: + + adt_egm2008 = 1674, 2176, 1671, 2320, 2011, 2349, 2139, 2174, 2462, 2441, + 2487 ; + + adt_xgm2016 = 1621, 2300, 1938, 2652, 2093, 2246, 1948, 1976, 2406, 2469, + 2649 ; + + cycle = 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73 ; + + lat = -43973134, -43915104, -43857071, -43799035, -43740996, -43682953, + -43624907, -43566858, -43508805, -43450749, -43392690 ; + + lon = -21550109, -21571346, -21592549, -21613720, -21634859, -21655964, + -21677037, -21698078, -21719086, -21740062, -21761007 ; + + pass = 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, 517 ; + + sla = 75, 523, -338, 671, 104, 513, 128, 108, 424, 322, 497 ; + + time_dtg = 20210630000000, 20210630000001, 20210630000002, 20210630000003, + 20210630000004, 20210630000005, 20210630000006, 20210630000007, + 20210630000008, 20210630000009, 20210630000010 ; + + time_mjd = 59395, 59395.0000115741, 59395.0000231481, 59395.0000347222, + 59395.0000462963, 59395.0000578704, 59395.0000694444, 59395.0000810185, + 59395.0000925926, 59395.0001041667, 59395.0001157407 ; +} diff --git a/utils/test/testdata/rads_adt_3a_2021182.cdl b/utils/test/testdata/rads_adt_3a_2021182.cdl new file mode 100644 index 000000000..f4c1debeb --- /dev/null +++ b/utils/test/testdata/rads_adt_3a_2021182.cdl @@ -0,0 +1,111 @@ +netcdf rads_adt_3a_2021182 { +dimensions: + time = UNLIMITED ; // (11 currently) +variables: + int adt_egm2008(time) ; + adt_egm2008:_FillValue = 2147483647 ; + adt_egm2008:long_name = "absolute dynamic topography (EGM2008)" ; + adt_egm2008:standard_name = "absolute_dynamic_topography_egm2008" ; + adt_egm2008:units = "m" ; + adt_egm2008:scale_factor = 0.0001 ; + adt_egm2008:coordinates = "lon lat" ; + int adt_xgm2016(time) ; + adt_xgm2016:_FillValue = 2147483647 ; + adt_xgm2016:long_name = "absolute dynamic topography (XGM2016)" ; + adt_xgm2016:standard_name = "absolute_dynamic_topography_xgm2016" ; + adt_xgm2016:units = "m" ; + adt_xgm2016:scale_factor = 0.0001 ; + adt_xgm2016:coordinates = "lon lat" ; + int cycle(time) ; + cycle:_FillValue = 2147483647 ; + cycle:long_name = "cycle number" ; + cycle:field = 9905s ; + int lat(time) ; + lat:_FillValue = 2147483647 ; + lat:long_name = "latitude" ; + lat:standard_name = "latitude" ; + lat:units = "degrees_north" ; + lat:scale_factor = 1.e-06 ; + lat:field = 201s ; + lat:comment = "Positive latitude is North latitude, negative latitude is South latitude" ; + int lon(time) ; + lon:_FillValue = 2147483647 ; + lon:long_name = "longitude" ; + lon:standard_name = "longitude" ; + lon:units = "degrees_east" ; + lon:scale_factor = 1.e-06 ; + lon:field = 301s ; + lon:comment = "East longitude relative to Greenwich meridian" ; + int pass(time) ; + pass:_FillValue = 2147483647 ; + pass:long_name = "pass number" ; + pass:field = 9906s ; + short sla(time) ; + sla:_FillValue = 32767s ; + sla:long_name = "sea level anomaly" ; + sla:standard_name = "sea_surface_height_above_sea_level" ; + sla:units = "m" ; + sla:quality_flag = "swh sig0 range_rms range_numval flags swh_rms sig0_rms" ; + sla:scale_factor = 0.0001 ; + sla:coordinates = "lon lat" ; + sla:field = 0s ; + sla:comment = "Sea level determined from satellite altitude - range - all altimetric corrections" ; + double time_dtg(time) ; + time_dtg:long_name = "time_dtg" ; + time_dtg:standard_name = "time_dtg" ; + time_dtg:units = "yyyymmddhhmmss" ; + time_dtg:coordinates = "lon lat" ; + time_dtg:comment = "UTC time formatted as yyyymmddhhmmss" ; + double time_mjd(time) ; + time_mjd:long_name = "Modified Julian Days" ; + time_mjd:standard_name = "time" ; + time_mjd:units = "days since 1858-11-17 00:00:00 UTC" ; + time_mjd:field = 105s ; + time_mjd:comment = "UTC time of measurement expressed in Modified Julian Days" ; + +// global attributes: + :Conventions = "CF-1.7" ; + :title = "RADS 4 pass file" ; + :institution = "EUMETSAT / NOAA / TU Delft" ; + :source = "radar altimeter" ; + :references = "RADS Data Manual, Version 4.2 or later" ; + :featureType = "trajectory" ; + :ellipsoid = "TOPEX" ; + :ellipsoid_axis = 6378136.3 ; + :ellipsoid_flattening = 0.00335281317789691 ; + :filename = "rads_adt_3a_2021182.nc" ; + :mission_name = "SNTNL-3A" ; + :mission_phase = "a" ; + :log01 = "2021-07-02 | /Users/rads/bin/rads2nc --ymd=20210701000000,20210702000000 -C1,1000 -S3a -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/182/rads_adt_3a_2021182.nc: RAW data from" ; + :history = "Mon Sep 25 17:01:31 2023: ncks -d time,0,10 rads_adt_3a_2021182.nc rads_adt_3a_2021182.ncn\n", + "2021-07-02 21:11:15 : /Users/rads/bin/rads2nc --ymd=20210701000000,20210702000000 -C1,1000 -S3a -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/182/rads_adt_3a_2021182.nc" ; + :NCO = "netCDF Operators version 5.0.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; +data: + + adt_egm2008 = -4374, -3849, -3832, -3530, -3149, -2888, -2611, -2423, -2116, + -2011, -2170 ; + + adt_xgm2016 = -4617, -4012, -3779, -3212, -2781, -2466, -2048, -2067, -1971, + -2110, -2327 ; + + cycle = 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73 ; + + lat = 48396720, 48454663, 48512601, 48570535, 48628465, 48686391, 48744313, + 48802230, 48860143, 48918052, 48975957 ; + + lon = -39706628, -39730940, -39755297, -39779700, -39804149, -39828645, + -39853187, -39877776, -39902412, -39927095, -39951826 ; + + pass = 545, 545, 545, 545, 545, 545, 545, 545, 545, 545, 545 ; + + sla = -3955, -3487, -3628, -3103, -2815, -2565, -2353, -2275, -1983, -1491, + -1688 ; + + time_dtg = 20210701000001, 20210701000002, 20210701000003, 20210701000004, + 20210701000005, 20210701000006, 20210701000007, 20210701000008, + 20210701000009, 20210701000010, 20210701000011 ; + + time_mjd = 59396.0000115741, 59396.0000231481, 59396.0000347222, + 59396.0000462963, 59396.0000578704, 59396.0000694444, 59396.0000810185, + 59396.0000925926, 59396.0001041667, 59396.0001157407, 59396.0001273148 ; +} diff --git a/utils/test/testdata/rads_adt_3b_2021181.cdl b/utils/test/testdata/rads_adt_3b_2021181.cdl new file mode 100644 index 000000000..8081c7516 --- /dev/null +++ b/utils/test/testdata/rads_adt_3b_2021181.cdl @@ -0,0 +1,110 @@ +netcdf rads_adt_3b_2021181 { +dimensions: + time = UNLIMITED ; // (11 currently) +variables: + int adt_egm2008(time) ; + adt_egm2008:_FillValue = 2147483647 ; + adt_egm2008:long_name = "absolute dynamic topography (EGM2008)" ; + adt_egm2008:standard_name = "absolute_dynamic_topography_egm2008" ; + adt_egm2008:units = "m" ; + adt_egm2008:scale_factor = 0.0001 ; + adt_egm2008:coordinates = "lon lat" ; + int adt_xgm2016(time) ; + adt_xgm2016:_FillValue = 2147483647 ; + adt_xgm2016:long_name = "absolute dynamic topography (XGM2016)" ; + adt_xgm2016:standard_name = "absolute_dynamic_topography_xgm2016" ; + adt_xgm2016:units = "m" ; + adt_xgm2016:scale_factor = 0.0001 ; + adt_xgm2016:coordinates = "lon lat" ; + int cycle(time) ; + cycle:_FillValue = 2147483647 ; + cycle:long_name = "cycle number" ; + cycle:field = 9905s ; + int lat(time) ; + lat:_FillValue = 2147483647 ; + lat:long_name = "latitude" ; + lat:standard_name = "latitude" ; + lat:units = "degrees_north" ; + lat:scale_factor = 1.e-06 ; + lat:field = 201s ; + lat:comment = "Positive latitude is North latitude, negative latitude is South latitude" ; + int lon(time) ; + lon:_FillValue = 2147483647 ; + lon:long_name = "longitude" ; + lon:standard_name = "longitude" ; + lon:units = "degrees_east" ; + lon:scale_factor = 1.e-06 ; + lon:field = 301s ; + lon:comment = "East longitude relative to Greenwich meridian" ; + int pass(time) ; + pass:_FillValue = 2147483647 ; + pass:long_name = "pass number" ; + pass:field = 9906s ; + short sla(time) ; + sla:_FillValue = 32767s ; + sla:long_name = "sea level anomaly" ; + sla:standard_name = "sea_surface_height_above_sea_level" ; + sla:units = "m" ; + sla:quality_flag = "swh sig0 range_rms range_numval flags swh_rms sig0_rms" ; + sla:scale_factor = 0.0001 ; + sla:coordinates = "lon lat" ; + sla:field = 0s ; + sla:comment = "Sea level determined from satellite altitude - range - all altimetric corrections" ; + double time_dtg(time) ; + time_dtg:long_name = "time_dtg" ; + time_dtg:standard_name = "time_dtg" ; + time_dtg:units = "yyyymmddhhmmss" ; + time_dtg:coordinates = "lon lat" ; + time_dtg:comment = "UTC time formatted as yyyymmddhhmmss" ; + double time_mjd(time) ; + time_mjd:long_name = "Modified Julian Days" ; + time_mjd:standard_name = "time" ; + time_mjd:units = "days since 1858-11-17 00:00:00 UTC" ; + time_mjd:field = 105s ; + time_mjd:comment = "UTC time of measurement expressed in Modified Julian Days" ; + +// global attributes: + :Conventions = "CF-1.7" ; + :title = "RADS 4 pass file" ; + :institution = "EUMETSAT / NOAA / TU Delft" ; + :source = "radar altimeter" ; + :references = "RADS Data Manual, Version 4.2 or later" ; + :featureType = "trajectory" ; + :ellipsoid = "TOPEX" ; + :ellipsoid_axis = 6378136.3 ; + :ellipsoid_flattening = 0.00335281317789691 ; + :filename = "rads_adt_3b_2021181.nc" ; + :mission_name = "SNTNL-3B" ; + :mission_phase = "b" ; + :log01 = "2021-07-01 | /Users/rads/bin/rads2nc --ymd=20210630000000,20210701000000 -S3b -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/181/rads_adt_3b_2021181.nc: RAW data from" ; + :history = "Mon Sep 25 17:01:31 2023: ncks -d time,0,10 rads_adt_3b_2021181.nc rads_adt_3b_2021181.ncn\n", + "2021-07-01 21:31:13 : /Users/rads/bin/rads2nc --ymd=20210630000000,20210701000000 -S3b -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/181/rads_adt_3b_2021181.nc" ; + :NCO = "netCDF Operators version 5.0.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; +data: + + adt_egm2008 = 6505, 7307, 6026, 5871, 5561, 5246, 4981, 4661, 4391, 4409, + 4283 ; + + adt_xgm2016 = 3136, 4247, 4498, 4515, 4579, 4741, 4731, 4351, 4016, 3860, + 3887 ; + + cycle = 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 ; + + lat = 59732735, 59505896, 58767628, 58710774, 58653911, 58597040, 58540159, + 58483270, 58426372, 58369465, 58312550 ; + + lon = 163417447, 163262248, 162770394, 162733328, 162696369, 162659516, + 162622770, 162586128, 162549591, 162513159, 162476830 ; + + pass = 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232 ; + + sla = 4578, 5072, 1437, 756, 254, 91, -2, -170, -484, -313, -244 ; + + time_dtg = 20210630000629, 20210630000633, 20210630000646, 20210630000647, + 20210630000648, 20210630000649, 20210630000650, 20210630000651, + 20210630000652, 20210630000653, 20210630000654 ; + + time_mjd = 59395.0045023148, 59395.0045486111, 59395.0046990741, + 59395.0047106482, 59395.0047222222, 59395.0047337963, 59395.0047453704, + 59395.0047569444, 59395.0047685185, 59395.0047800926, 59395.0047916667 ; +} diff --git a/utils/test/testdata/rads_adt_3b_2021182.cdl b/utils/test/testdata/rads_adt_3b_2021182.cdl new file mode 100644 index 000000000..49604946c --- /dev/null +++ b/utils/test/testdata/rads_adt_3b_2021182.cdl @@ -0,0 +1,110 @@ +netcdf rads_adt_3b_2021182 { +dimensions: + time = UNLIMITED ; // (11 currently) +variables: + int adt_egm2008(time) ; + adt_egm2008:_FillValue = 2147483647 ; + adt_egm2008:long_name = "absolute dynamic topography (EGM2008)" ; + adt_egm2008:standard_name = "absolute_dynamic_topography_egm2008" ; + adt_egm2008:units = "m" ; + adt_egm2008:scale_factor = 0.0001 ; + adt_egm2008:coordinates = "lon lat" ; + int adt_xgm2016(time) ; + adt_xgm2016:_FillValue = 2147483647 ; + adt_xgm2016:long_name = "absolute dynamic topography (XGM2016)" ; + adt_xgm2016:standard_name = "absolute_dynamic_topography_xgm2016" ; + adt_xgm2016:units = "m" ; + adt_xgm2016:scale_factor = 0.0001 ; + adt_xgm2016:coordinates = "lon lat" ; + int cycle(time) ; + cycle:_FillValue = 2147483647 ; + cycle:long_name = "cycle number" ; + cycle:field = 9905s ; + int lat(time) ; + lat:_FillValue = 2147483647 ; + lat:long_name = "latitude" ; + lat:standard_name = "latitude" ; + lat:units = "degrees_north" ; + lat:scale_factor = 1.e-06 ; + lat:field = 201s ; + lat:comment = "Positive latitude is North latitude, negative latitude is South latitude" ; + int lon(time) ; + lon:_FillValue = 2147483647 ; + lon:long_name = "longitude" ; + lon:standard_name = "longitude" ; + lon:units = "degrees_east" ; + lon:scale_factor = 1.e-06 ; + lon:field = 301s ; + lon:comment = "East longitude relative to Greenwich meridian" ; + int pass(time) ; + pass:_FillValue = 2147483647 ; + pass:long_name = "pass number" ; + pass:field = 9906s ; + short sla(time) ; + sla:_FillValue = 32767s ; + sla:long_name = "sea level anomaly" ; + sla:standard_name = "sea_surface_height_above_sea_level" ; + sla:units = "m" ; + sla:quality_flag = "swh sig0 range_rms range_numval flags swh_rms sig0_rms" ; + sla:scale_factor = 0.0001 ; + sla:coordinates = "lon lat" ; + sla:field = 0s ; + sla:comment = "Sea level determined from satellite altitude - range - all altimetric corrections" ; + double time_dtg(time) ; + time_dtg:long_name = "time_dtg" ; + time_dtg:standard_name = "time_dtg" ; + time_dtg:units = "yyyymmddhhmmss" ; + time_dtg:coordinates = "lon lat" ; + time_dtg:comment = "UTC time formatted as yyyymmddhhmmss" ; + double time_mjd(time) ; + time_mjd:long_name = "Modified Julian Days" ; + time_mjd:standard_name = "time" ; + time_mjd:units = "days since 1858-11-17 00:00:00 UTC" ; + time_mjd:field = 105s ; + time_mjd:comment = "UTC time of measurement expressed in Modified Julian Days" ; + +// global attributes: + :Conventions = "CF-1.7" ; + :title = "RADS 4 pass file" ; + :institution = "EUMETSAT / NOAA / TU Delft" ; + :source = "radar altimeter" ; + :references = "RADS Data Manual, Version 4.2 or later" ; + :featureType = "trajectory" ; + :ellipsoid = "TOPEX" ; + :ellipsoid_axis = 6378136.3 ; + :ellipsoid_flattening = 0.00335281317789691 ; + :filename = "rads_adt_3b_2021182.nc" ; + :mission_name = "SNTNL-3B" ; + :mission_phase = "b" ; + :log01 = "2021-07-02 | /Users/rads/bin/rads2nc --ymd=20210701000000,20210702000000 -S3b -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/182/rads_adt_3b_2021182.nc: RAW data from" ; + :history = "Mon Sep 25 17:01:31 2023: ncks -d time,0,10 rads_adt_3b_2021182.nc rads_adt_3b_2021182.ncn\n", + "2021-07-02 21:24:20 : /Users/rads/bin/rads2nc --ymd=20210701000000,20210702000000 -S3b -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/182/rads_adt_3b_2021182.nc" ; + :NCO = "netCDF Operators version 5.0.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; +data: + + adt_egm2008 = 13573, 14370, 14492, 14194, 12885, 12678, 12231, 11978, 12275, + 12531, 12080 ; + + adt_xgm2016 = 14082, 14083, 13290, 12316, 12689, 12129, 11817, 11410, 11362, + 11910, 12138 ; + + cycle = 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 ; + + lat = -10235206, -10294249, -10353292, -10412335, -10648497, -10707536, + -10766575, -10825612, -10943685, -11002721, -11061755 ; + + lon = 148437742, 148424367, 148410988, 148397606, 148344044, 148330645, + 148317242, 148303836, 148277013, 148263596, 148250175 ; + + pass = 260, 260, 260, 260, 260, 260, 260, 260, 260, 260, 260 ; + + sla = 1972, 900, 783, 796, 479, 646, 542, 521, 649, 885, 757 ; + + time_dtg = 20210701000012, 20210701000013, 20210701000014, 20210701000015, + 20210701000019, 20210701000020, 20210701000021, 20210701000022, + 20210701000024, 20210701000025, 20210701000026 ; + + time_mjd = 59396.0001388889, 59396.000150463, 59396.000162037, + 59396.0001736111, 59396.0002199074, 59396.0002314815, 59396.0002430556, + 59396.0002546296, 59396.0002777778, 59396.0002893519, 59396.0003009259 ; +} diff --git a/utils/test/testdata/rads_adt_c2_2021181.cdl b/utils/test/testdata/rads_adt_c2_2021181.cdl new file mode 100644 index 000000000..75c77d4db --- /dev/null +++ b/utils/test/testdata/rads_adt_c2_2021181.cdl @@ -0,0 +1,110 @@ +netcdf rads_adt_c2_2021181 { +dimensions: + time = UNLIMITED ; // (11 currently) +variables: + int adt_egm2008(time) ; + adt_egm2008:_FillValue = 2147483647 ; + adt_egm2008:long_name = "absolute dynamic topography (EGM2008)" ; + adt_egm2008:standard_name = "absolute_dynamic_topography_egm2008" ; + adt_egm2008:units = "m" ; + adt_egm2008:scale_factor = 0.0001 ; + adt_egm2008:coordinates = "lon lat" ; + int adt_xgm2016(time) ; + adt_xgm2016:_FillValue = 2147483647 ; + adt_xgm2016:long_name = "absolute dynamic topography (XGM2016)" ; + adt_xgm2016:standard_name = "absolute_dynamic_topography_xgm2016" ; + adt_xgm2016:units = "m" ; + adt_xgm2016:scale_factor = 0.0001 ; + adt_xgm2016:coordinates = "lon lat" ; + int cycle(time) ; + cycle:_FillValue = 2147483647 ; + cycle:long_name = "cycle number" ; + cycle:field = 9905s ; + int lat(time) ; + lat:_FillValue = 2147483647 ; + lat:long_name = "latitude" ; + lat:standard_name = "latitude" ; + lat:units = "degrees_north" ; + lat:scale_factor = 1.e-07 ; + lat:field = 201s ; + lat:comment = "Positive latitude is North latitude, negative latitude is South latitude" ; + int lon(time) ; + lon:_FillValue = 2147483647 ; + lon:long_name = "longitude" ; + lon:standard_name = "longitude" ; + lon:units = "degrees_east" ; + lon:scale_factor = 1.e-07 ; + lon:field = 301s ; + lon:comment = "East longitude relative to Greenwich meridian" ; + int pass(time) ; + pass:_FillValue = 2147483647 ; + pass:long_name = "pass number" ; + pass:field = 9906s ; + short sla(time) ; + sla:_FillValue = 32767s ; + sla:long_name = "sea level anomaly" ; + sla:standard_name = "sea_surface_height_above_sea_level" ; + sla:units = "m" ; + sla:quality_flag = "swh sig0 range_rms range_numval flags peakiness" ; + sla:scale_factor = 0.0001 ; + sla:coordinates = "lon lat" ; + sla:field = 0s ; + sla:comment = "Sea level determined from satellite altitude - range - all altimetric corrections" ; + double time_dtg(time) ; + time_dtg:long_name = "time_dtg" ; + time_dtg:standard_name = "time_dtg" ; + time_dtg:units = "yyyymmddhhmmss" ; + time_dtg:coordinates = "lon lat" ; + time_dtg:comment = "UTC time formatted as yyyymmddhhmmss" ; + double time_mjd(time) ; + time_mjd:long_name = "Modified Julian Days" ; + time_mjd:standard_name = "time" ; + time_mjd:units = "days since 1858-11-17 00:00:00 UTC" ; + time_mjd:field = 105s ; + time_mjd:comment = "UTC time of measurement expressed in Modified Julian Days" ; + +// global attributes: + :Conventions = "CF-1.7" ; + :title = "RADS 4 pass file" ; + :institution = "EUMETSAT / NOAA / TU Delft" ; + :source = "radar altimeter" ; + :references = "RADS Data Manual, Version 4.2 or later" ; + :featureType = "trajectory" ; + :ellipsoid = "TOPEX" ; + :ellipsoid_axis = 6378136.3 ; + :ellipsoid_flattening = 0.00335281317789691 ; + :filename = "rads_adt_c2_2021181.nc" ; + :mission_name = "CRYOSAT2" ; + :mission_phase = "a" ; + :log01 = "2021-07-01 | /Users/rads/bin/rads2nc --ymd=20210630000000,20210701000000 -C1,1000 -Sc2 -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/181/rads_adt_c2_2021181.nc: RAW data from" ; + :history = "Mon Sep 25 17:01:32 2023: ncks -d time,0,10 rads_adt_c2_2021181.nc rads_adt_c2_2021181.ncn\n", + "2021-07-01 21:45:39 : /Users/rads/bin/rads2nc --ymd=20210630000000,20210701000000 -C1,1000 -Sc2 -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/181/rads_adt_c2_2021181.nc" ; + :NCO = "netCDF Operators version 5.0.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; +data: + + adt_egm2008 = -8346, -9689, -6959, -9170, -10636, -9609, -9818, -10438, + -9532, -8636, -8451 ; + + adt_xgm2016 = -8252, -9828, -6975, -8689, -10975, -10296, -10637, -10815, + -10057, -9349, -8957 ; + + cycle = 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145 ; + + lat = -692102268, -678003069, -677438861, -675746134, -673488919, + -672924572, -672360209, -671795828, -670667016, -670102584, -669538136 ; + + lon = -958975199, -963641198, -963818614, -964346915, -965042289, + -965214553, -965386194, -965557217, -965897428, -966066624, -966235220 ; + + pass = 587, 587, 587, 587, 587, 587, 587, 587, 587, 587, 587 ; + + sla = 1774, 95, 2867, 460, -987, -166, -519, -1145, -489, 483, 446 ; + + time_dtg = 20210630012654, 20210630012718, 20210630012719, 20210630012722, + 20210630012725, 20210630012726, 20210630012727, 20210630012728, + 20210630012730, 20210630012731, 20210630012732 ; + + time_mjd = 59395.0603546361, 59395.0606276214, 59395.0606385408, + 59395.060671299, 59395.0607149767, 59395.0607258961, 59395.0607368155, + 59395.0607477349, 59395.0607695737, 59395.0607804931, 59395.0607914125 ; +} diff --git a/utils/test/testdata/rads_adt_c2_2021182.cdl b/utils/test/testdata/rads_adt_c2_2021182.cdl new file mode 100644 index 000000000..c06bf2104 --- /dev/null +++ b/utils/test/testdata/rads_adt_c2_2021182.cdl @@ -0,0 +1,110 @@ +netcdf rads_adt_c2_2021182 { +dimensions: + time = UNLIMITED ; // (11 currently) +variables: + int adt_egm2008(time) ; + adt_egm2008:_FillValue = 2147483647 ; + adt_egm2008:long_name = "absolute dynamic topography (EGM2008)" ; + adt_egm2008:standard_name = "absolute_dynamic_topography_egm2008" ; + adt_egm2008:units = "m" ; + adt_egm2008:scale_factor = 0.0001 ; + adt_egm2008:coordinates = "lon lat" ; + int adt_xgm2016(time) ; + adt_xgm2016:_FillValue = 2147483647 ; + adt_xgm2016:long_name = "absolute dynamic topography (XGM2016)" ; + adt_xgm2016:standard_name = "absolute_dynamic_topography_xgm2016" ; + adt_xgm2016:units = "m" ; + adt_xgm2016:scale_factor = 0.0001 ; + adt_xgm2016:coordinates = "lon lat" ; + int cycle(time) ; + cycle:_FillValue = 2147483647 ; + cycle:long_name = "cycle number" ; + cycle:field = 9905s ; + int lat(time) ; + lat:_FillValue = 2147483647 ; + lat:long_name = "latitude" ; + lat:standard_name = "latitude" ; + lat:units = "degrees_north" ; + lat:scale_factor = 1.e-07 ; + lat:field = 201s ; + lat:comment = "Positive latitude is North latitude, negative latitude is South latitude" ; + int lon(time) ; + lon:_FillValue = 2147483647 ; + lon:long_name = "longitude" ; + lon:standard_name = "longitude" ; + lon:units = "degrees_east" ; + lon:scale_factor = 1.e-07 ; + lon:field = 301s ; + lon:comment = "East longitude relative to Greenwich meridian" ; + int pass(time) ; + pass:_FillValue = 2147483647 ; + pass:long_name = "pass number" ; + pass:field = 9906s ; + short sla(time) ; + sla:_FillValue = 32767s ; + sla:long_name = "sea level anomaly" ; + sla:standard_name = "sea_surface_height_above_sea_level" ; + sla:units = "m" ; + sla:quality_flag = "swh sig0 range_rms range_numval flags peakiness" ; + sla:scale_factor = 0.0001 ; + sla:coordinates = "lon lat" ; + sla:field = 0s ; + sla:comment = "Sea level determined from satellite altitude - range - all altimetric corrections" ; + double time_dtg(time) ; + time_dtg:long_name = "time_dtg" ; + time_dtg:standard_name = "time_dtg" ; + time_dtg:units = "yyyymmddhhmmss" ; + time_dtg:coordinates = "lon lat" ; + time_dtg:comment = "UTC time formatted as yyyymmddhhmmss" ; + double time_mjd(time) ; + time_mjd:long_name = "Modified Julian Days" ; + time_mjd:standard_name = "time" ; + time_mjd:units = "days since 1858-11-17 00:00:00 UTC" ; + time_mjd:field = 105s ; + time_mjd:comment = "UTC time of measurement expressed in Modified Julian Days" ; + +// global attributes: + :Conventions = "CF-1.7" ; + :title = "RADS 4 pass file" ; + :institution = "EUMETSAT / NOAA / TU Delft" ; + :source = "radar altimeter" ; + :references = "RADS Data Manual, Version 4.2 or later" ; + :featureType = "trajectory" ; + :ellipsoid = "TOPEX" ; + :ellipsoid_axis = 6378136.3 ; + :ellipsoid_flattening = 0.00335281317789691 ; + :filename = "rads_adt_c2_2021182.nc" ; + :mission_name = "CRYOSAT2" ; + :mission_phase = "a" ; + :log01 = "2021-07-02 | /Users/rads/bin/rads2nc --ymd=20210701000000,20210702000000 -C1,1000 -Sc2 -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/182/rads_adt_c2_2021182.nc: RAW data from" ; + :history = "Mon Sep 25 17:01:32 2023: ncks -d time,0,10 rads_adt_c2_2021182.nc rads_adt_c2_2021182.ncn\n", + "2021-07-02 21:40:27 : /Users/rads/bin/rads2nc --ymd=20210701000000,20210702000000 -C1,1000 -Sc2 -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/182/rads_adt_c2_2021182.nc" ; + :NCO = "netCDF Operators version 5.0.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; +data: + + adt_egm2008 = 9483, 8791, 8501, 10454, 9757, 9745, 8875, 9313, 9233, 9007, + 9057 ; + + adt_xgm2016 = 9540, 8915, 8675, 9482, 8794, 8731, 7813, 8120, 8029, 7879, + 7969 ; + + cycle = 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145 ; + + lat = 125718905, 124573093, 124000184, 122281449, 121708534, 121135618, + 120562700, 119989782, 119416862, 118843940, 118271017 ; + + lon = 748756460, 748635736, 748575388, 748394397, 748334085, 748273782, + 748213488, 748153203, 748092927, 748032659, 747972400 ; + + pass = 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, 616 ; + + sla = 2669, 947, 51, 808, 146, 455, -423, -116, 87, 135, 250 ; + + time_dtg = 20210701014130, 20210701014131, 20210701014132, 20210701014135, + 20210701014136, 20210701014137, 20210701014138, 20210701014139, + 20210701014140, 20210701014141, 20210701014142 ; + + time_mjd = 59396.0704873907, 59396.0705092295, 59396.0705201489, + 59396.0705529072, 59396.0705638266, 59396.070574746, 59396.0705856654, + 59396.0705965848, 59396.0706075042, 59396.0706184236, 59396.070629343 ; +} diff --git a/utils/test/testdata/rads_adt_j3_2021181.cdl b/utils/test/testdata/rads_adt_j3_2021181.cdl new file mode 100644 index 000000000..413b94a87 --- /dev/null +++ b/utils/test/testdata/rads_adt_j3_2021181.cdl @@ -0,0 +1,110 @@ +netcdf rads_adt_j3_2021181 { +dimensions: + time = UNLIMITED ; // (11 currently) +variables: + int adt_egm2008(time) ; + adt_egm2008:_FillValue = 2147483647 ; + adt_egm2008:long_name = "absolute dynamic topography (EGM2008)" ; + adt_egm2008:standard_name = "absolute_dynamic_topography_egm2008" ; + adt_egm2008:units = "m" ; + adt_egm2008:scale_factor = 0.0001 ; + adt_egm2008:coordinates = "lon lat" ; + int adt_xgm2016(time) ; + adt_xgm2016:_FillValue = 2147483647 ; + adt_xgm2016:long_name = "absolute dynamic topography (XGM2016)" ; + adt_xgm2016:standard_name = "absolute_dynamic_topography_xgm2016" ; + adt_xgm2016:units = "m" ; + adt_xgm2016:scale_factor = 0.0001 ; + adt_xgm2016:coordinates = "lon lat" ; + int cycle(time) ; + cycle:_FillValue = 2147483647 ; + cycle:long_name = "cycle number" ; + cycle:field = 9905s ; + int lat(time) ; + lat:_FillValue = 2147483647 ; + lat:long_name = "latitude" ; + lat:standard_name = "latitude" ; + lat:units = "degrees_north" ; + lat:scale_factor = 1.e-06 ; + lat:field = 201s ; + lat:comment = "Positive latitude is North latitude, negative latitude is South latitude" ; + int lon(time) ; + lon:_FillValue = 2147483647 ; + lon:long_name = "longitude" ; + lon:standard_name = "longitude" ; + lon:units = "degrees_east" ; + lon:scale_factor = 1.e-06 ; + lon:field = 301s ; + lon:comment = "East longitude relative to Greenwich meridian" ; + int pass(time) ; + pass:_FillValue = 2147483647 ; + pass:long_name = "pass number" ; + pass:field = 9906s ; + short sla(time) ; + sla:_FillValue = 32767s ; + sla:long_name = "sea level anomaly" ; + sla:standard_name = "sea_surface_height_above_sea_level" ; + sla:units = "m" ; + sla:quality_flag = "swh sig0 range_rms range_numval flags swh_rms sig0_rms attitude" ; + sla:scale_factor = 0.0001 ; + sla:coordinates = "lon lat" ; + sla:field = 0s ; + sla:comment = "Sea level determined from satellite altitude - range - all altimetric corrections" ; + double time_dtg(time) ; + time_dtg:long_name = "time_dtg" ; + time_dtg:standard_name = "time_dtg" ; + time_dtg:units = "yyyymmddhhmmss" ; + time_dtg:coordinates = "lon lat" ; + time_dtg:comment = "UTC time formatted as yyyymmddhhmmss" ; + double time_mjd(time) ; + time_mjd:long_name = "Modified Julian Days" ; + time_mjd:standard_name = "time" ; + time_mjd:units = "days since 1858-11-17 00:00:00 UTC" ; + time_mjd:field = 105s ; + time_mjd:comment = "UTC time of measurement expressed in Modified Julian Days" ; + +// global attributes: + :Conventions = "CF-1.7" ; + :title = "RADS 4 pass file" ; + :institution = "EUMETSAT / NOAA / TU Delft" ; + :source = "radar altimeter" ; + :references = "RADS Data Manual, Version 4.2 or later" ; + :featureType = "trajectory" ; + :ellipsoid = "TOPEX" ; + :ellipsoid_axis = 6378136.3 ; + :ellipsoid_flattening = 0.00335281317789691 ; + :filename = "rads_adt_j3_2021181.nc" ; + :mission_name = "JASON-3" ; + :mission_phase = "a" ; + :log01 = "2021-07-01 | /Users/rads/bin/rads2nc --ymd=20210630000000,20210701000000 -C1,1000 -Sj3 -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/181/rads_adt_j3_2021181.nc: RAW data from" ; + :history = "Mon Sep 25 17:01:32 2023: ncks -d time,0,10 rads_adt_j3_2021181.nc rads_adt_j3_2021181.ncn\n", + "2021-07-01 20:58:57 : /Users/rads/bin/rads2nc --ymd=20210630000000,20210701000000 -C1,1000 -Sj3 -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/181/rads_adt_j3_2021181.nc" ; + :NCO = "netCDF Operators version 5.0.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; +data: + + adt_egm2008 = 3612, 3538, 4688, 3814, 3641, 4299, 3996, 4058, 3376, 3732, + 3714 ; + + adt_xgm2016 = 3857, 3778, 4962, 4107, 4011, 4692, 4352, 4382, 3660, 3970, + 3970 ; + + cycle = 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198 ; + + lat = -24584763, -24535931, -24487094, -24438252, -24389405, -24340553, + -24291697, -24242835, -24193968, -24145096, -24096220 ; + + lon = 11002377, 11024745, 11047092, 11069419, 11091725, 11114011, 11136277, + 11158522, 11180748, 11202953, 11225138 ; + + pass = 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159 ; + + sla = 1064, 875, 2191, 1270, 1155, 1849, 1460, 1579, 911, 1264, 1254 ; + + time_dtg = 20210630000000, 20210630000001, 20210630000002, 20210630000003, + 20210630000004, 20210630000005, 20210630000006, 20210630000007, + 20210630000008, 20210630000009, 20210630000010 ; + + time_mjd = 59395.0000021617, 59395.0000139523, 59395.0000257429, + 59395.0000375336, 59395.0000493242, 59395.0000611148, 59395.0000729054, + 59395.0000846961, 59395.0000964867, 59395.0001082773, 59395.0001200679 ; +} diff --git a/utils/test/testdata/rads_adt_j3_2021182.cdl b/utils/test/testdata/rads_adt_j3_2021182.cdl index 742044652..f1674d2e3 100644 --- a/utils/test/testdata/rads_adt_j3_2021182.cdl +++ b/utils/test/testdata/rads_adt_j3_2021182.cdl @@ -1,4 +1,4 @@ -netcdf output { +netcdf rads_adt_j3_2021182 { dimensions: time = UNLIMITED ; // (11 currently) variables: @@ -76,9 +76,9 @@ variables: :filename = "rads_adt_j3_2021182.nc" ; :mission_name = "JASON-3" ; :mission_phase = "a" ; - :log01 = "2021-07-03 | /Users/rads/bin/rads2nc --ymd=20210701000000,20210702000000 -C1,1000 -Sj3 -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/ftp/rads/adt//2021/rads_adt_j3_2021182.nc: RAW data from" ; - :history = "Thu Sep 7 14:43:07 2023: ncks -d time,0,10 rads_adt_j3_2021182.nc output.nc\n", - "2021-07-03 20:56:20 : /Users/rads/bin/rads2nc --ymd=20210701000000,20210702000000 -C1,1000 -Sj3 -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/ftp/rads/adt//2021/rads_adt_j3_2021182.nc" ; + :log01 = "2021-07-02 | /Users/rads/bin/rads2nc --ymd=20210701000000,20210702000000 -C1,1000 -Sj3 -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/182/rads_adt_j3_2021182.nc: RAW data from" ; + :history = "Mon Sep 25 17:01:32 2023: ncks -d time,0,10 rads_adt_j3_2021182.nc rads_adt_j3_2021182.ncn\n", + "2021-07-02 20:55:26 : /Users/rads/bin/rads2nc --ymd=20210701000000,20210702000000 -C1,1000 -Sj3 -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/182/rads_adt_j3_2021182.nc" ; :NCO = "netCDF Operators version 5.0.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; data: diff --git a/utils/test/testdata/rads_adt_sa_2021181.cdl b/utils/test/testdata/rads_adt_sa_2021181.cdl new file mode 100644 index 000000000..87870d2a2 --- /dev/null +++ b/utils/test/testdata/rads_adt_sa_2021181.cdl @@ -0,0 +1,110 @@ +netcdf rads_adt_sa_2021181 { +dimensions: + time = UNLIMITED ; // (11 currently) +variables: + int adt_egm2008(time) ; + adt_egm2008:_FillValue = 2147483647 ; + adt_egm2008:long_name = "absolute dynamic topography (EGM2008)" ; + adt_egm2008:standard_name = "absolute_dynamic_topography_egm2008" ; + adt_egm2008:units = "m" ; + adt_egm2008:scale_factor = 0.0001 ; + adt_egm2008:coordinates = "lon lat" ; + int adt_xgm2016(time) ; + adt_xgm2016:_FillValue = 2147483647 ; + adt_xgm2016:long_name = "absolute dynamic topography (XGM2016)" ; + adt_xgm2016:standard_name = "absolute_dynamic_topography_xgm2016" ; + adt_xgm2016:units = "m" ; + adt_xgm2016:scale_factor = 0.0001 ; + adt_xgm2016:coordinates = "lon lat" ; + int cycle(time) ; + cycle:_FillValue = 2147483647 ; + cycle:long_name = "cycle number" ; + cycle:field = 9905s ; + int lat(time) ; + lat:_FillValue = 2147483647 ; + lat:long_name = "latitude" ; + lat:standard_name = "latitude" ; + lat:units = "degrees_north" ; + lat:scale_factor = 1.e-06 ; + lat:field = 201s ; + lat:comment = "Positive latitude is North latitude, negative latitude is South latitude" ; + int lon(time) ; + lon:_FillValue = 2147483647 ; + lon:long_name = "longitude" ; + lon:standard_name = "longitude" ; + lon:units = "degrees_east" ; + lon:scale_factor = 1.e-06 ; + lon:field = 301s ; + lon:comment = "East longitude relative to Greenwich meridian" ; + int pass(time) ; + pass:_FillValue = 2147483647 ; + pass:long_name = "pass number" ; + pass:field = 9906s ; + short sla(time) ; + sla:_FillValue = 32767s ; + sla:long_name = "sea level anomaly" ; + sla:standard_name = "sea_surface_height_above_sea_level" ; + sla:units = "m" ; + sla:quality_flag = "swh sig0 range_rms range_numval flags peakiness" ; + sla:scale_factor = 0.0001 ; + sla:coordinates = "lon lat" ; + sla:field = 0s ; + sla:comment = "Sea level determined from satellite altitude - range - all altimetric corrections" ; + double time_dtg(time) ; + time_dtg:long_name = "time_dtg" ; + time_dtg:standard_name = "time_dtg" ; + time_dtg:units = "yyyymmddhhmmss" ; + time_dtg:coordinates = "lon lat" ; + time_dtg:comment = "UTC time formatted as yyyymmddhhmmss" ; + double time_mjd(time) ; + time_mjd:long_name = "Modified Julian Days" ; + time_mjd:standard_name = "time" ; + time_mjd:units = "days since 1858-11-17 00:00:00 UTC" ; + time_mjd:field = 105s ; + time_mjd:comment = "UTC time of measurement expressed in Modified Julian Days" ; + +// global attributes: + :Conventions = "CF-1.7" ; + :title = "RADS 4 pass file" ; + :institution = "EUMETSAT / NOAA / TU Delft" ; + :source = "radar altimeter" ; + :references = "RADS Data Manual, Version 4.2 or later" ; + :featureType = "trajectory" ; + :ellipsoid = "TOPEX" ; + :ellipsoid_axis = 6378136.3 ; + :ellipsoid_flattening = 0.00335281317789691 ; + :filename = "rads_adt_sa_2021181.nc" ; + :mission_name = "SARAL" ; + :mission_phase = "b" ; + :log01 = "2021-07-01 | /Users/rads/bin/rads2nc --ymd=20210630000000,20210701000000 -C1,1000 -Ssa -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/181/rads_adt_sa_2021181.nc: RAW data from" ; + :history = "Mon Sep 25 17:01:32 2023: ncks -d time,0,10 rads_adt_sa_2021181.nc rads_adt_sa_2021181.ncn\n", + "2021-07-01 21:55:38 : /Users/rads/bin/rads2nc --ymd=20210630000000,20210701000000 -C1,1000 -Ssa -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/181/rads_adt_sa_2021181.nc" ; + :NCO = "netCDF Operators version 5.0.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; +data: + + adt_egm2008 = 8290, 7369, 7517, 7233, 6538, 6818, 6915, 6895, 6668, 6632, + 6600 ; + + adt_xgm2016 = 8513, 7469, 7314, 7324, 6541, 6760, 6884, 6939, 6754, 6692, + 6653 ; + + cycle = 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88 ; + + lat = 8016232, 7954920, 7709667, 7464410, 7403095, 7341780, 7280464, + 7219148, 7157832, 7096516, 7035200 ; + + lon = -90240656, -90254307, -90308881, -90363412, -90377038, -90390662, + -90404283, -90417902, -90431518, -90445131, -90458742 ; + + pass = 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34 ; + + sla = 2255, 1489, 1610, 1172, 200, 380, 575, 577, 171, 171, 161 ; + + time_dtg = 20210630000005, 20210630000006, 20210630000010, 20210630000014, + 20210630000015, 20210630000016, 20210630000017, 20210630000018, + 20210630000019, 20210630000020, 20210630000021 ; + + time_mjd = 59395.0000581955, 59395.0000701549, 59395.0001179927, + 59395.0001658304, 59395.0001777899, 59395.0001897493, 59395.0002017088, + 59395.0002136682, 59395.0002256277, 59395.0002375871, 59395.0002495466 ; +} diff --git a/utils/test/testdata/rads_adt_sa_2021182.cdl b/utils/test/testdata/rads_adt_sa_2021182.cdl new file mode 100644 index 000000000..5412aa1c1 --- /dev/null +++ b/utils/test/testdata/rads_adt_sa_2021182.cdl @@ -0,0 +1,108 @@ +netcdf rads_adt_sa_2021182 { +dimensions: + time = UNLIMITED ; // (11 currently) +variables: + int adt_egm2008(time) ; + adt_egm2008:_FillValue = 2147483647 ; + adt_egm2008:long_name = "absolute dynamic topography (EGM2008)" ; + adt_egm2008:standard_name = "absolute_dynamic_topography_egm2008" ; + adt_egm2008:units = "m" ; + adt_egm2008:scale_factor = 0.0001 ; + adt_egm2008:coordinates = "lon lat" ; + int adt_xgm2016(time) ; + adt_xgm2016:_FillValue = 2147483647 ; + adt_xgm2016:long_name = "absolute dynamic topography (XGM2016)" ; + adt_xgm2016:standard_name = "absolute_dynamic_topography_xgm2016" ; + adt_xgm2016:units = "m" ; + adt_xgm2016:scale_factor = 0.0001 ; + adt_xgm2016:coordinates = "lon lat" ; + int cycle(time) ; + cycle:_FillValue = 2147483647 ; + cycle:long_name = "cycle number" ; + cycle:field = 9905s ; + int lat(time) ; + lat:_FillValue = 2147483647 ; + lat:long_name = "latitude" ; + lat:standard_name = "latitude" ; + lat:units = "degrees_north" ; + lat:scale_factor = 1.e-06 ; + lat:field = 201s ; + lat:comment = "Positive latitude is North latitude, negative latitude is South latitude" ; + int lon(time) ; + lon:_FillValue = 2147483647 ; + lon:long_name = "longitude" ; + lon:standard_name = "longitude" ; + lon:units = "degrees_east" ; + lon:scale_factor = 1.e-06 ; + lon:field = 301s ; + lon:comment = "East longitude relative to Greenwich meridian" ; + int pass(time) ; + pass:_FillValue = 2147483647 ; + pass:long_name = "pass number" ; + pass:field = 9906s ; + short sla(time) ; + sla:_FillValue = 32767s ; + sla:long_name = "sea level anomaly" ; + sla:standard_name = "sea_surface_height_above_sea_level" ; + sla:units = "m" ; + sla:quality_flag = "swh sig0 range_rms range_numval flags peakiness" ; + sla:scale_factor = 0.0001 ; + sla:coordinates = "lon lat" ; + sla:field = 0s ; + sla:comment = "Sea level determined from satellite altitude - range - all altimetric corrections" ; + double time_dtg(time) ; + time_dtg:long_name = "time_dtg" ; + time_dtg:standard_name = "time_dtg" ; + time_dtg:units = "yyyymmddhhmmss" ; + time_dtg:coordinates = "lon lat" ; + time_dtg:comment = "UTC time formatted as yyyymmddhhmmss" ; + double time_mjd(time) ; + time_mjd:long_name = "Modified Julian Days" ; + time_mjd:standard_name = "time" ; + time_mjd:units = "days since 1858-11-17 00:00:00 UTC" ; + time_mjd:field = 105s ; + time_mjd:comment = "UTC time of measurement expressed in Modified Julian Days" ; + +// global attributes: + :Conventions = "CF-1.7" ; + :title = "RADS 4 pass file" ; + :institution = "EUMETSAT / NOAA / TU Delft" ; + :source = "radar altimeter" ; + :references = "RADS Data Manual, Version 4.2 or later" ; + :featureType = "trajectory" ; + :ellipsoid = "TOPEX" ; + :ellipsoid_axis = 6378136.3 ; + :ellipsoid_flattening = 0.00335281317789691 ; + :filename = "rads_adt_sa_2021182.nc" ; + :mission_name = "SARAL" ; + :mission_phase = "b" ; + :log01 = "2021-07-02 | /Users/rads/bin/rads2nc --ymd=20210701000000,20210702000000 -C1,1000 -Ssa -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/182/rads_adt_sa_2021182.nc: RAW data from" ; + :history = "Mon Sep 25 17:01:33 2023: ncks -d time,0,10 rads_adt_sa_2021182.nc rads_adt_sa_2021182.ncn\n", + "2021-07-02 21:51:14 : /Users/rads/bin/rads2nc --ymd=20210701000000,20210702000000 -C1,1000 -Ssa -Vsla,adt_egm2008,adt_xgm2016,time_mjd,time_dtg,lon,lat,cycle,pass -X/Users/rads/cron/xgm2016 -X/Users/rads/cron/adt -X/Users/rads/cron/time_dtg -o/Users/rads/adt/2021/182/rads_adt_sa_2021182.nc" ; + :NCO = "netCDF Operators version 5.0.6 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; +data: + + adt_egm2008 = 117, 178, -117, -75, -77, -208, 157, 282, 346, 227, 424 ; + + adt_xgm2016 = -150, -98, -67, 208, 438, 374, 368, 147, 227, 206, 642 ; + + cycle = 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88 ; + + lat = -46655742, -46594378, -46533055, -46471713, -46410368, -46349018, + -46287663, -46226305, -46164942, -46103576, -46042205 ; + + lon = 95661457, 95637364, 95613334, 95589341, 95565392, 95541487, 95517626, + 95493808, 95470032, 95446300, 95422610 ; + + pass = 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63 ; + + sla = 72, 104, 84, 184, 62, -33, 108, 165, 226, 180, 238 ; + + time_dtg = 20210701000805, 20210701000806, 20210701000807, 20210701000808, + 20210701000809, 20210701000810, 20210701000811, 20210701000812, + 20210701000813, 20210701000814, 20210701000816 ; + + time_mjd = 59396.0056188574, 59396.0056310796, 59396.0056432929, + 59396.005655509, 59396.0056677251, 59396.0056799412, 59396.0056921573, + 59396.0057043734, 59396.0057165896, 59396.0057288057, 59396.0057410218 ; +}