comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: Help converting different data sets into one data set and correcting for mismatch
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: Help converting different data sets into one data set and correcting for mismatch [message #64482] Sat, 03 January 2009 22:09
Craig Markwardt is currently offline  Craig Markwardt
Messages: 1869
Registered: November 1996
Senior Member
On Jan 3, 4:18 pm, mbwel...@gmail.com wrote:
> On Jan 2, 7:36 pm, Craig Markwardt <cbmarkwa...@gmail.com> wrote:
>
>
>
>> On Jan 2, 4:56 pm, mbwel...@gmail.com wrote:
>
>>> Hello,
>
>>> I have a bit of a dilemma that I was hoping someone could advise me
>>> on. I have two separate data sets, that are set up slightly
>>> differently, but show similar data and need to be displayed together.
>
>>> The first data set is of the form array1[6,32400], where positions 0-3
>>> represent the top, bottom, left and right values of a box with a range
>>> for top and bottom of -90 to 90 and left to right of 180 to 0. It's in
>>> latitude and longitude for a hemisphere in 1x1 deg cell sizes. i.e.
>>> 90,89,180,179...
>
>>> The second data set is the same range for latitude and longitude but
>>> it is instead a simple ascii grid with each cell position representing
>>> the latitude and longitude position. i.e. column 0, row 0 =
>>> 90,89,180,179 from the above example, I think.
>
>>> I need a way to map the second data set to the first data set so that
>>> I can compare them.The only way I know how to do it right now would be
>>> very time intensive and this time I don't have right now. The other
>>> issue (which I'm checking right now) is that \they may not be exactly
>>> one to one and if that's the case, how might one stretch or shrink the
>>> second cell size in order to make them one to one?
>
>> Seems to me you need a reverse-lookup index to your ARRAY1 table.  If
>> you really have 1 degree spatial bins, then why not make a lookup
>> table that is 180x180?
>
>> INDEX = LONARR(180,180)-1
>
>> Now fill them with the index values,
>
>> II = LINDGEN(npts)  ;; npts is number of rows in ARRAY1
>> INDEX[ARRAY1[1,*],ARRAY1[3,*]] = II
>
>> Each cell of INDEX points back to the row number in ARRAY1
>> corresponding the desired geographic position.  If a cell of INDEX
>> contains -1, then there was no matching row in ARRAY1 to begin with.
>
>> Now do as many lookups as you want.  For example,
>
>> JJ = INDEX[ARRAY2[0,*], ARRAY2[1,*]]
>
>> So now ARRAY2[*,i] matches ARRAY1[*,JJ[i]]  (except of course when JJ
>> [i] is -1)
>
>> Another way: If ARRAY1 has all 180x180 entries -- no gaps -- then you
>> could get away with something similar by pre-sorting ARRAY1 so that
>> they are in geographic order.
>
>> Craig
>
> That will indeed be handy, but it turns out I have a much simpler
> question that is causing me some duress:
>
> How do you plot a simple ascii grid of values spatially? I need to
> verify the positions by mapping them, otherwise I cannot join the two
> tables. For instance, I believe that the position of the cell at
> Column 1, Row 1 corresponds to the cell 90n, 89n, 180w, 179w but
> cannot be sure until it is mapped. So, I need each cell to correspond
> to a 1x1 deg lat/lon cell size with columns corresponding to longitude
> and Rows corresponding to Latitude. Is there a way to do this easily?

You mean, like with PLOT? :-)
Re: Help converting different data sets into one data set and correcting for mismatch [message #64487 is a reply to message #64482] Sat, 03 January 2009 13:18 Go to previous message
mbweller is currently offline  mbweller
Messages: 24
Registered: July 2008
Junior Member
On Jan 2, 7:36 pm, Craig Markwardt <cbmarkwa...@gmail.com> wrote:
> On Jan 2, 4:56 pm, mbwel...@gmail.com wrote:
>
>
>
>> Hello,
>
>> I have a bit of a dilemma that I was hoping someone could advise me
>> on. I have two separate data sets, that are set up slightly
>> differently, but show similar data and need to be displayed together.
>
>> The first data set is of the form array1[6,32400], where positions 0-3
>> represent the top, bottom, left and right values of a box with a range
>> for top and bottom of -90 to 90 and left to right of 180 to 0. It's in
>> latitude and longitude for a hemisphere in 1x1 deg cell sizes. i.e.
>> 90,89,180,179...
>
>> The second data set is the same range for latitude and longitude but
>> it is instead a simple ascii grid with each cell position representing
>> the latitude and longitude position. i.e. column 0, row 0 =
>> 90,89,180,179 from the above example, I think.
>
>> I need a way to map the second data set to the first data set so that
>> I can compare them.The only way I know how to do it right now would be
>> very time intensive and this time I don't have right now. The other
>> issue (which I'm checking right now) is that \they may not be exactly
>> one to one and if that's the case, how might one stretch or shrink the
>> second cell size in order to make them one to one?
>
> Seems to me you need a reverse-lookup index to your ARRAY1 table.  If
> you really have 1 degree spatial bins, then why not make a lookup
> table that is 180x180?
>
> INDEX = LONARR(180,180)-1
>
> Now fill them with the index values,
>
> II = LINDGEN(npts)  ;; npts is number of rows in ARRAY1
> INDEX[ARRAY1[1,*],ARRAY1[3,*]] = II
>
> Each cell of INDEX points back to the row number in ARRAY1
> corresponding the desired geographic position.  If a cell of INDEX
> contains -1, then there was no matching row in ARRAY1 to begin with.
>
> Now do as many lookups as you want.  For example,
>
> JJ = INDEX[ARRAY2[0,*], ARRAY2[1,*]]
>
> So now ARRAY2[*,i] matches ARRAY1[*,JJ[i]]  (except of course when JJ
> [i] is -1)
>
> Another way: If ARRAY1 has all 180x180 entries -- no gaps -- then you
> could get away with something similar by pre-sorting ARRAY1 so that
> they are in geographic order.
>
> Craig

That will indeed be handy, but it turns out I have a much simpler
question that is causing me some duress:

How do you plot a simple ascii grid of values spatially? I need to
verify the positions by mapping them, otherwise I cannot join the two
tables. For instance, I believe that the position of the cell at
Column 1, Row 1 corresponds to the cell 90n, 89n, 180w, 179w but
cannot be sure until it is mapped. So, I need each cell to correspond
to a 1x1 deg lat/lon cell size with columns corresponding to longitude
and Rows corresponding to Latitude. Is there a way to do this easily?

~Matt
Re: Help converting different data sets into one data set and correcting for mismatch [message #64488 is a reply to message #64487] Fri, 02 January 2009 19:36 Go to previous message
Craig Markwardt is currently offline  Craig Markwardt
Messages: 1869
Registered: November 1996
Senior Member
On Jan 2, 4:56 pm, mbwel...@gmail.com wrote:
> Hello,
>
> I have a bit of a dilemma that I was hoping someone could advise me
> on. I have two separate data sets, that are set up slightly
> differently, but show similar data and need to be displayed together.
>
> The first data set is of the form array1[6,32400], where positions 0-3
> represent the top, bottom, left and right values of a box with a range
> for top and bottom of -90 to 90 and left to right of 180 to 0. It's in
> latitude and longitude for a hemisphere in 1x1 deg cell sizes. i.e.
> 90,89,180,179...
>
> The second data set is the same range for latitude and longitude but
> it is instead a simple ascii grid with each cell position representing
> the latitude and longitude position. i.e. column 0, row 0 =
> 90,89,180,179 from the above example, I think.
>
> I need a way to map the second data set to the first data set so that
> I can compare them.The only way I know how to do it right now would be
> very time intensive and this time I don't have right now. The other
> issue (which I'm checking right now) is that \they may not be exactly
> one to one and if that's the case, how might one stretch or shrink the
> second cell size in order to make them one to one?

Seems to me you need a reverse-lookup index to your ARRAY1 table. If
you really have 1 degree spatial bins, then why not make a lookup
table that is 180x180?

INDEX = LONARR(180,180)-1

Now fill them with the index values,

II = LINDGEN(npts) ;; npts is number of rows in ARRAY1
INDEX[ARRAY1[1,*],ARRAY1[3,*]] = II

Each cell of INDEX points back to the row number in ARRAY1
corresponding the desired geographic position. If a cell of INDEX
contains -1, then there was no matching row in ARRAY1 to begin with.

Now do as many lookups as you want. For example,

JJ = INDEX[ARRAY2[0,*], ARRAY2[1,*]]

So now ARRAY2[*,i] matches ARRAY1[*,JJ[i]] (except of course when JJ
[i] is -1)

Another way: If ARRAY1 has all 180x180 entries -- no gaps -- then you
could get away with something similar by pre-sorting ARRAY1 so that
they are in geographic order.

Craig
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: Re: Trouble with plotting ASCII grid.
Next Topic: problems on idl java import bridge

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Fri Oct 10 19:34:24 PDT 2025

Total time taken to generate the page: 0.24083 seconds