diff --git a/geoms_tc.pro b/geoms_tc.pro index cf411055f9c7fc88c031466c139807e2973c5f6c..40cce669364b371812f1341f0f03517e6a56c2f8 100644 --- a/geoms_tc.pro +++ b/geoms_tc.pro @@ -1,139 +1,140 @@ -;--------------------------------------------------------------------------------------------------- -; -; name: geoms_tc.pro -; description: AVDC/EVDC GEOMS template checker tool -; -; 2011-02-03, v0.1 Christian Retscher initial implementation -; 2011-04-11, v0.2 Christian Retscher MWR support addded -; concept: 1) GEOMS-VA -> HDF; 2) HDF -> GEOMS-VA checks -; 2011-04-17, v0.3 Christian Retscher FTIR support start -; filter for [SOLAR|LUNAR], [ppmv|ppbv|pptv], "...()" -; 2011-04-23, v0.4 Christian Retscher FTIR support finalized, LIDAR support tested -; 2011-04-25, v0.5 Christian Retscher Full LIDAR support added -; 2011-04-26, v0.6 Christian Retscher Split in wrapper and TC tools (keep versioning) -; 2011-05-13, v0.7 Christian Retscher Integrate UVVIS.DOAS -; 2013-12-19, v1.3 Ian Boyd align with geoms_tctools version -; 2014-01-28, v1.34 Ian Boyd align geoms_tools version due to change in geoms_tctools -; 2014-03-11, v1.35 Ian Boyd align versions with geoms_tools -; 2014-03-25, v1.36 Ian Boyd update due to modification to idlcr8ascii -; 2014-03-29, v1.37 Ian Boyd update due to modification to idlcr8hdf -; 2014-05-22, v1.38 Ian Boyd update due to modification to idlcr8hdf -; 2014-08-06, v1.39 Ian Boyd update due to modification to idlcr8hdf and geoms_tools -; 2014-09-09, v1.40 Ian Boyd update due to modification to idlcr8hdf and geoms_tools -; 2014-11-10, v1.41 Ian Boyd update due to modification to idlcr8hdf and idlcr8ascii -; 2015-01-27, v1.42 Ian Boyd update due to modification to idlcr8hdf and idlcr8ascii -; 2015-02-17, v1.43 Ian Boyd update due to modification to idlcr8hdf and idlcr8ascii -; 2015-03-02, v1.44 Ian Boyd update due to bug fix in idlcr8hdf -; 2015-04-09, v1.45 Ian Boyd update due to bug fix in idlcr8hdf -; 2015-08-11, v1.46 Ian Boyd update due to bug fixes and improvements in idlcr8hdf -; 2015-09-26, v1.47 Ian Boyd update due to bug fixes and improvements in idlcr8hdf -; 2015-10-21, v1.48 Ian Boyd update due to bug fixes and improvements in idlcr8hdf -; 2015-11-04, v1.49 Ian Boyd update due to fix in idlcr8hdf -; 2015-11-09, v1.50 Ian Boyd update due to bug fixes and improvements in idlcr8hdf and idlcr8ascii -; 2015-11-16, v1.51 Ian Boyd update due to fix in idlcr8hdf -; 2015-12-15, v1.52 Ian Boyd update due to fix in idlcr8hdf -; 2016-02-13, v1.53 Ian Boyd Add extra satellite instruments to the obsolete list for DATA_SOURCE -; in idlcr8hdf. Modifications to idlcr8hdf and idlc8ascii -; 2016-06-14, v1.54 Ian Boyd update due to fix in idlcr8ascii -; 2016-07-25, v1.55 Ian Boyd update due to fix in idlcr8ascii and idlcr8hdf -; 2016-11-16, v1.56 Ian Boyd update due to fix in idlcr8hdf -; 2016-11-30, v1.57 Ian Boyd update due to fix in idlcr8ascii and idlcr8hdf and account for -; non-GEOMS variable attributes (ptr_valid check) in geoms_tctools -; 2016-12-17, v1.58 Ian Boyd update due to fixes in idlcr8ascii -; 2016-12-30, v1.59 Ian Boyd Add FV keyword to geoms_tools (options 20-22 in geoms_harmon call). -; If called then forces the DATA_FILE_VERSION not to increment when -; performing harmonization; Incorporates fixes made to idlcr8hdf -; 2017-03-31, v1.60 Ian Boyd update due to improvements to idlcr8hdf -; 2017-11-21, v1.61 Ian Boyd update due to fixes in idlcr8hdf -; 2018-02-18, v1.62 Ian Boyd update due to fix in idlcr8ascii and idlcr8hdf -; 2018-03-14, v1.63 Ian Boyd update due to fix in idlcr8hdf -; 2018-05-28, v1.64 Ian Boyd update due to fix in idlcr8hdf -; 2018-09-01, v1.65 Ian Boyd update due to fix in idlcr8hdf -; 2018-11-16, v1.66 Ian Boyd update due to fix in idlcr8ascii -; 2019-05-06, v1.67 Ian Boyd QA checks now carried out using the metadata definitions in the TAV version -; given in the FILE_META_VERSION global attribute. If this attribute is invalid -; or not present, or the TAV file can't be located, the input TAV file will -; be used for checks but an error code will be generated. Fix to idlcr8hdf -; that caused a crash if the file does not use a DATA_TEMPLATE -; 2019-05-14, v1.68 Ian Boyd update due to fix in idlcr8ascii -; 2019-08-07, v1.69 Ian Boyd update due to modifications to idlcr8ascii and idlcr8hdf -; 2019-08-21, v1.70 Ian Boyd update due to fix in idlcr8ascii -; 2019-12-05, v2.00 Ian Boyd update due to changes in geoms_qa to support checks on the optional DATA_SOURCE -; Version Name value (third field in DATA_SOURCE). -; 2020-02-26, v2.01 Ian Boyd update due to geoms_vntools updates -; 2020-03-11, v2.02 Ian Boyd update due to fix to idlcr8hdf -; 2020-04-27, v2.03 Ian Boyd update due to geoms_vntools update -; 2020-07-09, v2.04 Ian Boyd update due to fix to idlcr8hdf -; 2020-09-30, v2.05 Ian Boyd update due to fix to idlcr8ascii; geoms_tools now returns a QA_error_code -; value of -2 to geoms_qa if idlcr8ascii can't read the input file, to stop -; template and version name checks -; 2020-10-20, v2.06 Ian Boyd update due to fixes to idlcr8hdf -; 2020-10-26, v2.07 Ian Boyd update due to fix to idlcr8hdf -; 2020-11-22, v2.08 Ian Boyd QA checks carried out using the metadata definitions in the TAV version -; determined by the FILE_GENERATION_DATE (FGD), in the first instance, then the -; FILE_META_VERSION (FMV), if different. This adds a check for the FMV TAV version -; using definitions that are out-of-date. If either TAV can't be determined or found -; then the input TAV will be used for checks and an error generated -; 2020-12-11, v2.09 Ian Boyd Apply fixes and improvements to procedures identifying correct TAV version(s) to -; use for checks; Fix IDL Math Error (Floating Illegal Operand) in idlcr8hdf -; 2021-06-17, v2.10 Ian Boyd update due to fix to idlcr8hdf -; 2022-08-09, v2.11 Ian Boyd update due to fixes and improvements in geoms_tools, idlcr8hdf and idlcr8ascii -; 2023-12-18, v2.12 Ian Boyd update due to fixes to idlcr8hdf and geoms_vntools -; 2024-01-12, v2.13 Ian Boyd update due to fix to idlcr8hdf -; 2024-09-12, v2.14 Ian Boyd update due to fixes to idlcrascii and idlcr8hdf -;--------------------------------------------------------------------------------------------------- - -PRO geoms_tc - - args = command_line_args() - iNrArgs = size(args, /N_ELEMENTS) - - if ( iNrArgs ne 2 ) then begin - print - print, 'GEOMS template checker (geoms_tc)' - print, ' Release v2.14, 2024-09-12' - print, ' Does GEOMS template compliance checks on HDF4/5 files.' - print - print, 'usage: idl -rt=geoms_tc.sav -args [GEOMS-TE-FILE] [HDFFILE] ' - print - print, '1: GEOMS-TE-FILE is the path to the GEOMS template file' - print, '2: HDFFILE is the path of the HDF file, you want to check for template compliance' - print, '------------------------------------------------------------------------------------------------' - print - - TC_error_code = 3 - exit, status=TC_error_code - end - - templatefile = STRTRIM( args( 0 ), 2 ) - hdffile = STRTRIM( args( 1 ), 2 ) - - TC_error_code = 3 - - if ( file_test( hdffile ) eq 0 ) then begin - TC_error_code = 3 - print, ' ERROR: HDF file not found.' - end else begin - TC_error_code = 0 - end - - if ( file_test( templatefile ) eq 0 ) then begin - TC_error_code = 3 - print, ' ERROR: GEOMS template file not found.' - end else begin - TC_error_code = 0 - end - - ; find and remove log file (see geoms_tools.pro) - logfile=STRMID(hdffile,0,STRPOS(hdffile,'.',/REVERSE_SEARCH))+'.log' - openw,lu,logfile,/GET_LUN - close - - if ( TC_error_code eq 0 ) then begin - TC_error_code = geoms_tctools( templatefile, hdffile, 0 ) - end - - print, TC_error_code - exit, status=TC_error_code - -END +;--------------------------------------------------------------------------------------------------- +; +; name: geoms_tc.pro +; description: AVDC/EVDC GEOMS template checker tool +; +; 2011-02-03, v0.1 Christian Retscher initial implementation +; 2011-04-11, v0.2 Christian Retscher MWR support addded +; concept: 1) GEOMS-VA -> HDF; 2) HDF -> GEOMS-VA checks +; 2011-04-17, v0.3 Christian Retscher FTIR support start +; filter for [SOLAR|LUNAR], [ppmv|ppbv|pptv], "...()" +; 2011-04-23, v0.4 Christian Retscher FTIR support finalized, LIDAR support tested +; 2011-04-25, v0.5 Christian Retscher Full LIDAR support added +; 2011-04-26, v0.6 Christian Retscher Split in wrapper and TC tools (keep versioning) +; 2011-05-13, v0.7 Christian Retscher Integrate UVVIS.DOAS +; 2013-12-19, v1.3 Ian Boyd align with geoms_tctools version +; 2014-01-28, v1.34 Ian Boyd align geoms_tools version due to change in geoms_tctools +; 2014-03-11, v1.35 Ian Boyd align versions with geoms_tools +; 2014-03-25, v1.36 Ian Boyd update due to modification to idlcr8ascii +; 2014-03-29, v1.37 Ian Boyd update due to modification to idlcr8hdf +; 2014-05-22, v1.38 Ian Boyd update due to modification to idlcr8hdf +; 2014-08-06, v1.39 Ian Boyd update due to modification to idlcr8hdf and geoms_tools +; 2014-09-09, v1.40 Ian Boyd update due to modification to idlcr8hdf and geoms_tools +; 2014-11-10, v1.41 Ian Boyd update due to modification to idlcr8hdf and idlcr8ascii +; 2015-01-27, v1.42 Ian Boyd update due to modification to idlcr8hdf and idlcr8ascii +; 2015-02-17, v1.43 Ian Boyd update due to modification to idlcr8hdf and idlcr8ascii +; 2015-03-02, v1.44 Ian Boyd update due to bug fix in idlcr8hdf +; 2015-04-09, v1.45 Ian Boyd update due to bug fix in idlcr8hdf +; 2015-08-11, v1.46 Ian Boyd update due to bug fixes and improvements in idlcr8hdf +; 2015-09-26, v1.47 Ian Boyd update due to bug fixes and improvements in idlcr8hdf +; 2015-10-21, v1.48 Ian Boyd update due to bug fixes and improvements in idlcr8hdf +; 2015-11-04, v1.49 Ian Boyd update due to fix in idlcr8hdf +; 2015-11-09, v1.50 Ian Boyd update due to bug fixes and improvements in idlcr8hdf and idlcr8ascii +; 2015-11-16, v1.51 Ian Boyd update due to fix in idlcr8hdf +; 2015-12-15, v1.52 Ian Boyd update due to fix in idlcr8hdf +; 2016-02-13, v1.53 Ian Boyd Add extra satellite instruments to the obsolete list for DATA_SOURCE +; in idlcr8hdf. Modifications to idlcr8hdf and idlc8ascii +; 2016-06-14, v1.54 Ian Boyd update due to fix in idlcr8ascii +; 2016-07-25, v1.55 Ian Boyd update due to fix in idlcr8ascii and idlcr8hdf +; 2016-11-16, v1.56 Ian Boyd update due to fix in idlcr8hdf +; 2016-11-30, v1.57 Ian Boyd update due to fix in idlcr8ascii and idlcr8hdf and account for +; non-GEOMS variable attributes (ptr_valid check) in geoms_tctools +; 2016-12-17, v1.58 Ian Boyd update due to fixes in idlcr8ascii +; 2016-12-30, v1.59 Ian Boyd Add FV keyword to geoms_tools (options 20-22 in geoms_harmon call). +; If called then forces the DATA_FILE_VERSION not to increment when +; performing harmonization; Incorporates fixes made to idlcr8hdf +; 2017-03-31, v1.60 Ian Boyd update due to improvements to idlcr8hdf +; 2017-11-21, v1.61 Ian Boyd update due to fixes in idlcr8hdf +; 2018-02-18, v1.62 Ian Boyd update due to fix in idlcr8ascii and idlcr8hdf +; 2018-03-14, v1.63 Ian Boyd update due to fix in idlcr8hdf +; 2018-05-28, v1.64 Ian Boyd update due to fix in idlcr8hdf +; 2018-09-01, v1.65 Ian Boyd update due to fix in idlcr8hdf +; 2018-11-16, v1.66 Ian Boyd update due to fix in idlcr8ascii +; 2019-05-06, v1.67 Ian Boyd QA checks now carried out using the metadata definitions in the TAV version +; given in the FILE_META_VERSION global attribute. If this attribute is invalid +; or not present, or the TAV file can't be located, the input TAV file will +; be used for checks but an error code will be generated. Fix to idlcr8hdf +; that caused a crash if the file does not use a DATA_TEMPLATE +; 2019-05-14, v1.68 Ian Boyd update due to fix in idlcr8ascii +; 2019-08-07, v1.69 Ian Boyd update due to modifications to idlcr8ascii and idlcr8hdf +; 2019-08-21, v1.70 Ian Boyd update due to fix in idlcr8ascii +; 2019-12-05, v2.00 Ian Boyd update due to changes in geoms_qa to support checks on the optional DATA_SOURCE +; Version Name value (third field in DATA_SOURCE). +; 2020-02-26, v2.01 Ian Boyd update due to geoms_vntools updates +; 2020-03-11, v2.02 Ian Boyd update due to fix to idlcr8hdf +; 2020-04-27, v2.03 Ian Boyd update due to geoms_vntools update +; 2020-07-09, v2.04 Ian Boyd update due to fix to idlcr8hdf +; 2020-09-30, v2.05 Ian Boyd update due to fix to idlcr8ascii; geoms_tools now returns a QA_error_code +; value of -2 to geoms_qa if idlcr8ascii can't read the input file, to stop +; template and version name checks +; 2020-10-20, v2.06 Ian Boyd update due to fixes to idlcr8hdf +; 2020-10-26, v2.07 Ian Boyd update due to fix to idlcr8hdf +; 2020-11-22, v2.08 Ian Boyd QA checks carried out using the metadata definitions in the TAV version +; determined by the FILE_GENERATION_DATE (FGD), in the first instance, then the +; FILE_META_VERSION (FMV), if different. This adds a check for the FMV TAV version +; using definitions that are out-of-date. If either TAV can't be determined or found +; then the input TAV will be used for checks and an error generated +; 2020-12-11, v2.09 Ian Boyd Apply fixes and improvements to procedures identifying correct TAV version(s) to +; use for checks; Fix IDL Math Error (Floating Illegal Operand) in idlcr8hdf +; 2021-06-17, v2.10 Ian Boyd update due to fix to idlcr8hdf +; 2022-08-09, v2.11 Ian Boyd update due to fixes and improvements in geoms_tools, idlcr8hdf and idlcr8ascii +; 2023-12-18, v2.12 Ian Boyd update due to fixes to idlcr8hdf and geoms_vntools +; 2024-01-12, v2.13 Ian Boyd update due to fix to idlcr8hdf +; 2024-09-12, v2.14 Ian Boyd update due to fixes to idlcrascii and idlcr8hdf +; 2024-09-27, v2.15 Ian Boyd update due to fix to idlcr8ascii +;--------------------------------------------------------------------------------------------------- + +PRO geoms_tc + + args = command_line_args() + iNrArgs = size(args, /N_ELEMENTS) + + if ( iNrArgs ne 2 ) then begin + print + print, 'GEOMS template checker (geoms_tc)' + print, ' Release v2.15, 2024-09-27' + print, ' Does GEOMS template compliance checks on HDF4/5 files.' + print + print, 'usage: idl -rt=geoms_tc.sav -args [GEOMS-TE-FILE] [HDFFILE] ' + print + print, '1: GEOMS-TE-FILE is the path to the GEOMS template file' + print, '2: HDFFILE is the path of the HDF file, you want to check for template compliance' + print, '------------------------------------------------------------------------------------------------' + print + + TC_error_code = 3 + exit, status=TC_error_code + end + + templatefile = STRTRIM( args( 0 ), 2 ) + hdffile = STRTRIM( args( 1 ), 2 ) + + TC_error_code = 3 + + if ( file_test( hdffile ) eq 0 ) then begin + TC_error_code = 3 + print, ' ERROR: HDF file not found.' + end else begin + TC_error_code = 0 + end + + if ( file_test( templatefile ) eq 0 ) then begin + TC_error_code = 3 + print, ' ERROR: GEOMS template file not found.' + end else begin + TC_error_code = 0 + end + + ; find and remove log file (see geoms_tools.pro) + logfile=STRMID(hdffile,0,STRPOS(hdffile,'.',/REVERSE_SEARCH))+'.log' + openw,lu,logfile,/GET_LUN + close + + if ( TC_error_code eq 0 ) then begin + TC_error_code = geoms_tctools( templatefile, hdffile, 0 ) + end + + print, TC_error_code + exit, status=TC_error_code + +END