Re: data extraction question
- To: mathgroup at smc.vnet.net
- Subject: [mg63796] Re: [mg63749] data extraction question
- From: "David Annetts" <davidannetts at aapt.net.au>
- Date: Sat, 14 Jan 2006 02:33:10 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Hi Ross,
<snippage>
> these are coordinate values of polygons, and the * represents
> the end of that polygon, so what I want to do is change:
>
> 599.50 3557.00
> *\
> 607.50 3561.50
> *\
> 616.00 3566.00
> *\
> 618.00 3573.50
> *\
> 625.00 3579.50
> *\
> 629.50 3586.50
> *\
> 631.00 3592.50
> *\
> 631.50 3599.50
> *\
> 641.50 3604.00
> *
> 778.00 3842.00
> *\
> 783.00 3837.50
> *\
> 787.50 3828.00
> *\
> 790.00 3819.50
> *\
> 800.50 3809.00
> *\
> 803.00 3795.00
> *
>
>
> into;
> 599.50 3557.00
> 607.50 3561.50
> 616.00 3566.00
> 618.00 3573.50
> 625.00 3579.50
> 629.50 3586.50
> 631.00 3592.50
> 631.50 3599.50
> 641.50 3604.00
> ;
> 778.00 3842.00
> 783.00 3837.50
> 787.50 3828.00
> 790.00 3819.50
> 800.50 3809.00
> 803.00 3795.00
> ;
I have no idea what IRAF format is. If you post an example, it may be
possible to read the polygons directly using a combination of ReadList &
RecordSeparators.
I've assumed that your first list lives in a file called Martin.txt, then
lst = ReadList["c:/tmpfiles/Martin.txt", {Number, Number, Word}]
will return the data as a list of triples.
We can find the positions of each polygon in the list using the following
(longwinded) code
Flatten[Position[lst, #] & /@ Select[lst, (#[[3]] == "*") &]];
Prepend[%, 0]
Transpose@Partition[%, 2, 1]
% /. {x_, y_} -> {x + 1, y}
Transpose[%]
And extract them using
Take[lst, #] & /@ %
Thereafter, you can do what you want. For example, we can plot them, after
transforming each triple to a pair, using
Map[Most, %, 2]
Map[Polygon, %]
Show[Graphics[%], Frame -> True];
Regards,
Dave.