TOC  | xsites |      |              |              | INDEX


Site Information Files


These are binary files containing the history of coordinate, velocity, hardware and ocean loading information for GPS tracking sites.


Information Types

Record
ID
Description
C coordinate, velocity, plate information
A antenna type and ARP-MON eccentricity
R receiver type
G/T geocentric or topocentric offset from reference monument
O ocean-loading model parameters
M met sensor types and PRP-ARP offset
ARP = Antenna Reference Point
MON = MONument
PRP = Pressure sensor Reference Point

Hereafter, a single grouping of information comprising one of these types will be referred to as a record.  The information contained in a record are defined by C style data structures.  There are definitions, and routines for reading and writing these records defined for both C/C++ and Fortran.  General information on the record sturcture, the info common to all record types, defined standard size parameters, and the C, A, R, G/T, O and M record types is available.


Information Organization

All records for a site are grouped together in a file.  Within the group for a single site, records are ordered C's, G's/T's, R's, A's, O's and M's.  Finally, for each record type for each site, records are sorted using the date the information becomes valid and the modification date as primary and secondary keys respectively. 

General Information About Site Information Data Structures


The site information file is formatted to be read as an unformatted sequential file from (HP) FORTRAN.  The structure of
binary FORTRAN input/output (I/O) is:

SIZE<--------INFO------->SIZE

where:

In FORTRAN, these "SIZE" integers are inserted by the executable for the user.  In C, an alternate strategy is used for binary I/O so, to be compatible with FORTRAN, these "SIZE" integers must be handled explicity in the programmer's code.

The "INFO" is broken into two general categories in the site information records,

Graphically, the general sturcture of these records look like:

RECORD = <-common-><-----info-------->
or
RECORD = SIZE<--------INFO------->SIZE

Note that the leading "SIZE" integer begins the common data structure, the trailing "SIZE" integer concludes the type specific data structure.
 
 

The structures delineating the common and other information data types, and other relatined definitions are stored in the sidata.h header file.



 

Global Size Definitions

A suite of global definitions are included in sidata.h to improve standardization and maintainability.  These include

#define DATA_FORMAT     ((long)1)
#define FORMAT_99MAR15  ((long)2)

#define EPS_MINUTE      ((double)30.0/(double)86000.0)
#define EPS_SECOND      ((double)0.5/(double)86000.0)

#define MAX_record      256

#define MAX_altname     40
#define MAX_comment     60
#define MAX_domes       9
#define MAX_frame       7
#define MAX_from        16
#define MAX_fw          16
#define MAX_id          6
#define MAX_key         1
#define MAX_name_m1     16
#define MAX_name        20
#define MAX_plate       4
#define MAX_seq         1
#define MAX_sitename    24
#define MAX_sn          16
#define MAX_to          16

#define STR_altname     (MAX_altname+1)
#define STR_comment     (MAX_comment+1)
#define STR_domes       (MAX_domes+1)
#define STR_frame       (MAX_frame+1)
#define STR_from        (MAX_from+1)
#define STR_fw          (MAX_fw+1)
#define STR_id          (MAX_id+1)
#define STR_key         (MAX_key+1)
#define STR_name        (MAX_name+1)
#define STR_plate       (MAX_plate+1)
#define STR_seq         (MAX_seq+1)
#define STR_sitename    (MAX_sitename+1)
#define STR_sn          (MAX_sn+1)
#define STR_to          (MAX_to+1)



 

The Common Information Structure


The "common" structure has the following items:
size total size in bytes minus leading/trailing 4 byte integers 4 byte long
modmjd  modification time high part [MJD] 4 byte long
modday modification time low part [day] 8 byte double
type "type" appears in this structure to fulfill the 8 byte
boundary requirement of HP hardware.
To minimize wasted space, "type"
has meanings dependent upon the record type:
A   = corresponding numeric antenna type ID
C   = no use
M   = no use
O   = G/T = additive offsets
OLT = no use
R   = corresponding numeric receiver type ID
4 byte long
valmjd  first valid epoch high part [MJD] 4 byte long
valday  first valid epoch low part [day] 8 byte double
key  record type, i.e. A, C, M, ... 1 byte char
id  site ID 6 byte char
seq site point code character 1 byte char
Total size 40 bytes

struct common_data_info {
        long   size;
        long   modmjd;
        double modday;
        long   type;
        long   valmjd;
        double valday;
        char   key;
        char   id[MAX_id];
        char   seq;
};



 

The Antenna Data Structure

n north eccentricty component (meters) 8 byte double
e east eccentricty component (meters) 8 byte double
u up eccentricty component (meters) 8 byte double
from name of starting point of eccentricity 16 byte char
to name of ending point of eccentricity 16 byte char
name antenna ID 20 byte char
sn serial number 16 byte char
comment descriptive comment 60 byte char
dummy dummy variable required to meet 8 byte word boundary 4 byte char
size total size in bytes minus leading/trailing 4 byte integers 4 byte long
Total size (antenna only) 160 bytes

The eccentricity is a local topocentric vector.  The "from" and "to" strings are provided to hold short reminders of the beginning and ending points of the eccentricity.  In almost every conceivable case, these should be "from" MON, "to" ARP.

struct antenna {
        double n;
        double e;
        double u;
        char   from[MAX_from];
        char   to[MAX_to];
        char   name[MAX_name];
        char   sn[MAX_sn];
        char   comment[MAX_comment];
        char   dummy[4];
        long   size;
};



 

The Coordinate/Velocity Data Structure

x ECF X coordinate (meters) 8 byte double
y ECF Y coordinate (meters) 8 byte double
z ECF Z coordinate (meters) 8 byte double
xsig X coordinate sigma (meter) 8 byte double
ysig Y coordinate sigma (meter) 8 byte double
zsig Z coordinate sigma (meter) 8 byte double
vx X velocity component (meter/year) 8 byte double
vy Y velocity component (meter/year) 8 byte double
vz Z velocity component (meter/year) 8 byte double
vxsig X velocity sigma (meter/year) 8 byte double
vysig Y velocity sigma (meter/year) 8 byte double
vzsig Z velocity sigma (meter/year) 8 byte double
refmjd coordinate reference epoch (MJD) 4 byte long
refday coordinate reference epoch (day) 8 byte double
frame coordinate frame ID string 7 byte char
domes IERS DOMES number 9 byte char
plate tectonic plate ID string 4 byte char
sitename political (human recognizable) site name, e.g. albh = "Alberts Head, BC" 24 byte char
altname alternate site name 40 byte char
comment descriptive comment 60 byte char
size total size in bytes minus leading/trailing 4 byte integers 4 byte long
Total size (coordinates only) 256 bytes

The coordinates are in the Earth-centered, fixed (ECF) frame which should be identified using the "frame" string, e.g. "ITRF97" or "IGS97".    The current list of tectonic plates recognized by this software is held in the xsites program header file, plate.h.

struct coordinates {
        double x;
        double y;
        double z;
        double xsig;
        double ysig;
        double zsig;
        double vx;
        double vy;
        double vz;
        double vxsig;
        double vysig;
        double vzsig;
        double refday;
        long   refmjd;
        char   frame[MAX_frame];
        char   domes[MAX_domes];
        char   plate[MAX_plate];
        char   sitename[MAX_sitename];
        char   altname[MAX_altname];
        char   comment[MAX_comment];
        long   size;
};



 

The Met Sensor Data Structure

pru vertical component of the PRP - ARP vector (meter) 8 byte double
pr pressure sensor manufacturer/model name 20 byte char
prsn pressure sensor serial number 16 byte char
rh relative humidity sensor manufacturer/model name 20 byte char
rhsn relative humidity sensor serial number 16 byte char
tm air temperature sensor manufacturer/model name 20 byte char
tmsn air temperature sensor serial number 16 byte char
comment descriptive comment 60 byte char
dummy dummy variable required to meet 8 byte word boundary 4 bytechar
size total size in bytes minus leading/trailing 4 byte integers 4byte long
Total size (met only) 184 bytes

struct met {
        double pru;
        char   pr[MAX_name];
        char   prsn[MAX_sn];
        char   rh[MAX_name];
        char   rhsn[MAX_sn];
        char   tm[MAX_name];
        char   tmsn[MAX_sn];
        char   comment[MAX_comment];
        char   dummy[4];
        long   size;
};



 

The Offset (G/T) Data Structure

 
offset GPS monument - alternate monument vector (meter) three 8 byte doubles
from name of starting point monument 16 byte char
to name of ending point monument 16 byte char
comment descriptive comment 60 byte char
size total size in bytes minus leading/trailing 4 byte integers 4 byte long
Total size (offset only) 120 bytes

The offset structure can contain a local topocentric or ECF vector offset.  Given the evolution of the global geodetic community, the use of the offset structure should be avoided.

struct offset {
        double offset[3];
        char   from[MAX_from];
        char   to[MAX_to];
        char   comment[MAX_comment];
        long   size;
};



 

The Ocean-loading Data Structure

m2amp 12.42 hr principal lunar semidiurnal tidal amplitude (meter) 8 byte double
m2phs 12.42 hr principal lunar semidiurnal tidal phase (degree) 8 byte double
s2amp 12.00 hr principal solar semidiurnal tidal amplitude (meter) 8 byte double
s2phs 12.00 hr principal solar semidiurnal tidal phase (degree) 8 byte double
n2amp 12.66 hr major lunar elliptic semidiurnal tidal amplitude (meter) 8 byte double
n2phs 12.66 hr major lunar elliptic semidiurnal tidal phase (degree) 8 byte double
k2amp 11.97 hr luni-solar declinational semidiurnal tidal amplitude (meter) 8 byte double
k2phs 11.97 hr luni-solar declinational semidiurnal tidal phase (degree) 8 byte double
o1amp 25.82 hr principal lunar diurnal tidal amplitude (meter) 8 byte double
o1phs 25.82 hr principal lunar diurnal tidal phase (degree) 8 byte double
k1amp 23.93 hr luni-solar declinational diurnal tidal amplitude (meter) 8 byte double
k1phs 23.93 hr luni-solar declinational diurnal tidal phase (degree) 8 byte double
p1amp 24.07 hr principal solar diurnal tidal amplitude (meter) 8 byte double
p1phs 24.07 hr principal solar diurnal tidal phase (degree) 8 byte double
q1amp 26.87 hr major lunar elliptic diurnal tidal amplitude (meter) 8 byte double
q1phs 26.87 hr major lunar elliptic diurnal tidal phase (degree) 8 byte double
mfamp 13.66 day lunar fortnightly tidal amplitude (meter) 8 byte double
mfphs 13.66 day lunar fortnightly tidal phase (degree) 8 byte double
mmamp 27.55 day lunar monthly tidal amplitude (meter) 8 byte double
mmphs 27.55 day lunar monthly tidal phase (degree) 8 byte double
ssaamp 182.62 day solar semi-annual tidal amplitude (meter) 8 byte double
ssaphs 182.62 day solar semi-annual tidal phase (degree) 8 byte double
comment descriptive comment 60 byte char
size total size in bytes minus leading/trailing 4 byte integer 4 byte long
Total size (oceanloading only) 240 bytes

Each pair of tidal harmonic variables is named with its Darwinian designation, e.g. m2 = M2 = principal lunar semidiurnal tide.  The phase is relative to the driving potential, i.e. the Moon or Sun.

struct oceanloading {
        double m2amp;
        double m2phs;
        double s2amp;
        double s2phs;
        double n2amp;
        double n2phs;
        double k2amp;
        double k2phs;
        double o1amp;
        double o1phs;
        double k1amp;
        double k1phs;
        double p1amp;
        double p1phs;
        double q1amp;
        double q1phs;
        double mfamp;
        double mfphs;
        double mmamp;
        double mmphs;
        double ssaamp;
        double ssaphs;
        char   comment[MAX_comment];
        long   size;
};



 

The Receiver Data Structure

name receiver ID 20 byte char
sn serial number 16 byte char
fw firmware ID 16 byte char
comment descriptive comment 60 byte char
size total size in bytes minus leading/trailing 4 byte integers 4 byte long
Total size (receiver only) 120 bytes

struct receiver {
        char   name[MAX_name];
        char   sn[MAX_sn];
        char   fw[MAX_fw];
        char   comment[MAX_comment];
        long   size;
};




site_info.html
October 6, 2000
Steve Hilla