public void DecodeRtiTestBeam() { Pd0Velocity vel = new Pd0Velocity(); DataSet.BeamVelocityDataSet beam = new DataSet.BeamVelocityDataSet(DataSet.Ensemble.DATATYPE_FLOAT, // Type of data stored (Float or Int) 30, // Number of bins 4, // Number of beams DataSet.Ensemble.DEFAULT_IMAG, // Default Image DataSet.Ensemble.DEFAULT_NAME_LENGTH, // Default Image length DataSet.Ensemble.BeamVelocityID); // Dataset ID beam.BeamVelocityData[0, 0] = 0.123f; beam.BeamVelocityData[0, 1] = 0.456f; beam.BeamVelocityData[0, 2] = 0.789f; beam.BeamVelocityData[0, 3] = 0.147f; beam.BeamVelocityData[1, 0] = 0.258f; beam.BeamVelocityData[1, 1] = 0.369f; beam.BeamVelocityData[1, 2] = 0.741f; beam.BeamVelocityData[1, 3] = 0.852f; vel.DecodeRtiEnsemble(beam); // beam order 3,2,0,1; XYZ order 1,0,-2,3, ENU order 0,1,2,3 Assert.AreEqual(147, vel.Velocities[0, 0], "Bin 0, Beam 0 Velocity is incorrect."); Assert.AreEqual(789, vel.Velocities[0, 1], "Bin 0, Beam 1 Velocity is incorrect."); Assert.AreEqual(123, vel.Velocities[0, 2], "Bin 0, Beam 2 Velocity is incorrect."); Assert.AreEqual(456, vel.Velocities[0, 3], "Bin 0, Beam 3 Velocity is incorrect."); Assert.AreEqual(852, vel.Velocities[1, 0], "Bin 1, Beam 0 Velocity is incorrect."); Assert.AreEqual(741, vel.Velocities[1, 1], "Bin 1, Beam 1 Velocity is incorrect."); Assert.AreEqual(258, vel.Velocities[1, 2], "Bin 1, Beam 2 Velocity is incorrect."); Assert.AreEqual(369, vel.Velocities[1, 3], "Bin 1, Beam 3 Velocity is incorrect."); }
public void DecodePd0Test() { Pd0Velocity vel = new Pd0Velocity(30); vel.Velocities[0, 0] = 123; vel.Velocities[0, 1] = 456; vel.Velocities[0, 2] = 789; vel.Velocities[0, 3] = 147; vel.Velocities[1, 0] = 258; vel.Velocities[1, 1] = 369; vel.Velocities[1, 2] = 741; vel.Velocities[1, 3] = 852; DataSet.BeamVelocityDataSet beam = new DataSet.BeamVelocityDataSet(30); beam.DecodePd0Ensemble(vel); // beam order 3,2,0,1; XYZ order 1,0,-2,3, ENU order 0,1,2,3 Assert.AreEqual(0.789f, beam.BeamVelocityData[0, 0], "Bin 0, Beam 0 Velocity is incorrect."); Assert.AreEqual(0.147f, beam.BeamVelocityData[0, 1], "Bin 0, Beam 1 Velocity is incorrect."); Assert.AreEqual(0.456f, beam.BeamVelocityData[0, 2], "Bin 0, Beam 2 Velocity is incorrect."); Assert.AreEqual(0.123f, beam.BeamVelocityData[0, 3], "Bin 0, Beam 3 Velocity is incorrect."); Assert.AreEqual(0.741f, beam.BeamVelocityData[1, 0], "Bin 1, Beam 0 Velocity is incorrect."); Assert.AreEqual(0.852f, beam.BeamVelocityData[1, 1], "Bin 1, Beam 1 Velocity is incorrect."); Assert.AreEqual(0.369f, beam.BeamVelocityData[1, 2], "Bin 1, Beam 2 Velocity is incorrect."); Assert.AreEqual(0.258f, beam.BeamVelocityData[1, 3], "Bin 1, Beam 3 Velocity is incorrect."); }
/// <summary> /// Initialize the data type. /// </summary> /// <param name="beamVelocity">RTI Beam Velocity.</param> public Pd0Velocity(DataSet.BeamVelocityDataSet beamVelocity) : base(ID_LSB, ID_MSB, Pd0ID.Pd0Types.Velocity) { NumDepthCells = beamVelocity.NumElements; NumBeams = beamVelocity.ElementsMultiplier; // Decode Beam Velocity DecodeRtiEnsemble(beamVelocity); }
public void TestTiming() { // Generate an Ensemble DataSet.Ensemble ensemble = EnsembleHelper.GenerateEnsemble(30); Stopwatch watch = new Stopwatch(); //// Test ToJson() //watch.Start(); //for (int x = 0; x < 1000; x++) //{ // string encodedAmp = ensemble.BeamVelocityData.ToJson(); //} //watch.Stop(); //long resultToJson = watch.ElapsedMilliseconds; // Test Serialize() watch = new Stopwatch(); watch.Start(); for (int x = 0; x < 1000; x++) { string encoded = Newtonsoft.Json.JsonConvert.SerializeObject(ensemble.BeamVelocityData); } watch.Stop(); long resultSerialize = watch.ElapsedMilliseconds; //// Test JSON Constructor string encodedd = Newtonsoft.Json.JsonConvert.SerializeObject(ensemble.BeamVelocityData); //watch = new Stopwatch(); //watch.Start(); //for (int x = 0; x < 1000; x++) //{ // DataSet.AmplitudeDataSet decodedAmp = new DataSet.AmplitudeDataSet(encodedAmpp); //} //watch.Stop(); //long resultJsonConstructor = watch.ElapsedMilliseconds; // Test Deserialize() watch = new Stopwatch(); watch.Start(); for (int x = 0; x < 1000; x++) { DataSet.BeamVelocityDataSet decoded = Newtonsoft.Json.JsonConvert.DeserializeObject <DataSet.BeamVelocityDataSet>(encodedd); } watch.Stop(); long resultDeserialize = watch.ElapsedMilliseconds; Debug.WriteLine(String.Format("Serialize:{0} Deserialize:{1}", resultSerialize, resultDeserialize)); Debug.WriteLine("Complete"); }
public void TestJson() { // Generate an Ensemble DataSet.Ensemble ensemble = EnsembleHelper.GenerateEnsemble(30); // Modify the data ensemble.BeamVelocityData.BeamVelocityData[0, DataSet.Ensemble.BEAM_0_INDEX] = 1.2f; ensemble.BeamVelocityData.BeamVelocityData[0, DataSet.Ensemble.BEAM_1_INDEX] = 2.3f; ensemble.BeamVelocityData.BeamVelocityData[0, DataSet.Ensemble.BEAM_2_INDEX] = 3.4f; ensemble.BeamVelocityData.BeamVelocityData[0, DataSet.Ensemble.BEAM_3_INDEX] = 4.5f; ensemble.BeamVelocityData.BeamVelocityData[3, DataSet.Ensemble.BEAM_0_INDEX] = 2.2f; ensemble.BeamVelocityData.BeamVelocityData[3, DataSet.Ensemble.BEAM_1_INDEX] = 3.3f; ensemble.BeamVelocityData.BeamVelocityData[3, DataSet.Ensemble.BEAM_2_INDEX] = 4.4f; ensemble.BeamVelocityData.BeamVelocityData[3, DataSet.Ensemble.BEAM_3_INDEX] = 5.5f; ensemble.BeamVelocityData.BeamVelocityData[5, DataSet.Ensemble.BEAM_0_INDEX] = 3.2f; ensemble.BeamVelocityData.BeamVelocityData[5, DataSet.Ensemble.BEAM_1_INDEX] = 4.3f; ensemble.BeamVelocityData.BeamVelocityData[5, DataSet.Ensemble.BEAM_2_INDEX] = 5.4f; ensemble.BeamVelocityData.BeamVelocityData[5, DataSet.Ensemble.BEAM_3_INDEX] = 6.5f; string encoded = Newtonsoft.Json.JsonConvert.SerializeObject(ensemble.BeamVelocityData); // Serialize object to JSON DataSet.BeamVelocityDataSet decoded = Newtonsoft.Json.JsonConvert.DeserializeObject <DataSet.BeamVelocityDataSet>(encoded); // Deserialize the JSON // Verify the values are the same Assert.AreEqual(1.2f, decoded.BeamVelocityData[0, DataSet.Ensemble.BEAM_0_INDEX], "Amp Data 0 0 is incorrect."); Assert.AreEqual(2.3f, decoded.BeamVelocityData[0, DataSet.Ensemble.BEAM_1_INDEX], "Amp Data 0 1 is incorrect."); Assert.AreEqual(3.4f, decoded.BeamVelocityData[0, DataSet.Ensemble.BEAM_2_INDEX], "Amp Data 0 2 is incorrect."); Assert.AreEqual(4.5f, decoded.BeamVelocityData[0, DataSet.Ensemble.BEAM_3_INDEX], "Amp Data 0 3 is incorrect."); Assert.AreEqual(2.2f, decoded.BeamVelocityData[3, DataSet.Ensemble.BEAM_0_INDEX], "Amp Data 3 0 is incorrect."); Assert.AreEqual(3.3f, decoded.BeamVelocityData[3, DataSet.Ensemble.BEAM_1_INDEX], "Amp Data 3 1 is incorrect."); Assert.AreEqual(4.4f, decoded.BeamVelocityData[3, DataSet.Ensemble.BEAM_2_INDEX], "Amp Data 3 2 is incorrect."); Assert.AreEqual(5.5f, decoded.BeamVelocityData[3, DataSet.Ensemble.BEAM_3_INDEX], "Amp Data 3 3 is incorrect."); Assert.AreEqual(3.2f, decoded.BeamVelocityData[5, DataSet.Ensemble.BEAM_0_INDEX], "Amp Data 5 0 is incorrect."); Assert.AreEqual(4.3f, decoded.BeamVelocityData[5, DataSet.Ensemble.BEAM_1_INDEX], "Amp Data 5 1 is incorrect."); Assert.AreEqual(5.4f, decoded.BeamVelocityData[5, DataSet.Ensemble.BEAM_2_INDEX], "Amp Data 5 2 is incorrect."); Assert.AreEqual(6.5f, decoded.BeamVelocityData[5, DataSet.Ensemble.BEAM_3_INDEX], "Amp Data 5 3 is incorrect."); }
/// <summary> /// Convert the RTI Beam Velocity data set to the PD0 Velocity data type. /// </summary> /// <param name="vel">RTI Beam Velocity data set.</param> public void DecodeRtiEnsemble(DataSet.BeamVelocityDataSet vel) { if (vel.BeamVelocityData != null) { Velocities = new short[vel.BeamVelocityData.GetLength(0), NumBeams]; for (int bin = 0; bin < vel.BeamVelocityData.GetLength(0); bin++) { // 4 Beam System if (vel.BeamVelocityData.GetLength(1) >= NumBeams) { for (int beam = 0; beam < vel.BeamVelocityData.GetLength(1); beam++) { // beam order 3,2,0,1; XYZ order 1,0,-2,3, ENU order 0,1,2,3 int newBeam = 0; switch (beam) { case 0: newBeam = 3; break; case 1: newBeam = 2; break; case 2: newBeam = 0; break; case 3: newBeam = 1; break; default: break; } // Check for bad velocity if (vel.BeamVelocityData[bin, beam] != DataSet.Ensemble.BAD_VELOCITY) { Velocities[bin, beam] = (short)(Math.Round(vel.BeamVelocityData[bin, newBeam] * 1000.0)); // mm/s to m/s } else { // Bad velocity Velocities[bin, beam] = PD0.BAD_VELOCITY; } } } // Vertical Beam else if (vel.BeamVelocityData.GetLength(1) == 1) { // Check for bad velocity if (vel.BeamVelocityData[bin, 0] != DataSet.Ensemble.BAD_VELOCITY) { Velocities[bin, 0] = (short)(Math.Round(vel.BeamVelocityData[bin, 0] * 1000.0)); // mm/s to m/s } else { // Bad velocity Velocities[bin, 0] = PD0.BAD_VELOCITY; } } } } }