From 3c279434306b1c3aaf059c07c026d0f10fd6733e Mon Sep 17 00:00:00 2001 From: Ian Boyd <iboyd@astro.umass.edu> Date: Fri, 24 Jan 2025 00:44:16 +0000 Subject: [PATCH] Replace geoms_mdext.pro --- geoms_mdext.pro | 308 ++++++++++++++++++++++++------------------------ 1 file changed, 154 insertions(+), 154 deletions(-) diff --git a/geoms_mdext.pro b/geoms_mdext.pro index c3f8bb5..3d9f86b 100644 --- a/geoms_mdext.pro +++ b/geoms_mdext.pro @@ -1,154 +1,154 @@ -;--------------------------------------------------------------------------------------------------- -; -; name: geoms_mdext.pro -; description: AVDC GEOMS metadata extract -; -; 2011-08-30, v0.1 Christian Retscher initial implementation -; -;--------------------------------------------------------------------------------------------------- - -;--------------------------------------------------------------------------------------------------- -FUNCTION geoms_mdexttools, hdffile, fileid, chRelease, MDE_error_code - - reterr='' - idlcr8ascii, hdffile, ga, sds, reterr - - chMDSearch=[ $ - 'DATA_DISCIPLINE',$ - 'DATA_LOCATION',$ - 'DATA_START_DATE',$ - 'DATA_STOP_DATE',$ - 'DATA_SOURCE',$ - 'DATA_GROUP',$ - 'PI_NAME',$ - 'DO_NAME',$ - 'DS_NAME',$ - 'DATA_VARIABLES',$ - 'DATA_DESCRIPTION',$ - 'FILE_GENERATION_DATE',$ - 'PI_AFFILIATION',$ - 'DO_AFFILIATION',$ - 'DS_AFFILIATION',$] - 'FILE_META_VERSION'] - - iSize1 = size(ga, /N_ELEMENTS) - iSize2 = size(chMDSearch, /N_ELEMENTS) - - chMDVar = STRARR(iSize2) - - ; loop trough all metadata elements - for iR2 = 0, iSize2 - 1 do begin - for iR1 = 0, iSize1 - 1 do begin - chMD = STRSPLIT(ga(iR1), '=', ESCAPE='\', /EXTRACT) - - chMDTrim =STRTRIM(chMD[0], 1) - - if (chMDTrim eq chMDSearch[iR2]) then begin - - ; find SQL variables which not full, rather than parts of GEOMS variables - if (chMDTrim eq 'DATA_DISCIPLINE') then begin - chMDSplit = STRSPLIT(chMD[1], ';', ESCAPE='\', /EXTRACT) - chPlatform = chMDSplit[2] - chDiscipline = chMDSplit[0] - chAcquisition = chMDSplit[1] - end else if (chMDTrim eq 'DATA_GROUP') then begin - chMDSplit = STRSPLIT(chMD[1], ';', ESCAPE='\', /EXTRACT) - chOrigin = chMDSplit[0] - chDataGroup2 = chMDSplit[1] - end else if (chMDTrim eq 'DATA_SOURCE') then begin - chMDSplit = STRSPLIT(chMD[1], '_', ESCAPE='\', /EXTRACT) - chDataSource1 = chMDSplit[0] - chDataSource2 = chMDSplit[1] - end else if (chMDTrim eq 'PI_AFFILIATION') then begin - chMDSplit = STRSPLIT(chMD[1], ';', ESCAPE='\', /EXTRACT) - cdPIAff = chMDSplit[1] - end else if (chMDTrim eq 'DO_AFFILIATION') then begin - chMDSplit = STRSPLIT(chMD[1], ';', ESCAPE='\', /EXTRACT) - cdDOAff = chMDSplit[1] - end else if (chMDTrim eq 'DS_AFFILIATION') then begin - chMDSplit = STRSPLIT(chMD[1], ';', ESCAPE='\', /EXTRACT) - cdDSAff = chMDSplit[1] - end else begin - chMDVar[iR2] = chMD[1] - end - end - end - end - - ; file preparation for final AVDC pub2 location from /Volumes/OPS4/Data/GEOMS/Ingested/QA-pass/ - chDir1 = '/Volumes/OPS4/Data/GEOMS/Ingested/QA-pass/' - chDir2 = 'http://avdc.gsfc.nasa.gov/pub2/GEOMS/registered/' - - iSize3 = strlen(chDir1) - iSize4 = strlen(hdffile) - - if (STRMID(hdffile, 0, strlen(chDir1)) eq chDir1) then begin - chFileSplit = STRMID(hdffile, strlen(chDir1), strlen(hdffile)) - chFileURL = chDir2+chFileSplit - end else begin - chFileURL = hdffile - end - - chSQL1 = 'insert into geoms_file (datastartdate,datastopdate,file_generation_date,location,datasource,' - chSQL1 = chSQL1 + 'datasource2,platform,discipline,acquisition,origin,datagroup2,datavariables,description,' - chSQL1 = chSQL1 + 'originator,submitter,investigator,fileid,updated,originator_id,investigator_id,submitter_id,' - chSQL1 = chSQL1 + 'location_id,datasource_id,platform_id,hdf_creator,avdc_data_validator,fileurl) values' - chSQL2 = "('"+chMDVar[2]+"','"+chMDVar[3]+"','"+chMDVar[11]+"','"+chMDVar[1]+"','"+chDataSource1+"','"+chDataSource2+ $ - "','"+chPlatform+"','"+chDiscipline+"','"+chAcquisition+"','"+chOrigin+"','"+chDataGroup2+"','"+chMDVar[9]+ $ - "','"+chMDVar[10]+"','"+chMDVar[6]+";"+cdPIAff+"','"+chMDVar[7]+";"+cdDOAff+"','"+chMDVar[8]+";"+cdDSAff+"',"+ $ - strtrim(string(fileid), 2)+",timezone('utc'::text, now())"+",NULL"+",NULL"+",NULL"+",NULL"+",NULL"+",NULL"+ $ - ",'"+chMDVar[15]+"','geoms_qa "+chRelease+"','"+chFileURL+"');" - print, 'SQL: ',chSQL1, chSQL2 - -END - -;--------------------------------------------------------------------------------------------------- -PRO geoms_mdext - - args = command_line_args() - iNrArgs = size(args, /N_ELEMENTS) - - chRelease = 'v1.1, 2011-08-25' - - if ( iNrArgs lt 1 ) then begin - print - print, 'GEOMS metadata extract (geoms_mdext)' - print, ' Release '+chRelease - print, ' Extracts selected GEOMS metadata from HDF4/5 files.' - print - print, 'usage: idl -rt=geoms_mdext.sav -args [HDFFILE] [FILEID]' - print - print, '1: HDFFILE is the path of the HDF file, you want to check for template compliance' - print, '(2): FILEID as from AVDC SQL DB; if given, it is part of the SQL output' - print, '------------------------------------------------------------------------------------------------' - print - - MDE_error_code = 3 - exit, status=MDE_error_code - end - - hdffile = STRTRIM( args( 0 ), 2 ) - - if ( iNrArgs eq 2 ) then begin - fileid = STRTRIM( args( 1 ), 2 ) - end else begin - fileid = string(0) - end - - MDE_error_code = 3 - - if ( file_test( hdffile ) eq 0 ) then begin - MDE_error_code = 3 - print, ' ERROR: HDF file not found.' - end else begin - MDE_error_code = 0 - end - - if ( MDE_error_code eq 0 ) then begin - MDE_error_code = geoms_mdexttools( hdffile, fileid, chRelease, 0 ) - end - - exit, status=MDE_error_code - -END - +;--------------------------------------------------------------------------------------------------- +; +; name: geoms_mdext.pro +; description: AVDC GEOMS metadata extract +; +; 2011-08-30, v0.1 Christian Retscher initial implementation +; +;--------------------------------------------------------------------------------------------------- + +;--------------------------------------------------------------------------------------------------- +FUNCTION geoms_mdexttools, hdffile, fileid, chRelease, MDE_error_code + + reterr='' + idlcr8ascii, hdffile, ga, sds, reterr + + chMDSearch=[ $ + 'DATA_DISCIPLINE',$ + 'DATA_LOCATION',$ + 'DATA_START_DATE',$ + 'DATA_STOP_DATE',$ + 'DATA_SOURCE',$ + 'DATA_GROUP',$ + 'PI_NAME',$ + 'DO_NAME',$ + 'DS_NAME',$ + 'DATA_VARIABLES',$ + 'DATA_DESCRIPTION',$ + 'FILE_GENERATION_DATE',$ + 'PI_AFFILIATION',$ + 'DO_AFFILIATION',$ + 'DS_AFFILIATION',$] + 'FILE_META_VERSION'] + + iSize1 = size(ga, /N_ELEMENTS) + iSize2 = size(chMDSearch, /N_ELEMENTS) + + chMDVar = STRARR(iSize2) + + ; loop trough all metadata elements + for iR2 = 0, iSize2 - 1 do begin + for iR1 = 0, iSize1 - 1 do begin + chMD = STRSPLIT(ga(iR1), '=', ESCAPE='\', /EXTRACT) + + chMDTrim =STRTRIM(chMD[0], 1) + + if (chMDTrim eq chMDSearch[iR2]) then begin + + ; find SQL variables which not full, rather than parts of GEOMS variables + if (chMDTrim eq 'DATA_DISCIPLINE') then begin + chMDSplit = STRSPLIT(chMD[1], ';', ESCAPE='\', /EXTRACT) + chPlatform = chMDSplit[2] + chDiscipline = chMDSplit[0] + chAcquisition = chMDSplit[1] + end else if (chMDTrim eq 'DATA_GROUP') then begin + chMDSplit = STRSPLIT(chMD[1], ';', ESCAPE='\', /EXTRACT) + chOrigin = chMDSplit[0] + chDataGroup2 = chMDSplit[1] + end else if (chMDTrim eq 'DATA_SOURCE') then begin + chMDSplit = STRSPLIT(chMD[1], '_', ESCAPE='\', /EXTRACT) + chDataSource1 = chMDSplit[0] + chDataSource2 = chMDSplit[1] + end else if (chMDTrim eq 'PI_AFFILIATION') then begin + chMDSplit = STRSPLIT(chMD[1], ';', ESCAPE='\', /EXTRACT) + cdPIAff = chMDSplit[1] + end else if (chMDTrim eq 'DO_AFFILIATION') then begin + chMDSplit = STRSPLIT(chMD[1], ';', ESCAPE='\', /EXTRACT) + cdDOAff = chMDSplit[1] + end else if (chMDTrim eq 'DS_AFFILIATION') then begin + chMDSplit = STRSPLIT(chMD[1], ';', ESCAPE='\', /EXTRACT) + cdDSAff = chMDSplit[1] + end else begin + chMDVar[iR2] = chMD[1] + end + end + end + end + + ; file preparation for final AVDC pub2 location from /Volumes/OPS4/Data/GEOMS/Ingested/QA-pass/ + chDir1 = '/Volumes/OPS4/Data/GEOMS/Ingested/QA-pass/' + chDir2 = 'http://avdc.gsfc.nasa.gov/pub2/GEOMS/registered/' + + iSize3 = strlen(chDir1) + iSize4 = strlen(hdffile) + + if (STRMID(hdffile, 0, strlen(chDir1)) eq chDir1) then begin + chFileSplit = STRMID(hdffile, strlen(chDir1), strlen(hdffile)) + chFileURL = chDir2+chFileSplit + end else begin + chFileURL = hdffile + end + + chSQL1 = 'insert into geoms_file (datastartdate,datastopdate,file_generation_date,location,datasource,' + chSQL1 = chSQL1 + 'datasource2,platform,discipline,acquisition,origin,datagroup2,datavariables,description,' + chSQL1 = chSQL1 + 'originator,submitter,investigator,fileid,updated,originator_id,investigator_id,submitter_id,' + chSQL1 = chSQL1 + 'location_id,datasource_id,platform_id,hdf_creator,avdc_data_validator,fileurl) values' + chSQL2 = "('"+chMDVar[2]+"','"+chMDVar[3]+"','"+chMDVar[11]+"','"+chMDVar[1]+"','"+chDataSource1+"','"+chDataSource2+ $ + "','"+chPlatform+"','"+chDiscipline+"','"+chAcquisition+"','"+chOrigin+"','"+chDataGroup2+"','"+chMDVar[9]+ $ + "','"+chMDVar[10]+"','"+chMDVar[6]+";"+cdPIAff+"','"+chMDVar[7]+";"+cdDOAff+"','"+chMDVar[8]+";"+cdDSAff+"',"+ $ + strtrim(string(fileid), 2)+",timezone('utc'::text, now())"+",NULL"+",NULL"+",NULL"+",NULL"+",NULL"+",NULL"+ $ + ",'"+chMDVar[15]+"','geoms_qa "+chRelease+"','"+chFileURL+"');" + print, 'SQL: ',chSQL1, chSQL2 + +END + +;--------------------------------------------------------------------------------------------------- +PRO geoms_mdext + + args = command_line_args() + iNrArgs = size(args, /N_ELEMENTS) + + chRelease = 'v1.1, 2011-08-25' + + if ( iNrArgs lt 1 ) then begin + print + print, 'GEOMS metadata extract (geoms_mdext)' + print, ' Release '+chRelease + print, ' Extracts selected GEOMS metadata from HDF4/5 files.' + print + print, 'usage: idl -rt=geoms_mdext.sav -args [HDFFILE] [FILEID]' + print + print, '1: HDFFILE is the path of the HDF file, you want to check for template compliance' + print, '(2): FILEID as from AVDC SQL DB; if given, it is part of the SQL output' + print, '------------------------------------------------------------------------------------------------' + print + + MDE_error_code = 3 + exit, status=MDE_error_code + end + + hdffile = STRTRIM( args( 0 ), 2 ) + + if ( iNrArgs eq 2 ) then begin + fileid = STRTRIM( args( 1 ), 2 ) + end else begin + fileid = string(0) + end + + MDE_error_code = 3 + + if ( file_test( hdffile ) eq 0 ) then begin + MDE_error_code = 3 + print, ' ERROR: HDF file not found.' + end else begin + MDE_error_code = 0 + end + + if ( MDE_error_code eq 0 ) then begin + MDE_error_code = geoms_mdexttools( hdffile, fileid, chRelease, 0 ) + end + + exit, status=MDE_error_code + +END + -- GitLab