comp.lang.idl-pvwave archive - RDF feed
type: channel
description: Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado
items: Re: storing in array

Re: storing in array
type: item
description: On May 11, 12:48 am, kishore1...@gmail.com wrote: > Hi, > > I am new in IDL language. For reading the CALIPSO satellite data sets > in that what type of cloud type for that they provided read routine. > If I use this routine it is printing on IDL log window. How to store > this information into an string array. > This is the routine > vfm_feature_flags,36282 > The output is like this: > Bit set: 2 > Bit set: 4 > Bit set: 5 > Bit set: 6 > Bit set: 8 > Bit set: 9 > Bit set: 11 > Bit set: 12 > Bit set: 16 > Feature Type : cloud > Feature Subtype : cirrus (transparent) > Feature Type QA : high > Ice/Water Phase : ice > Ice/Water Phase QA: high > Cloud/Aerosol/PSC Type QA : not confident > Horizontal averaging required for detection: 20 km > > The above information i want to store in string array. > > ;************************routine******************** > pro vfm_feature_flags,val > ; this routine demonstrates how to read and extract values from a > feature > ; classification flag 16-bit integer value in CALIPSO Level 2 > Vertical > ; Feature Mask files > ; > ; INPUT: > ; val - the feature classification flag value to be decoded > ; > ; OUTPUT: > ; all information is printed into the IDL log window > > print, val > > feature_type = 0 > feature_type_qa = 0 > ice_water_phase = 0 > ice_water_phase_qa = 0 > feature_subtype = 0 > cloud_aerosol_psc_type_qa = 0 > horizontal_averaging = 0 > > for i=0,15 do begin > if ((val and 2L^i) NE 0) then begin > print,'Bit set: ',i+1 > case i+1 of > 1 : feature_type = feature_type + 1 > 2 : feature_type = feature_type + 2 > 3 : feature_type = feature_type + 4 > 4 : feature_type_qa = feature_type_qa + 1 > 5 : feature_type_qa = feature_type_qa + 2 > 6 : ice_water_phase = ice_water_phase + 1 > 7 : ice_water_phase = ice_water_phase + 2 > 8 : ice_water_phase_qa = ice_water_phase_qa + 1 > 9 : ice_water_phase_qa = ice_water_phase_qa + 2 > 10 : feature_subtype = feature_subtype + 1 > 11 : feature_subtype = feature_subtype + 2 > 12 : feature_subtyp…
creator: Spon
date: 2008-05-11T08:11:04-00:00

Re: storing in array
type: item
description: On May 11, 5:11 am, Spon <christoph.b...@gmail.com> wrote: > On May 11, 12:48 am, kishore1...@gmail.com wrote: > > > >> Hi, > >> I am new in IDL language. For reading the CALIPSO satellite data sets >> in that what type of cloud type for that they provided read routine. >> If I use this routine it is printing on IDL log window. How to store >> this information into an string array. >> This is the routine >> vfm_feature_flags,36282 >> The output is like this: >> Bit set: 2 >> Bit set: 4 >> Bit set: 5 >> Bit set: 6 >> Bit set: 8 >> Bit set: 9 >> Bit set: 11 >> Bit set: 12 >> Bit set: 16 >> Feature Type : cloud >> Feature Subtype : cirrus (transparent) >> Feature Type QA : high >> Ice/Water Phase : ice >> Ice/Water Phase QA: high >> Cloud/Aerosol/PSC Type QA : not confident >> Horizontal averaging required for detection: 20 km > >> The above information i want to store in string array. > >> ;************************routine******************** >> pro vfm_feature_flags,val >> ; this routine demonstrates how to read and extract values from a >> feature >> ; classification flag 16-bit integer value in CALIPSO Level 2 >> Vertical >> ; Feature Mask files >> ; >> ; INPUT: >> ; val - the feature classification flag value to be decoded >> ; >> ; OUTPUT: >> ; all information is printed into the IDL log window > >> print, val > >> feature_type = 0 >> feature_type_qa = 0 >> ice_water_phase = 0 >> ice_water_phase_qa = 0 >> feature_subtype = 0 >> cloud_aerosol_psc_type_qa = 0 >> horizontal_averaging = 0 > >> for i=0,15 do begin >> if ((val and 2L^i) NE 0) then begin >> print,'Bit set: ',i+1 >> case i+1 of >> 1 : feature_type = feature_type + 1 >> 2 : feature_type = feature_type + 2 >> 3 : feature_type = feature_type + 4 >> 4 : feature_type_qa = feature_type_qa + 1 >> 5 : feature_type_qa = feature_type_qa + 2 >> 6 : ice_water_phase = ice_water_phase + 1 >> 7 : ice_water_phase = ice_water_phase + 2 >> 8 : ice_water_phase_qa = ice_water_phase_qa + 1 >> 9 : ice_water_phase_qa = ice_wate…
creator: kishore1818
date: 2008-05-11T21:26:37-00:00

Re: storing in array
type: item
description: On May 11, 10:26 pm, kishore1...@gmail.com wrote: > On May 11, 5:11 am, Spon <christoph.b...@gmail.com> wrote: > > > >> On May 11, 12:48 am, kishore1...@gmail.com wrote: > >>> Hi, > >>> I am new in IDL language. For reading the CALIPSO satellite data sets >>> in that what type of cloud type for that they provided read routine. >>> If I use this routine it is printing on IDL log window. How to store >>> this information into an string array. >>> This is the routine >>> vfm_feature_flags,36282 >>> The output is like this: >>> Bit set: 2 >>> Bit set: 4 >>> Bit set: 5 >>> Bit set: 6 >>> Bit set: 8 >>> Bit set: 9 >>> Bit set: 11 >>> Bit set: 12 >>> Bit set: 16 >>> Feature Type : cloud >>> Feature Subtype : cirrus (transparent) >>> Feature Type QA : high >>> Ice/Water Phase : ice >>> Ice/Water Phase QA: high >>> Cloud/Aerosol/PSC Type QA : not confident >>> Horizontal averaging required for detection: 20 km > >>> The above information i want to store in string array. > >>> ;************************routine******************** >>> pro vfm_feature_flags,val >>> ; this routine demonstrates how to read and extract values from a >>> feature >>> ; classification flag 16-bit integer value in CALIPSO Level 2 >>> Vertical >>> ; Feature Mask files >>> ; >>> ; INPUT: >>> ; val - the feature classification flag value to be decoded >>> ; >>> ; OUTPUT: >>> ; all information is printed into the IDL log window > >>> print, val > >>> feature_type = 0 >>> feature_type_qa = 0 >>> ice_water_phase = 0 >>> ice_water_phase_qa = 0 >>> feature_subtype = 0 >>> cloud_aerosol_psc_type_qa = 0 >>> horizontal_averaging = 0 > >>> for i=0,15 do begin >>> if ((val and 2L^i) NE 0) then begin >>> print,'Bit set: ',i+1 >>> case i+1 of >>> 1 : feature_type = feature_type + 1 >>> 2 : feature_type = feature_type + 2 >>> 3 : feature_type = feature_type + 4 >>> 4 : feature_type_qa = feature_type_qa + 1 >>> 5 : feature_type_qa = feature_type_qa + 2 >>> 6 : ice_water_phase = ice_water_phase + 1 >>> 7 : ice_water_pha…
creator: Spon
date: 2008-05-12T10:03:03-00:00

Re: storing in array
type: item
description: On May 12, 11:03 am, Spon <christoph.b...@gmail.com> wrote: > Output = { feature_type:"", $ > feature_type_qa:"", $ > ice_water_phase:"", $ > ice_water_phase_qa:"", $ > feature_subtype:"", $ > ; etc. , $ > } > case feature_type of > 0 : Output.FeatureType = 'invalid (bad or missing data)' > 1 : Output.FeatureType = 'clear air' > 2 : begin > Output.FeatureType = 'cloud' > case feature_subtype of > 0 : Output.FeatureSubType = 'low overcast, transparent' > 1 : Output.FeatureSubType = 'low overcast, opaque' Obviously, your variable names have to match up (including structure field names), which they don't in my example, sorry. > 0 : Output.FeatureType = 'invalid (bad or missing data)' > 1 : Output.FeatureSubType = 'low overcast, opaque' and so on should be > 0 : Output.Feature_Type = 'invalid (bad or missing data)' > 1 : Output.Feature_SubType = 'low overcast, opaque' to make my example work.
creator: Spon
date: 2008-05-12T11:18:51-00:00

Re: storing in array
type: item
description: On May 11, 12:48 am, kishore1...@gmail.com wrote: > vfm_feature_flags,36282 Also, be careful: the above number is converted to a longword integer by IDL. This might cause headaches later on if you're expecting a 16- bit input. You could use: vfm_feature_flags,36282u to ensure the number is defined as a 16-bit unsigned integer. I would protect my code like this: --- function vfm_feature_flags, input ; Check input if input gt 65535L or input lt -32767L then $ message, 'Input not a 16-bit flag.' ; Convert input to unsigned integer val = uint(input) --- You've already written a loop to convert your flag to sub-flags, so this may be superfluous, but I've had a dig around the format codes and come up with this: --- ; Convert to left-zero-padded 16-char string bval = string(val, format = '(B016)') ; And then you can extract substrings to get ; the sub-flag values using ReadS: ftflag = strmid(bval, 0, 3) ; Position 0, length 3 feature_type = 0u reads, ftflag, format = '(B)', feature_type ftqflag = strmid(bval, 3, 2) ; Position 3, length 2 feature_type_qa = 0u reads, ftqflag, format = '(B)', feature_type_qa ; and so on. --- I have to say, the fact that ReadS is a procedure and not a function, plus the fact that you can't pass type codes to it for your output does seem a bit counter-intuitive to me. Your FOR loop will in theory be slower,but probably not noticably; and at least it's pretty easy to follow compared to messing about with format codes. But it can be done without the loop. Regards, Chris
creator: Spon
date: 2008-05-12T14:09:15-00:00

Re: storing in array
type: item
description: On May 12, 8:18 am, Spon <christoph.b...@gmail.com> wrote: > On May 12, 11:03 am, Spon <christoph.b...@gmail.com> wrote: > >> Output = { feature_type:"", $ >> feature_type_qa:"", $ >> ice_water_phase:"", $ >> ice_water_phase_qa:"", $ >> feature_subtype:"", $ >> ; etc. , $ >> } >> case feature_type of >> 0 : Output.FeatureType = 'invalid (bad or missing data)' >> 1 : Output.FeatureType = 'clear air' >> 2 : begin >> Output.FeatureType = 'cloud' >> case feature_subtype of >> 0 : Output.FeatureSubType = 'low overcast, transparent' >> 1 : Output.FeatureSubType = 'low overcast, opaque' > > Obviously, your variable names have to match up (including structure > field names), which they don't in my example, sorry. > >> 0 : Output.FeatureType = 'invalid (bad or missing data)' >> 1 : Output.FeatureSubType = 'low overcast, opaque' > > and so on > should be > >> 0 : Output.Feature_Type = 'invalid (bad or missing data)' >> 1 : Output.Feature_SubType = 'low overcast, opaque' > > to make my example work. Hi, Thanks for your suggestions, I modified according your suggestions. Pl. go through my program pro vfm_feature_flags1,val ; this routine demonstrates how to read and extract values from a feature ; classification flag 16-bit integer value in CALIPSO Level 2 Vertical ; Feature Mask files ; ; INPUT: ; val - the feature classification flag value to be decoded ; ; OUTPUT: ; all information is printed into the IDL log window print, val feature_type = 0 feature_type_qa = 0 ice_water_phase = 0 ice_water_phase_qa = 0 feature_subtype = 0 cloud_aerosol_psc_type_qa = 0 horizontal_averaging = 0 Output = { feature_type:"", $ feature_type_qa:"", $ ice_water_phase:"", $ ice_water_phase_qa:"", $ feature_subtype:"", $ cloud_aerosol_psc_type_qa:"", $ horizontal_averaging:""} for i=0,15 do begin if ((val and 2L^i) NE 0) then begin print,'Bit set: ',i+1 case i+1 of 1 : feature_type = feature_type + 1 2 : feature_type = feature_type + 2 3 : feature_type = feature_type + 4 4 : feature_type_qa = featu…
creator: kishore1818
date: 2008-05-12T15:35:26-00:00

Re: storing in array
type: item
description: On May 12, 4:35 pm, kishore1...@gmail.com wrote: > > Hi, > Thanks for your suggestions, I modified according your suggestions. > Pl. go through my program > pro vfm_feature_flags1,val FUNCTION VFM_FEATURE_FLAGS1, Input > > ; this routine demonstrates how to read and extract values from a > feature > ; classification flag 16-bit integer value in CALIPSO Level 2 > Vertical > ; Feature Mask files > ; > ; INPUT: > ; val - the feature classification flag value to be decoded > ; > ; OUTPUT: > ; all information is printed into the IDL log window ; Make sure input is usable IF Input GT 65535L OR Input LT -32767L THEN $ MESSAGE, 'Input not a 16-bit flag.' ; Convert input to 16-bit value Val = UINT(Input) > print, val > > feature_type = 0 > feature_type_qa = 0 > ice_water_phase = 0 > ice_water_phase_qa = 0 > feature_subtype = 0 > cloud_aerosol_psc_type_qa = 0 > horizontal_averaging = 0 > > Output = { feature_type:"", $ > feature_type_qa:"", $ > ice_water_phase:"", $ > ice_water_phase_qa:"", $ > feature_subtype:"", $ > cloud_aerosol_psc_type_qa:"", $ > horizontal_averaging:""} > > for i=0,15 do begin > if ((val and 2L^i) NE 0) then begin > print,'Bit set: ',i+1 > case i+1 of > 1 : feature_type = feature_type + 1 > 2 : feature_type = feature_type + 2 > 3 : feature_type = feature_type + 4 > 4 : feature_type_qa = feature_type_qa + 1 > 5 : feature_type_qa = feature_type_qa + 2 > 6 : ice_water_phase = ice_water_phase + 1 > 7 : ice_water_phase = ice_water_phase + 2 > 8 : ice_water_phase_qa = ice_water_phase_qa + 1 > 9 : ice_water_phase_qa = ice_water_phase_qa + 2 > 10 : feature_subtype = feature_subtype + 1 > 11 : feature_subtype = feature_subtype + 2 > 12 : feature_subtype = feature_subtype + 4 > 13 : cloud_aerosol_psc_type_qa = cloud_aerosol_psc_type_qa + 1 > 14 : horizontal_averaging = horizontal_averaging + 1 > 15 : horizontal_averaging = horizontal_averaging + 2 > 16: horizontal_averaging = horizontal_averaging + 4 > else: > endcase > endif > endfor > > case feature_type of > 0…
creator: Spon
date: 2008-05-12T16:06:03-00:00

Re: storing in array
type: item
description: On May 12, 1:06 pm, Spon <christoph.b...@gmail.com> wrote: > On May 12, 4:35 pm, kishore1...@gmail.com wrote: > > > >> Hi, >> Thanks for your suggestions, I modified according your suggestions. >> Pl. go through my program >> pro vfm_feature_flags1,val > > FUNCTION VFM_FEATURE_FLAGS1, Input > > > >> ; this routine demonstrates how to read and extract values from a >> feature >> ; classification flag 16-bit integer value in CALIPSO Level 2 >> Vertical >> ; Feature Mask files >> ; >> ; INPUT: >> ; val - the feature classification flag value to be decoded >> ; >> ; OUTPUT: >> ; all information is printed into the IDL log window > > ; Make sure input is usable > IF Input GT 65535L OR Input LT -32767L THEN $ > MESSAGE, 'Input not a 16-bit flag.' > > ; Convert input to 16-bit value > Val = UINT(Input) > > > >> print, val > >> feature_type = 0 >> feature_type_qa = 0 >> ice_water_phase = 0 >> ice_water_phase_qa = 0 >> feature_subtype = 0 >> cloud_aerosol_psc_type_qa = 0 >> horizontal_averaging = 0 > >> Output = { feature_type:"", $ >> feature_type_qa:"", $ >> ice_water_phase:"", $ >> ice_water_phase_qa:"", $ >> feature_subtype:"", $ >> cloud_aerosol_psc_type_qa:"", $ >> horizontal_averaging:""} > >> for i=0,15 do begin >> if ((val and 2L^i) NE 0) then begin >> print,'Bit set: ',i+1 >> case i+1 of >> 1 : feature_type = feature_type + 1 >> 2 : feature_type = feature_type + 2 >> 3 : feature_type = feature_type + 4 >> 4 : feature_type_qa = feature_type_qa + 1 >> 5 : feature_type_qa = feature_type_qa + 2 >> 6 : ice_water_phase = ice_water_phase + 1 >> 7 : ice_water_phase = ice_water_phase + 2 >> 8 : ice_water_phase_qa = ice_water_phase_qa + 1 >> 9 : ice_water_phase_qa = ice_water_phase_qa + 2 >> 10 : feature_subtype = feature_subtype + 1 >> 11 : feature_subtype = feature_subtype + 2 >> 12 : feature_subtype = feature_subtype + 4 >> 13 : cloud_aerosol_psc_type_qa = cloud_aerosol_psc_type_qa + 1 >> 14 : horizontal_averaging = horizontal_averaging + 1 >> 15 : horizontal_averaging = …
creator: kishore1818
date: 2008-05-12T17:29:44-00:00