Hi Paul, > forgive me for the dumb question, but I am pretty new to NetCDF / NCO > and I am banging my head trying to make this work 'out of the box'. I > have a lot of marine sensor data to process, which is all in netcdf v3 > format (CF 1.6 convention), but the essence of my question is below. > > I have 2 sensors, a GPS and a Gyro: > > *The GPS data is in a 'position.nc' file and has 1 Hz data, > *The Gyro data is in a 'azimuth.nc' file and has 2Hz data, but the > timestamps are not necessarily the same as the GPS (ie they are > asynchronous), ie Ta, Tb, Tc > > My question is "How can I compute the azimuth from the azimuth.nc file > for the timestamps in the position.nc file and drop them into a new > variable in the position.nc file?" > > a sample azimuth file... > netcdf AzimuthTrue { > dimensions: > time = UNLIMITED ; // (10 currently) > variables: > double time(time) ; > time:units = "seconds since 1970-01-01 00:00:00" ; > time:standard_name = "time" ; > double azimuth(time) ; > azimuth:units = "degrees" ; > azimuth:long_name = "azimuth" ; > data: > time = 1.1, 1.6, 2.1, 2.6, 3.1, 3.6, 4.1, 4.6, 5.1, 5.6, 6.1, 6.6, 7.1, 7.6, > 8.1, 8.6, 9.1, 9.6, 10.1, 10.6; > azimuth = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, > 20; > } > > and a corresponding position file... > > netcdf Position { > dimensions: > time = UNLIMITED ; // (5 currently) > variables: > double time(time) ; > time:units = "seconds since 1970-01-01 00:00:00" ; > time:standard_name = "time" ; > double latitude(time) ; > latitude:units = "degrees" ; > latitude:long_name = "latitude" ; > double longitude(time) ; > longitude:units = "degrees" ; > longitude:long_name = "longitude" ; > data: > time = 1, 2, 3, 4, 5; > latitude = -31, -32, -33, -34, -35; > longitude = 114, 115, 116, 117, 118; > } > > As you can see, both have a record variable of time, but they are > asynchronous. This is due to the hardware outputting raw data at > different rates. Unfortunately, this cannot be changed, so I was hoping > to align all the data once it is in NetCDF file format. > > In this simple example, I would hope to merge the azimuth into the > position.nc file, and compute a valid azimuth for time== 1,2,3... > > Is this feasible with existing tools, or do I need to write some > software to index, then lookup a given variable (azimuth in this case) > and with something like > > double valueAt(time, variablename) > { > //interpolate across the requested vector to compute a value for the specific > time > } There are third-party freely available software packages that provide interpolation of netCDF data. If you search for "interp" in "Software for Manipulating or Displaying NetCDF Data" at http://www.unidata.ucar.edu/netcdf/software.html you'll find descriptions and links to packages such as CDO, Fimex, NCL, and NCO that each support this capability. The netCDF library just does I/O, without providing any built-in interpolation or other analysis capabilities ... --Russ Russ Rew UCAR Unidata Program address@hidden http://www.unidata.ucar.edu Ticket Details =================== Ticket ID: YGN-366139 Department: Support netCDF Priority: Normal Status: Closed
NOTE: All email exchanges with Unidata User Support are recorded in the Unidata inquiry tracking system and then made publicly available through the web. If you do not want to have your interactions made available in this way, you must let us know in each email you send to us.