|
MeteoTools::LoadScreenField
BOOL LoadScreenField(time_t date,int
hour,int count,ScreenGridData &screenfield);
Return Value
Nonzero if successful; otherwise 0.
Parameters
date
the meteo basis time reference
as type time_t (see
CTime)
hour
the hour step, will be added to
the date (hour * 3600)
if hour -1, that means you want synop data
count
the field size, the size of
sreenfield.
sreenfield
The
ScreenGridData
is a array for symbols,
that receive the meteo data set.
This contains later the data values for screen figures and so
one...
You must choose a
size for the symbol grid,
that is normal a square of
30 pixel, that means divide the screen / 30 squares
Remarks
Load a data field with meteo
data, for own screen drawing or data analysis.
Note:
This initiates the internal data
structures for all the next data accesses.
Example
// center point of Screen
// sx = mySreenSize.cx / 2; sy = mySreenSize.cy / 2;
// xoff,yoff,xscale,yscale --> see
DrawSeaData
// You yourself should put hour and date
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// Bonito counted from
left/top to bottom/right
// all the transfomations see the refence point on the center of the screen
// the world cordinates system that Bonito use:
//
// in minutes = 180W to 180E --> -10800 to 10800
//
90N to 90S --> -5400 to 5400
#define GRIDWIDTH 30
//grid point width
#define GRIDMIDDLE 15
//the middle dot of the
squares
ScreenGridData sc_data;
int
grid_yy=mySreenSize.cy/GRIDWIDTH+1; //screen-Y /
gridwidth
int
grid_xx=mySreenSize.cx/GRIDWIDTH+1; //screen-X /
gridwidth
int Y,X;
int count=grid_yy*grid_xx;
sc_data.SetSize(count);
for(z=0; z<count; z++)
{
Y=sc_data[z].y=((z/grid_xx)*GRIDWIDTH)+GRIDMIDDLE;
X=sc_data[z].x=((z%grid_xx)*GRIDWIDTH)+GRIDMIDDLE;
sc_data[z].lon= -(int)(xoff +
((double)(sx - X) *xscale));
sc_data[z].lat= -(int)(lmapyoff +
((double)(sy - Y) * yscale));
}
if(!LoadScreenField(date,hour,count,sc_data))....
See Also DrawSeaData ,
DrawSfcData ,DrawSynData
|