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

Home » Public Forums » archive » Re: Is there a way to use C++ code in IDL
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: Is there a way to use C++ code in IDL [message #34198 is a reply to message #34197] Thu, 20 February 2003 11:28 Go to previous messageGo to previous message
Paul Van Delst[1] is currently offline  Paul Van Delst[1]
Messages: 1157
Registered: April 2002
Senior Member
CelticBlues wrote:
>
> The file is a home grown tagged file format containing a type of image data
> and additional information about the conditions at the time the image was
> taken etc. Here is an example of what a simple file may look like:
> ---------------------------------------------------------
> [System]
> Name = 1
> [End]
> [Data Sets] // will be at least one data set, could be as many as 3
> DataSet1
> [End]
> [Files Attributes]
> [Conditions File]
> [Properties]
> Name = 97918.10
> CreateTime = Thu Sept 18 1997 at 11:21:36
> LastAccessTime = Mon Jan 01 1601
> LastModifiedTime = Thu Sept 18 1997 at 11:21:36
> Size = 16882000 // bytes
> [End]
> [Frame information]
> Width = 133
> Height = 148
> [End]
> [End] // end [Telemetry File]
>
> [Saved File]
> CreateDate = Tue Feb 11 2003 at 16:08:54
> Width = 133
> Height = 148
> FrameNumber = 1
> DataUnits = meters
> Comment =
> CoordinateSystem = UTM // Latlong or UTM
> [End]
>
> [End] // end [Files Attributes]
>
> [DataBlock:DataSet1]
> R1P1 R1P2...R1P148
> R2P1 R2P2...R2P148
> .
> .
> .
> R133P1 R133P2...R133P148
> [End]
>
> ---------------------------------------------------------
>
> R1P1 = Row 1 Pixel 1, R2P1 = Row 2, Pixel 2 etc.
>
> One additional bit of info... the datablock may not actually have CR/NL
> after each row, i.e. it may be
>
> [DataBlock:DataSet1]
> R1P1 R1P2...R1P148 R2P1 R2P2...R2P148 ... R133P1 R133P2...R133P148
> [End]
>
> Ok, assume that I want to rewrite the parser in IDL... From what I
> understand it is simple enough to read an ascii table from a file, but what
> about reading this type of format?

The reading isn't the problem - it's the sorting of the read-in bits. :o)

But, it doesn't look too difficult. Given what you know about the allowable syntax in your
ASCII file, you can create the structures up front, e.g.

Properties = { Name: 0.0, $
CreateTime: ' ', $
LastAccessTime: ' ', $
LastModifiedTime: ' ', $
Size: 0L }

FrameInformation = { Width: 0L, $
Height: 0L }

ConditionsFile = { Properties: Properties, $
Frame_Information: FrameInformation }

SavedFile = { ...etc }


FilesAttributes = { ConditionsFile: ConditionsFile, $
SavedFile: SavedFile }

etc..etc.

although your lines may get a bit long, e.g.

print, FilesAttributes.ConditionsFiles.Properties.LastModifiedTime

...phew!

I would use structure contructor functions (search for "Automatic Structure Definition" in
the IDL help) to do it, so you can automatically define a valid structure containing all
the allowed bits. You could also approach this in an OO way (search for "IDL Object
Overview"). I'm not an IDL OO feller, so others will have more to say about that aspect.

All the data stuff would be stored in a pointer array structure element that you can
allocate when you determine what the required dimensions are.

Actually it sounds like a neato little project to do this. you'll learn everything you
ever wanted to know about IDL structures, and if you're keen, about the OO capabilities
also.

paulv

--
Paul van Delst
CIMSS @ NOAA/NCEP/EMC
Ph: (301)763-8000 x7274
Fax:(301)763-8545
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: howto bind shortcut key to button
Next Topic: Check if coordinate is in array

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

Current Time: Fri Nov 28 19:29:54 PST 2025

Total time taken to generate the page: 2.24522 seconds