Skip USGS links group
USGS - science for a changing world

Woods Hole Science Center

End of USGS links group
WHSC Home Research Technology Publications Data People Basis Summaries Location Contact Us

Files collected using the ISISTM system have the following basic format (Q-MIPS):

					
			1st rec   ----    ----    ---- *** Data is stored in 
			  |      ----    ----    ---- *** 1024 byte records for
			  |        .                            each channel
			  |        .                      (*** 256 byte trailer.)
			  |        .
			  |        .
			  V        .
			End rec  ----    ----    ---- ***
			         Chan    Chan2   ChanX  (*** = 256 byte trailer.)
			

QMIPS-style data files are stored in binary format. Each data file contains a 2048 byte file header followed by the sidescan-sonar data stream which consists of at least two channels of sidescan-sonar information and a 256 byte trailer. The trailer contains parameters relevant to the collected sidescan-sonar, such as altitude, file name, pitch, roll, date of collection, time of day, etc. Below is an example of the Q-MIPS file format. The header structure labeled isis_header is the 1024 byte portion that occurs once at the beginning of a file. The structure labeled isis_sonar is the 256 byte trailer which is placed at the end of every ping.

NOTE: The following example structures were designed for PC`s, which align on 16-bit boundaries. If you are using a 32- or 64-bit machine, alignment will have to be forced as these structures will be larger than 256 bytes on those machines. Creating a union of these structures with a 1024 or 256 byte (respectively) unsigned char buffer generally works. Also note the defines. The WORD define for RISC machines, or any 32-bit machine, should be changed to unsigned short.


Example QMIPS Sample Profile


Input parameters or comments are notated in green.

#define BYTE unsigned char
#define WORD unsigned int /* PC: 16 bit */
#define DWORD unsigned long /* PC: 32 bit */
STRUCT ISIS_HEADER
{
/* header header */
/*****************/
BYTE fileFormat; /* always decimal 50 */
BYTE reserved;
BYTE softwareRev[6];
BYTE spare1[20];

/* digitizer parameters */
/************************/
WORD sampleRate; /* in Ksamples/sec */
WORD numChannels; /* 1-4 */
WORD bitsPerPixel; /* 8 or 12 */
WORD pixelsPerChannelPerPing; /* (WORD COUNT) */
float speedOfSoundInWater; /* two way travel time in meters/sec */
float noLongerUsed; WORD asyncChannelNumber; /* if 8 no async chan. otherwise, asynchronous */
WORD numsonarChannels; /* 1 to 4 */
WORD ch1_processingAvailable;
WORD ch2_processingAvailable;
WORD ch3_processingAvailable;
WORD ch4_processingAvailable;

/* nav system parameters */

WORD timeDelay; /* tenths of seconds */
BYTE navSystemName[100];
BYTE projectionType[12];
BYTE spheriodType[12];
WORD zone;
float originLat;
float originLong;
float offsetLat;
float offsetLong;
WORD navUnits; /* 0 = meters */
/* 1 = feet */
/* 2 = yards */
/* 3 = degrees */
/* site parameters */

WORD diveNumber;
WORD blockNumber;
WORD trackNumber;
WORD runNumber;
BYTE spare4[100];

/* annotation */

BYTE operatorAnnotation[100];
BYTE sonarName[40];

/* sonar parameters */
/************************/

WORD triggerDirection; /* -1 is neg, 0 is equal, 1 isos */
DWORD triggerMagnitude;
float triggerWidth;
WORD ch1_frequency; /* in kHz */
WORD ch2_frequency;
WORD ch3_frequency;
WORD ch4_frequency;
float ch1_horizBeamAngle; /* degrees */
float ch2_horizBeamAngle;
float ch3_horizBeamAngle;
float ch4_horizBeamAngle;

/* name of this file */

char thisFileName[45];

/* which channels are half wave rectified */
/* -------------------------------------- */

WORD ch1_halfWaveRectify;
WORD ch2_halfWaveRectify;
WORD ch3_halfWaveRectify;
WORD ch4_halfWaveRectify;

/* left over */

BYTE spare5[486];
};
STRUCT ISIS_SONAR
{

/* time and date stamp */

BYTE day;
BYTE month;
BYTE year;
BYTE hour;
BYTE minute;
BYTE seconds;
WORD tenthsSeconds;

/* misc. info */

BYTE fileName[12];
WORD pingNumber;
WORD asyncByteOffset; /* when non-zero, indicates where */
/* sync (subbottom) channel starts */

BYTE spare1[12];

/* digitizer parameters */

BYTE spare2[4];
float timeInterval; /* multiplier (fraction) to make window in time of an uncorrected channel */
float APaltitude;/* altitude from array processor computed from water column */
WORD triggerChannel;
WORD altSource; /* which altitude to use:
0 = from telemetry
1-4 = channel 1-4 water column
5 = manual entry */

DWORD waterColumn;
DWORD triggerPeriod;
WORD ch_1signalDivisor;/* chan 1 signal divisor multiply by 100 */
float telemFishDepth;
float telemFishHeading;
float telemFishPitch;
float telemFishRoll;
float telemFishAlt; /* meters - comes from manual entry or */
/* towfish telem. */
BYTE spare3[10];

/* sonar parameters */

BYTE ch1_spare4[8];
WORD ch1_bandWidth; /* in kilohertz */
WORD ch1_sampleScheme;
WORD ch1_rangeScale; /* meters */
WORD ch1_gain;
WORD ch1_pulseWidth; /* microseconds */
WORD sampleRate;
WORD ch1_corrected; /* boolean */
BYTE ch2_spare4[8];
WORD ch2_bandWidth; /* in kilohertz */
WORD ch2_sampleScheme;
WORD ch2_rangeScale; /* meters */
WORD ch2_gain;
WORD ch2_pulseWidth; /* microseconds */
WORD ch2_spare;
WORD ch2_corrected; /* boolean */
BYTE ch3_spare4[8];
WORD ch3_bandWidth; /* in kilohertz */
WORD ch3_sampleScheme;
WORD ch3_rangeScale; /* meters */
WORD ch3_gain;
WORD ch3_pulseWidth; /* microseconds */
WORD ch3_spare;
WORD ch3_corrected; /* boolean */
BYTE ch4_spare4[8];
WORD ch4_bandWidth; /* in kilohertz */
WORD ch4_sampleScheme;
WORD ch4_rangeScale;/* meters */
WORD ch4_gain;
WORD ch4_pulseWidth; /* microseconds */
WORD ch4_spare;
WORD ch4_corrected;/* boolean */

/* nav system parameters */

BYTE nav_sensor[4]; /* sensor code */
WORD eventNumber;
BYTE station_1_code; /* station code data as */
/* BYTE station_2_code; */
BYTE station_3_code;
BYTE station_4_code;
float range_1;/* ranges to the nav stations/*
float range_2;
float range_3;
float range_4;

/* #define nav_telemetry.latitude *((double) & nav_telemetry.navEasting) */
/* re-use easting and northing variable space for latitude. */
/* If a system collects XY data pairs, then the navEasting and navNorthing fields would been commented and set to floats.*/

/*float navEasting; /* (x) in meters */
/*float navNorthing; /* (y) in meters */
double navEasting; /* USGS uses lat & lon */
float navDepth; /* (z) in meters */
float navRms; /* root mean square -- quality factor of nav solution */
float navFishHeading; /* degrees */
float navFishSpeed;/* knots */
float navShipGyro;/* degrees */

DWORD navFixNumber; /* sequential value */
double navLongitude; /* double precision */
BYTE spare6[2];/* alphanumeric */
BYTE navFixHour;
BYTE navFixMinute;
BYTE navFixSeconds;
BYTE navSpare;

WORD julianDay;/* cable out */
WORD layback;
};


Skip USGS links group

Accessibility FOIA Privacy Policies and Notices

Take Pride in America logo USAGov logo U.S. Department of the Interior | U.S. Geological Survey
End of USGS links group
URL: woodshole.er.usgs.gov/operations/sfmapping/qmips.htm
Page Contact Information: WHSC Webmaster
Page Last Modified: Wednesday, 19-Dec-2007 12:47:26 EST