Calculating current velocities from raw data
by
Sean
—
last modified
Jan 19, 2004 09:09 PM
Hi,
I have some binary data files from a current meter attached to a survey ship and I need to calculate the current speed and direction. The data is recorded with 3 beams and 15 cells, and the coordinate system is XYZ. I have separate files of the ships position and heading. How do I calculate the current speed and direction from the data in the data field for velocity - I understand this is stored as Vel[#cells][#beams].
I need to know the way the XYZ data is sored, ie. is it
Vel[Cell-1][X]
Vel[Cell-1][Y]
Vel[Cell-1][Z]
etc
or
Vel[Cell-1][X]
Vel[Cell-2][X]
.
.
Vel[Cell-15][X]
Once I know which elements of the array structure hold the XYZ for each cell, then I need to know how to calculate the velocity from the XYZ values.
Oh, and how do I tell what depth the 15 cells are measuring at.
thanks
Sean.
I have some binary data files from a current meter attached to a survey ship and I need to calculate the current speed and direction. The data is recorded with 3 beams and 15 cells, and the coordinate system is XYZ. I have separate files of the ships position and heading. How do I calculate the current speed and direction from the data in the data field for velocity - I understand this is stored as Vel[#cells][#beams].
I need to know the way the XYZ data is sored, ie. is it
Vel[Cell-1][X]
Vel[Cell-1][Y]
Vel[Cell-1][Z]
etc
or
Vel[Cell-1][X]
Vel[Cell-2][X]
.
.
Vel[Cell-15][X]
Once I know which elements of the array structure hold the XYZ for each cell, then I need to know how to calculate the velocity from the XYZ values.
Oh, and how do I tell what depth the 15 cells are measuring at.
thanks
Sean.
Current state:
Being created
Thanks Attle,
All I know is that it is a Nortek ADP current profiler, it's fitted to a seismic survey ship. I have the binary data from it which gives the serial number as N4639 if that helps.
I am not on the ship, I have been passed the data and asked to merge it with navigation data to build an attribute database. As it happens, I used exactly the same current meter on a survey 18 months ago, but on that occsion I interfaced directly to the data-stream from the meter via RS232 and had it set to ASCII. On that occasion the data looked like this, I include it here in case it helps you to help me. thanks again, Sean.
16 N4639 51830 2002 5 10 12 38 40 3 0 0 0 2
20 100 50 5 9
2555 11 -21 6000 2282 0 0 0 0 0 15495
0 30343633 70692133 -56 -203 232 1632 1 0 44 36 32 0 88
1 -2434 545 94 2462 387 123 -97 311 155 205 -260 146 123 148 97
2 -2232 658 83 2316 208 104 84 424 153 77 -432 136 85 114 77
3 -2208 707 92 2312 153 111 106 473 163 75 -486 144 72 72 67
4 -2223 700 77 2323 166 96 92 466 153 85 -474 134 65 58 57
5 -2236 607 98 2301 256 121 81 372 170 61 -383 155 57 54 52
6 -2191 640 111 2271 208 132 122 405 183 35 -429 166 52 51 46
7 -2165 585 96 2227 250 118 144 350 169 -6 -386 153 48 46 41
8 -2046 522 165 2093 262 187 252 286 239 -130 -369 223 46 43 38
9 -2102 568 133 2162 241 155 201 333 200 -65 -392 184 46 40 36
10 -2005 486 147 2041 281 170 289 249 215 -178 -347 200 45 40 34
11 -1977 331 254 1958 410 282 314 89 311 -261 -212 301 45 38 33
12 -1629 618 193 1740 18 203 628 380 274 -445 -597 247 44 37 33
13 -1883 474 301 1923 241 321 400 231 365 -289 -378 348 44 37 33
14 -714 -144 169 609 389 188 1452 -388 194 -1494 -183 179 44 36 32
15 -730 -164 462 615 401 482 1438 -416 473 -1493 -163 459 44 36 32
16 548 273 511 -411 -477 489 2596 18 549 -2409 -997 495 44 36 32
17 -1186 247 684 1189 178 698 1031 -21 752 -971 -392 731 43 36 31
18 1173 -1264 122 -1557 736 144 3150 -1501 96 -3483 229 87 44 36 31
19 169 87 348 -126 -157 340 2251 -164 380 -2155 -693 340 45 36 32
20 370 -1663 502 -960 1386 555 2429 -1903 481 -2963 852 502 44 36 32
All I know is that it is a Nortek ADP current profiler, it's fitted to a seismic survey ship. I have the binary data from it which gives the serial number as N4639 if that helps.
I am not on the ship, I have been passed the data and asked to merge it with navigation data to build an attribute database. As it happens, I used exactly the same current meter on a survey 18 months ago, but on that occsion I interfaced directly to the data-stream from the meter via RS232 and had it set to ASCII. On that occasion the data looked like this, I include it here in case it helps you to help me. thanks again, Sean.
16 N4639 51830 2002 5 10 12 38 40 3 0 0 0 2
20 100 50 5 9
2555 11 -21 6000 2282 0 0 0 0 0 15495
0 30343633 70692133 -56 -203 232 1632 1 0 44 36 32 0 88
1 -2434 545 94 2462 387 123 -97 311 155 205 -260 146 123 148 97
2 -2232 658 83 2316 208 104 84 424 153 77 -432 136 85 114 77
3 -2208 707 92 2312 153 111 106 473 163 75 -486 144 72 72 67
4 -2223 700 77 2323 166 96 92 466 153 85 -474 134 65 58 57
5 -2236 607 98 2301 256 121 81 372 170 61 -383 155 57 54 52
6 -2191 640 111 2271 208 132 122 405 183 35 -429 166 52 51 46
7 -2165 585 96 2227 250 118 144 350 169 -6 -386 153 48 46 41
8 -2046 522 165 2093 262 187 252 286 239 -130 -369 223 46 43 38
9 -2102 568 133 2162 241 155 201 333 200 -65 -392 184 46 40 36
10 -2005 486 147 2041 281 170 289 249 215 -178 -347 200 45 40 34
11 -1977 331 254 1958 410 282 314 89 311 -261 -212 301 45 38 33
12 -1629 618 193 1740 18 203 628 380 274 -445 -597 247 44 37 33
13 -1883 474 301 1923 241 321 400 231 365 -289 -378 348 44 37 33
14 -714 -144 169 609 389 188 1452 -388 194 -1494 -183 179 44 36 32
15 -730 -164 462 615 401 482 1438 -416 473 -1493 -163 459 44 36 32
16 548 273 511 -411 -477 489 2596 18 549 -2409 -997 495 44 36 32
17 -1186 247 684 1189 178 698 1031 -21 752 -971 -392 731 43 36 31
18 1173 -1264 122 -1557 736 144 3150 -1501 96 -3483 229 87 44 36 31
19 169 87 348 -126 -157 340 2251 -164 380 -2155 -693 340 45 36 32
20 370 -1663 502 -960 1386 555 2429 -1903 481 -2963 852 502 44 36 32
Current state:
Being created
Hi
What you have here is what we call "Extended ASCII format" for vessel mounted current profilers. This is a format that is generated by the SurveyP software as a special serial output option.
The format is documented in the VM-NDP manual and in the Survey online help. Below you will find the key specifications in case you do not have the manual or the software:
Extended ASCII format
Header lines 1-3 are as for the standard ASCII output.
Header line 4:
Field 1: GPS coordinate system (0=geog; 1=map),
Field 2: GPS latitude (in 0.0000001 deg) or northing (in 0.01 m)
Field 3: GPS longitude (in 0.0000001 deg) or easting (in 0.01 m)
Field 4: vessel north speed (in 0.01 m/s)
Field 5: vessel east speed (in 0.01 m/s)
Field 6: vessel water speed (in 0.01 m/s)
Field 7: vessel water speed direction (in 0.1 deg)
Field 8: water speed coordinate system (1=XYZ, 2=ENU)
Field 9: correction mode (0=DGPS, 1=bottomtrack)
Fields 10-14: system variables
Column 1: depth cell number
Column 2: raw velocity data (Vx) in mm/s
Column 3: raw velocity data (Vy) in mm/s
Column 4: raw velocity data (Vz) in mm/s
Column 5: raw velocity data (Veast) in mm/s
Column 6: raw velocity data (Vnorth) in mm/s
Column 7: raw velocity data (Vup) in mm/s
Column 8: corrected velocity data (Vx) in mm/s
Column 9: corrected velocity data (Vy) in mm/s
Column 10: corrected velocity data (Vz) in mm/s
Column 11: corrected velocity data (Veast) in mm/s
Column 12: corrected velocity data (Vnorth) in mm/s
Column 13: corrected velocity data (Vup) in mm/s
Column 14: amplitude (signal strength) data (beam 1) in counts (1 count = 0.43 dB)
Column 15: amplitude (signal strength) data (beam 2) in counts (1 count = 0.43 dB)
Column 16: amplitude (signal strength) data (beam 3) in counts (1 count = 0.43 dB)
Best regards,
Atle Lohrmann
What you have here is what we call "Extended ASCII format" for vessel mounted current profilers. This is a format that is generated by the SurveyP software as a special serial output option.
The format is documented in the VM-NDP manual and in the Survey online help. Below you will find the key specifications in case you do not have the manual or the software:
Extended ASCII format
Header lines 1-3 are as for the standard ASCII output.
Header line 4:
Field 1: GPS coordinate system (0=geog; 1=map),
Field 2: GPS latitude (in 0.0000001 deg) or northing (in 0.01 m)
Field 3: GPS longitude (in 0.0000001 deg) or easting (in 0.01 m)
Field 4: vessel north speed (in 0.01 m/s)
Field 5: vessel east speed (in 0.01 m/s)
Field 6: vessel water speed (in 0.01 m/s)
Field 7: vessel water speed direction (in 0.1 deg)
Field 8: water speed coordinate system (1=XYZ, 2=ENU)
Field 9: correction mode (0=DGPS, 1=bottomtrack)
Fields 10-14: system variables
Column 1: depth cell number
Column 2: raw velocity data (Vx) in mm/s
Column 3: raw velocity data (Vy) in mm/s
Column 4: raw velocity data (Vz) in mm/s
Column 5: raw velocity data (Veast) in mm/s
Column 6: raw velocity data (Vnorth) in mm/s
Column 7: raw velocity data (Vup) in mm/s
Column 8: corrected velocity data (Vx) in mm/s
Column 9: corrected velocity data (Vy) in mm/s
Column 10: corrected velocity data (Vz) in mm/s
Column 11: corrected velocity data (Veast) in mm/s
Column 12: corrected velocity data (Vnorth) in mm/s
Column 13: corrected velocity data (Vup) in mm/s
Column 14: amplitude (signal strength) data (beam 1) in counts (1 count = 0.43 dB)
Column 15: amplitude (signal strength) data (beam 2) in counts (1 count = 0.43 dB)
Column 16: amplitude (signal strength) data (beam 3) in counts (1 count = 0.43 dB)
Best regards,
Atle Lohrmann
Current state:
Being created
thanks Atle,
sorry, I didn't make myself clear. The I included the ASCII format above to help you identify the type of meter. The data I am parsing now is the binary version from the same meter. I have written a parser which strips the data out, but I need to know how to calculate the actual current data from the XYZ velocity data. So if I have Vx, Vy, and Vz for a cell is it simply a case of summing the vectors? My real interest is in currents in X/Y plane, and in different currents at different depths.
Also, my data has 15 cells, which I take it is 15 different depths. How do I determine the depth of each cell?
thanks again,
Sean.
sorry, I didn't make myself clear. The I included the ASCII format above to help you identify the type of meter. The data I am parsing now is the binary version from the same meter. I have written a parser which strips the data out, but I need to know how to calculate the actual current data from the XYZ velocity data. So if I have Vx, Vy, and Vz for a cell is it simply a case of summing the vectors? My real interest is in currents in X/Y plane, and in different currents at different depths.
Also, my data has 15 cells, which I take it is 15 different depths. How do I determine the depth of each cell?
thanks again,
Sean.
Current state:
Being created
Attached is the NDP binary format, for the Nortek NDP (*.adp) file. This is further documented in the Help files and Manual under 'Data Formats'.
The format includes the Vx,Vy and Vz which is the sum of the vessel and water current velocities, to get the water current the x, y and z velocities of the vessel have to be subtracted. You then have the water current in X,Y and Z which can be simply transformed in to a resultant current speed and direction using pythagoras and simple trigonometry.
The format description explains that after the initial header information, all the cells are listed after each other,
typedef struct {
int Vel[MAX_CELLS][MAX_BEAMS]; // in 1 mm/s
unsigned char VelStd[MAX_CELLS][MAX_BEAMS]; // in 1 mm/s
unsigned char Amp[MAX_CELLS][MAX_BEAMS];
} ProfileType;
The first cells starts at a depth corresponding to 1 cell size + blanking + your mounting depth. The second cell is this + 1 cell, etc.
The format includes the Vx,Vy and Vz which is the sum of the vessel and water current velocities, to get the water current the x, y and z velocities of the vessel have to be subtracted. You then have the water current in X,Y and Z which can be simply transformed in to a resultant current speed and direction using pythagoras and simple trigonometry.
| Quote |
| Also, my data has 15 cells, which I take it is 15 different depths. How do I determine the depth of each cell? |
The format description explains that after the initial header information, all the cells are listed after each other,
typedef struct {
int Vel[MAX_CELLS][MAX_BEAMS]; // in 1 mm/s
unsigned char VelStd[MAX_CELLS][MAX_BEAMS]; // in 1 mm/s
unsigned char Amp[MAX_CELLS][MAX_BEAMS];
} ProfileType;
The first cells starts at a depth corresponding to 1 cell size + blanking + your mounting depth. The second cell is this + 1 cell, etc.
Current state:
Being created
Powered by
Ploneboard

