NOTE: Necessary pre-conditioning for the WODB98. Data from the GSTPP program has been included in the XBT archive. This program includes data from the TAO buoys. Data from the TAO buoys is is identified by the OCL Platform code which is an integer found in the LMR6 supplemental attachment, bytes 95-99. The identification code is 7503. During conversion to LMR the following was found: XBT, number of TAO buoy records found : 69941 Translation Specification for WOBD98 to COADS LMR6 format. Steve Worley and Joey Comeaux, August 1998 The WODB98 is stored in a packed ASCII format. Due to the large number of possible ancillary information at each profile station (e.g. surface meteorological observations, ship identication, scientists identifcation, NODC identifications, and etc.) and varying number of parameters in each profile, methods to reduce data storage requirements, relative to fix length ASCII format, were used. All the details of the pack ASCII format are not repeated here. The FORTRAN access routines developed by the NODC Ocean Climate Laboratory (called OCLREAD) were used to access each profile from the archive. These routines are available on the WODB98 CD-ROMS and are partially described in the associated documentation, "World Ocean Database 1998, Documentation and Quality Control, Ocean Climate Laboratory, National Oceanographic Data Center, Silver Springs, MD, March, 1998, National Oceanographic Data Center Internal Report 14, U.S. Department of Commerce, NOAA/NESDIS" The Fortran 77 code wrlmr6:01A (20 March 1998) was used to place the unpacked WODB98 data into the COADS LMR6 format. Fortran 77 code lmrlib.f:01A (22 June 1998) was used to handle Beaufort wind force and special adjustments related to time and dates. B10 - computed internally in wrlmr6:01A YR - 4-digit year returned by OCLREAD MO - 2-digit month returned by OCLREAD DY - 2-digit day returned by OCLREAD A missing value for DY is not specified in the WODB documentation. The OCLREAD code package does not test for legitimate DY values. DY = 0 is found in the WODB archive. This should probably be a missing value. Action: allow wrlmr6:01A software to handle DY=0 as an error. HR - Decimal value hour is returned by OCLREAD. The hour value is not fixed precision. A precision indicator is returned with each hour. The OCLREAD software assigns 99.99 to the HR (time) if missing. Other probable missing values are found. They are 100., 100.0, and 99.90. Action: allow the wrlmr6:01A software to detect these errors and write them to the error attachment. * Hour values are returned as real value with assigned precision -if precision = 0 , TI = 0 -if precision = 1 , TI = 1 -if precision >= 2 , TI = 3 * Hour values of 24., 24.0, and 24.00 are also found. The maximum allowable HR value in COADS is 23.99. It is likely that these 24.xx values mean precisely midnight GMT. These hour values are reset to 0.0, and the day, month, and year are adjusted using standard library routines ixdtnd and rxnddt. TI - set as noted in HR description LON - returned by the OCLREAD as decimal degrees * LON = negative value for west longitude LON = positive value for east longitude * LON precisions can be >= 3 and small negative values (-.001 to -.004) after conversion to east longitude are determined to be LON=360.00 by wrlmr6:01A. This results in an error and record rejection. Solution: round longitude to the nearest .01 degrees prior to call to wrlmr6:01A. * LON and LAT can occasionally have DIFFERENT precisions. Set LI based on the minimum precision of LAT and LON. * if precision = 0, LI = 1 if precision = 1, LI = 0 if precision >= 2, LI = 5 LAT - returned by the OCLREAD as decimal degrees * LAT = negative value for south latitude LAT = positive value for north latitude * LAT precision can be >= 3. Round latitude to the nearest .01 degrees prior to call to wrlmr6:01A. LI - assigned as noted in LON description DCK - set = 780 SID - set = 88 WODB98 NODC archive as of March 1994 set = 89 WODB98 non-NODC archive March 1998 PT - set = 10 - Ocean station, bottle data and STD/CTD - set = 11 - Ocean station, mechanical bathythermograph (MBT) - set = 12 - Ocean station, expendable bathythermograph (XBT) DI - set = 0, the direction is coded as a 36 point compass D - 36 point compass code value returned by OCLREAD D = (code value)*10, direction in whole degrees * if code value = 0, D is set to 361 * if code value = 99, D is set to 362 WI - see discussion for W below W - Wind speed in knots and/or Beaufort Force (10 level scale) may be extant and are returned by OCLREAD * If wind speed in knots is extant, convert to m/s with standard library routine fxktms WI is NOT set * If wind speed in knots is NOT extant use Beaufort Force if extant. Beaufort Force is converted to wind speed in m/sec using standarized library funtion fxbfms The Beaufort Wind Force scale used at NODC is equivalent to a truncated scale shown in Release 1, Table K5-5. Beaufort numbers 10, 11, and 12 are not defined by NODC, numbers 0 through 9 match those in Table K5-5. NODC Beaufort numbers are converted to wind speed in m/sec using the values defined in the "Old" midpoint column of Table K5-5. If Beaufort Wind Force scale is in error (i.e. Force value is less than 0 or greater than 9), W is not assigned and WI is not set. Note: Beaufort Wind Force is always saved in the supplemental data attachment. A few (11 in the 'BD' archive) non-integral Beaufort Wind Forces were found. These are not translated to m/s. Set WI = 5 VI - do not set VI VV - WODB98 uses the WMO 4300 code, which is in agreement with the code used in the LMR format, VV = 90 + value WW - WODB98 uses WMO 4501 or WMO 4677. WMO 4677 matches the code used in the LMR format - these codes are represented by numbers 0 through 99. When WMO 4501 is present it values 1 through 9 are converted to -1 through -9, respectively. WMO 4501 value 0 is equivalent to WMO 4677 value 0. * map all WMO 4677 values directly into WW, i.e. values 0-99. * place negative values (converted WMO 4501 code) in the supplemental attachment, i.e. place -1 through -9 in suppl. SLP - OCLREAD returns SLP in millibars T1 - The temperature indicator does not seem to be applicable for WODB98. There is likely to be some consistency in the precision of AT, and WBT, but it is not guaranteed or documented. SST will have a wide range of precision, whole degrees to 1000th of degrees. Do not set T1. DPT does not exist in WODB98 AT - OCLREAD returns "Dry Bulb Temperature", and it is returned in degrees C. WBT - OCLREAD returns WBT and it is returned in degrees C. SST - The sea temperature profile data, if it is extant, for each station is examined first and used to determine SST if the following conditions are true: * the sea temperature is from depth of 3 meters or less * the WODB98 QC flag for the selected depth is set to 0. * the WODB98 QC for the temperature at the selected depth is set to 0 (accepted value) AND the whole station profile temperature flag is set to 0 (accepted station). If the sea temperature profile cannot be used to estimate SST (primarily because there are no observations at depth less than or equal to 3 meters), then "reference sst" should used if it is extant and the following condition is true: * the whole station profile flag for sea temperature is set to 0. This may seem like an odd condition, but the OCL has done QC on the profile data and not on the "reference sst". If the whole profile is flagged to be unacceptable it is unlikely that any sea temperature is valid. Through standard deviation comparisons and bulls eyes checks whole station profile flags often mark misslocated and/or very bad data. Supplemental data directly related to the SST: 1) always place "instrument for reference temperature" in supplemental 2) always place "reference temperature" in the supplemental 3) always place the depth associated with the sea temperature used to derive the sst in the supplemental 4) if the sea temperature profile is used to determine SST place the following in the supplemental. These should only exist for the proper associated archive, i.e. XBT metadata should not be available for BD data archive. T-S probe type (2nd hdr id=29) Calibration Depth (2nd hdr id=30) Calibration Temperature (2nd hdr id=31) BT Recorder Type (2nd hdr id=32) XBT Digitization Method (2nd hdr id=35) XBT Digitization Interval (2nd hdr id=36) XBT Data Treatment and Storage (2nd hdr id=37) MBT Depth Correction (2nd hdr id=38) MBT Temperature Correction (2nd hdr id=39) SI If a sea temperature profile is used to determine a SST the following two setting are used. 11 = reversing thermometer or mechanical sensor (BD/NBD and NMB/MBT archives, note low resol. CTD is included here) 12 = electronic sensor (NCT/CTD and NXB/XBT archives) If a "reference SST" is used to estimate SST set SI according to the "instrument for reference temperature" if it exists, as follows: LMR Instru.for.ref.T description code (NODC) 0 1 bucket 1 10 condenser inlet (intake) 3 9 hull contact sensor All "reference SSTs" with non-extant "instrument for reference temperature" or with "instruments for reference temperature" not on the above list have SI = missing. N OCLREAD returns the same code as COADS for total cloud amount (cover), i.e. WMO 2700 or equivalently NODC 0105. WODB has a single cloud type code (WMO500), this code is not clearly mapable to the 3 level (low, middle, high) cloud type fields in COADS so this value is always placed in the supplemental attachment. WD OCLREAD returns a wave direction code that matches COADS LMR (WMO 0877) for values of 0 through 36. translate WODB Wave Direction = 49 to WD = 37 translate WODB Wave Direction = 99 to WD = 38 WP WODB is a combination of two codes that numerically overlap, but have very different meanings. The codes are NODC 0378 and WMO 3155. These codes are the same as shown in Tables 10 and 11 of LMR format description. Rules based on date are given in the LMR description, but no indication of similar rules are available for the WODB. It is likely, but not certain, that the same rules apply. Furthermore, WODB does not include SP (swell period) or any data specifically for swell waves. It may be the case that WP in the WODB is some convoluted mix of local wind wave period and swell period. No other documenation is available. Do NOT pack WP, but place it in the supplemental attachment. WH OCLREAD returns wave height in a .5 meter interval scale like COADS LMR, i.e. WMO (1555). The WODB scale is truncated at code = 27. The codes 28 through 49, allowable in COADS LMR, should not be extant in the WODB. Translate wave height directly into WH field. C1 The WODB country code is a two character alpha numeric value. It does not match in anyway the WMO country code for the COADS LMR format. A conversion table could be developed, however, because of pending resolution of WMO character country codes with the C1 numeric field, nothing will be done at this time. Place the country code in the supplemental attachment. II If the NODC cruise number or country code is extant set II = 7 ID place the concatenation of country code and NODC cruise number in the ID fields, note both country code and NODC cruise number also appears in the supplemental data. Only non-blank country code is packed, and only non-zero cruise numbers are packed. All characters are left justified in ID (57-64). NODC assigns unique cruise numbers for each country. Therefore the concatentation of these two codes creates a unique identification for a ship on a particular mission. Note: OCL Platform Code also has a numeric value that can be cross referenced to a ship identification, if one exists. Supplemental Data * bytes(1:8) , OCL profile number, write(csup(1:8),'(i8)')jj * bytes(9:11) , NODC country code, write(csup(9:11),'(a3)')cc this is a alpha-numeric code, see appendix 1 * bytes(12:19) , NODC criuse code, write(csup(12:19),'(i8)')icruise * bytes(20:23) , Beaufort Force, write(csup(20:23),'(i4)')nint(value) * bytes(24:27) , converted WMO 4301 weather code, -1 through -9, write(csup(24:27),'(i4)')nint(value) * bytes(28:30) , instr. for reference temperature (2nd hdr id = 40) write(csup(28:30),'(i3)')nint(value) * bytes(31:37) , reference temperature (2nd hdr id = 46) write(csup(31:37),'(f7.2)')value * bytes(38:41) , depth (m) for sea temperature from profile write(csup(38:41),'(f4.1)')value * bytes(42:45) , T-S probe type (2nd hdr id=29) write(csup(42:45),'(i4)')nint(value) * bytes(46:49) , Calibration Depth (2nd hdr id=30) write(csup(46:49),'(f4.1)')value * bytes(50:55) , Calibration Temperature (2nd hdr id=31) write(csup(50:55),'(f6.2)')value * bytes(56:58) , BT Recorder Type (2nd hdr id=32) write(csup(56:58),'(i3)')nint(value) * bytes(59:60) , XBT Digitization Method (2nd hdr id=35) write(csup(59:60),'(i2)')nint(value) * bytes(61:63) , XBT Digitization Interval (2nd hdr id=36) write(csup(61:63),'(i3)')nint(value) * bytes(64:66) , XBT Data Treatment and Storage (2nd hdr id=37) write(csup(64:66),'(i3)')nint(value) * bytes(67:70) , MBT Depth Correction (2nd hdr id=38) write(csup(67:70),'(f4.1)')value * bytes(71:76) , MBT Temperature Correction (2nd hdr id=39) write(csup(71:76),'(f6.2)')value * bytes(77:79) , cloud type (2nd hdr id = 27) write(csup(77:79),'(i3)')nint(value) * bytes(80:82) , wave period (2nd hdr id = 20) write(csup(80:82),'(i3)')nint(value) * bytes(83:85) , ocean weather station code (2nd hdr id = 9) write(csup(83:85),'(i3)')nint(value) appendix 2a * bytes(86:87) , sea state (2nd hdr id = 18) write(csup(86:87),'(i2)')nint(value) appendix 2f * bytes(88:94) , Absolute Humidity (2nd hdr id = 45) write(csup(88:94),'(f7.2)') value * bytes(95:99) , OCL Platform Code (2nd hdr id = 3) write(csup(95:),'(i5)')nint(value)