;+ ; NAME: ; UVIS_PDS_READ_LABEL ; ; PURPOSE: ; This procedure will read in a subset of the fields available in a Cassini UVIS PDS label file. ; ; CALLING SEQUENCE: ; UVIS_PDS_READ_LABEL, Filename, Label ; ; INPUTS: ; Filename: UVIS PDS label file name. ; ; OUTPUTS: ; Label: A structure. ; ; RESTRICTIONS: ; Only a subset of the available fields are read. There are issues with the geometry fields that will require more ; sophisticated parsing. ; ; EXAMPLE: ; ; Read the contents of a UVIS PDS label file: ; ; Filename = 'FUV2009_090_07_06.LBL' ; UVIS_PDS_READ_LABEL, Filename, Label ; ; MODIFICATION HISTORY: ; Written by: Greg Holsclaw, University of Colorado/LASP, Aug 2013. ;- pro UVIS_PDS_READ_LABEL, Filename, Label ; ; define output structure ; Label = { $ ;PDS_VERSION_ID:'', $ ; = PDS3 ;RECORD_TYPE:'', $ ; = FIXED_LENGTH RECORD_BYTES:0L, $ ; = 131072 FILE_RECORDS:0L, $ ; = 1 PRODUCT_ID:'', $ ; = "EUV2007_070_19_55" SPACECRAFT_CLOCK_START_COUNT:'', $ ; = "1/1552336149.192" SPACECRAFT_CLOCK_STOP_COUNT:'', $ ; = "UNK" START_TIME:'', $ ; = 2007-070T19:55:48.157 STOP_TIME:'', $ ; = 2007-070T20:05:48.157 DATA_SET_ID:'', $ ; = "CO-S-UVIS-2-CUBE-V1.1" TARGET_NAME:'', $ ; = "SATURN" INSTRUMENT_HOST_NAME:'', $ ; = "CASSINI_ORBITER" INSTRUMENT_NAME:'', $ ; = "ULTRAVIOLET IMAGING SPECTROMETER" INSTRUMENT_ID:'', $ ; = "UVIS" OBSERVATION_ID:0L, $ ; = 83995 MISSION_PHASE_NAME:'', $ ; = TOUR PRODUCT_CREATION_TIME:'', $ ; = 2009-155 INTEGRATION_DURATION:'', $ ; = 600.000 COMPRESSION_TYPE:'', $ ; = "SQRT_9" HI_VOLTAGE_POWER_SUPPLY_STATE:'', $ ; = ON OCCULTATION_PORT_STATE:'', $ ; = CLOSED SLIT_STATE:'', $ ; = HIGH_RESOLUTION TEST_PULSE_STATE:'', $ ; = OFF ODC_ID:0L, $ ; = 1153 ;DESCRIPTION:'', $ ; = " ;RIGHT_ASCENSION:'', $ ;DECLINATION:'', $ ;SUB_SOLAR_LATITUDE:'', $ ;SUB_SOLAR_LONGITUDE:'', $ ;SUB_SPACECRAFT_LATITUDE:'', $ ;SUB_SPACECRAFT_LONGITUDE:'', $ ;PHASE_ANGLE:'', $ ;EMISSION_ANGLE:'', $ ;INCIDENCE_ANGLE:'', $ ;CENTRAL_BODY_DISTANCE:'', $ ;SC_PLANET_POSITION_VECTOR:'', $ ;SC_PLANET_VELOCITY_VECTOR:'', $ ;SC_SUN_POSITION_VECTOR:'', $ ;SC_SUN_VELOCITY_VECTOR:'', $ ;SC_TARGET_POSITION_VECTOR:'', $ ;SC_TARGET_VELOCITY_VECTOR:'', $ ;PLANET_CENTER_POSITION_VECTOR:'', $ ;PLANET_CENTER_VELOCITY_VECTOR:'' $ CORE_ITEMS:'', $ ; = (1024, 64, 255) CORE_ITEM_BYTES:0, $ ; = 2 CORE_ITEM_TYPE:'', $ ; = MSB_UNSIGNED_INTEGER CORE_BASE:0., $ ; = 0.0 CORE_MULTIPLIER:0., $ ; = 1.0 ;CORE_VALID_MINIMUM:'', $ ; = "N/A" CORE_NULL:0, $ = -1 CORE_NAME:'', $ CORE_UNIT:'', $ UL_CORNER_LINE:0, $ ; = 0 UL_CORNER_BAND:0, $ ; = 0 LR_CORNER_LINE:0, $ ; = 63 LR_CORNER_BAND:0, $ ; = 1023 BAND_BIN:0, $ ; = 16 LINE_BIN:0 $ ; = 64 } nfields = n_tags(Label) field_names = tag_names(Label) ; ; for each line in the ASCII file, parse the string and check if the field name matches one in the list ; openr,fid,Filename,/get_lun str = '' k = 0L WHILE (k lt nfields) and (~ EOF(fid)) DO BEGIN READF, fid, str strk = strsplit(str,'=',/extract) if n_elements(strk) gt 1 then begin str1 = strtrim(strk[0],2) str2 = strtrim(strk[1],2) if (str1 eq field_names[k]) and (str2 ne '') then begin Label.(k) = str2 k = k + 1 endif endif ENDWHILE close,fid free_lun,fid ; ; strip out any double quotes ; for i = 0, 21 do Label.(i) = strsplit( Label.(i), '"', /extract ) if n_params() eq 0 then stop return end