IDL USER QUESTION:: "I have an IDL problem that I haven’t been able to solve and was hoping you might be able to point me in the right direction. I have a raster that I’ve read into an array and I want to perform an operation only where there aren’t the no data values of -32767. I thought I could use the if statements but they don’t work on arrays obviously. Is there an array expression equivalent that will allow me to do this?" ANSWER: Here is example code that illustrates how target value elements in an array can be detected and manipulated without looping: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; create short int array data data = fix( randomu(seed, 10, 10, /long) ) help, data ; select array index locations to assign bad value ibad = fix( randomu(seed, 20) * 100 ) help, ibad badval = -32767 data[ibad] = badval ; assign elements bad data print, data ; get array index locations with good data igood = where( data NE badval ) ; if one or more array element indexes are returned ; (not a scalar -1) then manipulate those array elements if igood[0] NE -1 then $ data[igood] = 0 ; manipulate good data print print, data ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; For additional information about using arrays in IDL see also: https://www.harrisgeospatial.com/docs/Arrays.html https://www.harrisgeospatial.com/docs/WHERE.html
|