OpenSeaMap-dev:.SON (Humminbird)
SON is a file format that is used by Humminbird instruments. It structure allows to store data from several sonar sensors to allow for storing so called side scan data. Side scans are continous depth measurments not only below the ship but to some extent to the side of the ships.
Inhaltsverzeichnis
Basic Structure
Byte order of data is most significant byte is the first byte in the stream.
DAT File
For each recording a numbered file is created starting with R00001.DAT. That files stores general information such as time and date of recording and initial position. A corresponding directory R00001 holds a list of files that contain sonar sensor recordings. For earch sensor an index file and a data file is created. A multiple sensor setup may look like having a 50kHz, a 200kHz and two 455kHz side scan sensors for each side of the ship. This will result in four sensor files and four index files totalling to 8 files.
Index Files
Index files contain allow to identify headers and subsequent data in the son file
typedef struct indexstructure { int32_t globalRecordNumber; // record number int32_t positionInStream; // start of header in other file }
SON Files
Having analyzed the index structure one can access the positions in the file directly. The header consists of a sequence of control characters that indicate the following data (indicated as signed byte value).
Header
-128 : int32 // global record number -127 : int32 // recording time since start -126 : int32 // longitude (projected) -125 : int32 // latitude (projected) -124 : int16 : gps enabled (0/1); int16 : gps heading to be divided by 10.0 -123 : 2 unused bytes; int16 gps speed to be divided by 10.0 -122 : 4 bytes // unknown -121 : int32 : depth in decimeter -110 : int32 : sensor frequency in Hz (e.g. 85000Hz) -107 : int32 // unknown -96 : int32 // data length for this data block following the header 80 : byte : Beam id (0 for first beam, 1 for second beam, ... encodes the same id as the file name) 81 : byte // unknown 83 : byte // unknown 84 : byte // unknown 86 : byte // unknown 87 : byte // unknown 33 : header termination
Data
Yet to be discovered or documented