/////////////////////////////////////////////////////////////////////////
// XYZ.h
/////////////////////////////////////////////////////////////////////////
// Definition of binary XYZ Format
// The purpose is to move data from NaviEdit NT to NaviLine NT/UX
/////////////////////////////////////////////////////////////////////////
// Date Version Remarks
// 25.05.1999 6.0 Initial version
//
/////////////////////////////////////////////////////////////////////////
#ifndef _XYZ_H__
#define _XYZ_H__
#pragma pack(push, 2)
typedef struct tag_xyzTime
{
short year;
short month;
short day;
short hour;
short minute;
short second;
short milliSec;
short spare;
} XYZTime;
#define FILEID 0x34343434
typedef struct tag_xyzheader
{
long fileId; // FILEID
long byteOrder; // holds the decimal value : 1
long size; // sizeof Header record
XYZTime startTime;
double PipeDiameter; // [meters]
/////////////////////////////////////////////////////////////////////
// Geodesy
double SemiMajorAxis; // [meters]
double InverseFlattening;
double OrgScale; // Pointscale factor at the ellipsoid origin
double FirstParallel; // First parallel in Lamberts conical
double SecondParallel; // Second parallel in Lamberts conical
double OrgLambda; // Origin lambda (lon) on the reference ellipsoid [radians]
double OrgPhi; // Origin phi (lat) on the projection ellipsoid [radians]
double OrgEasting; // Origin easting on the projection plane [meters]
double OrgNorthing; // Origin northing on the projection plane [meters]
short ProjectionType;
// Secondary parameters
short UTMzone; // Derived from "OrgLambda" [1..60]
// Passive parameters
char EllipsoidName[80];
char ProjectionName[80];
/////////////////////////////////////////////////////////////////////
} XYZHeader;
typedef struct tag_xyzhead
{
char id; // 'D' : Depths (single/multibeam)
// 'P' : Pipe position
// 'N' : Navigation record
unsigned char nSize; // sizeof head
unsigned short nSizeData; // sizeof data that follows head
long time; // offset in [ms] from startTime in XYZHeader
unsigned short nValues; // XY or XYZ records that follows
} XYZHead;
typedef struct tag_xyzrecord
{
long x; // in cm
long y; // in cm
long z; // in cm
} XYZRecord;
#define XY_FLAGS_AUTOFIX 0x0001
#define XY_FLAGS_MANUAL_INSTRUMENTFIX 0x0002
#define XY_FLAGS_KP 0x0004
#define XY_FLAGS_DAL 0x0008
#define XY_FLAGS_DOL 0x0010
typedef struct tag_xyrecord
{
long x; // in cm
long y; // in cm
unsigned short flags;
double kp;
long fix;
double dal;
double dol;
} XYRecord;
// Restore old alignment
#pragma pack (pop)
#endif // _XYZ_H__