def test_write_csv_2AF_desordre(self): GPSTime.setReadFormat("4Y-2M-2D 2h:2m:2s") track = Track() p1 = Obs(ENUCoords(0, 0), GPSTime.readTimestamp('2020-01-01 10:00:00')) track.addObs(p1) p2 = Obs(ENUCoords(0, 1), GPSTime.readTimestamp('2020-01-01 10:00:01')) track.addObs(p2) p3 = Obs(ENUCoords(1, 1), GPSTime.readTimestamp('2020-01-01 10:00:02')) track.addObs(p3) p4 = Obs(ENUCoords(1, 2), GPSTime.readTimestamp('2020-01-01 10:00:03')) track.addObs(p4) p5 = Obs(ENUCoords(2, 2), GPSTime.readTimestamp('2020-01-01 10:00:04')) track.addObs(p5) track.addAnalyticalFeature(Analytics.speed) track.compute_abscurv() csvpath = os.path.join(self.resource_path, 'data/test/test_write_csv_2AF_desordre.wkt') af_names = ['speed', 'abs_curv'] FileWriter.writeToFile(track, csvpath, id_E=3, id_N=2, id_U=0, id_T=1, h=1, separator=";", af_names=af_names) contents = open(csvpath).read() txt = "#srid: ENU\n" txt += "#U;time;N;E;speed;abs_curv\n" txt += "0.000;01/01/2020 10:00:00;0.000;0.000;1.0;0\n" txt += "0.000;01/01/2020 10:00:01;1.000;0.000;0.7071067811865476;1.0\n" txt += "0.000;01/01/2020 10:00:02;1.000;1.000;0.7071067811865476;2.0\n" txt += "0.000;01/01/2020 10:00:03;2.000;1.000;0.7071067811865476;3.0\n" txt += "0.000;01/01/2020 10:00:04;2.000;2.000;1.0;4.0\n" self.assertEqual(contents.strip(), txt.strip())
class TestQuery(TestCase): __epsilon = 0.001 def setUp(self): GPSTime.setReadFormat("4Y-2M-2D 2h:2m:2s") self.track = Track() p1 = Obs(ENUCoords(0, 0), GPSTime.readTimestamp('2020-01-01 10:00:00')) self.track.addObs(p1) p2 = Obs(ENUCoords(0, 1), GPSTime.readTimestamp('2020-01-01 10:00:01')) self.track.addObs(p2) p3 = Obs(ENUCoords(1, 1), GPSTime.readTimestamp('2020-01-01 10:00:02')) self.track.addObs(p3) p4 = Obs(ENUCoords(1, 2), GPSTime.readTimestamp('2020-01-01 10:00:03')) self.track.addObs(p4) p5 = Obs(ENUCoords(2, 2), GPSTime.readTimestamp('2020-01-01 10:00:04')) self.track.addObs(p5) p6 = Obs(ENUCoords(2, 3), GPSTime.readTimestamp('2020-01-01 10:00:06')) self.track.addObs(p6) p7 = Obs(ENUCoords(3, 3), GPSTime.readTimestamp('2020-01-01 10:00:08')) self.track.addObs(p7) p8 = Obs(ENUCoords(3, 4), GPSTime.readTimestamp('2020-01-01 10:00:10')) self.track.addObs(p8) p9 = Obs(ENUCoords(4, 4), GPSTime.readTimestamp('2020-01-01 10:00:12')) self.track.addObs(p9) # self.track.plotAsMarkers() def test_selectstar(self): self.track.addAnalyticalFeature(Analytics.speed) trace = self.track.query("SELECT *") self.assertEqual(9, trace.size()) self.assertTrue(trace.hasAnalyticalFeature('speed')) self.assertLessEqual( (0.7071 - trace.getObsAnalyticalFeatures('speed', 1)[0]), self.__epsilon, 'erreur de vitesse obs1') self.assertLessEqual( (0.2070 - trace.getObsAnalyticalFeatures('speed', 8)[0]), self.__epsilon, 'erreur de vitesse obs8') def test_selectwhere1(self): self.track.addAnalyticalFeature(Analytics.speed) trace = self.track.query("SELECT * WHERE speed < 0.5") self.assertEqual(4, trace.size()) self.assertTrue(trace.hasAnalyticalFeature('speed')) self.assertLessEqual( (0.2070 - trace.getObsAnalyticalFeatures('speed', 0)[0]), self.__epsilon, 'erreur de vitesse 0') self.assertLessEqual( (0.2070 - trace.getObsAnalyticalFeatures('speed', 1)[0]), self.__epsilon, 'erreur de vitesse 1') self.assertLessEqual( (0.2070 - trace.getObsAnalyticalFeatures('speed', 2)[0]), self.__epsilon, 'erreur de vitesse 2') self.assertLessEqual( (0.2070 - trace.getObsAnalyticalFeatures('speed', 3)[0]), self.__epsilon, 'erreur de vitesse 3') def test_selectwhere2(self): self.track.addAnalyticalFeature(Analytics.speed) trace = self.track.query("SELECT * WHERE speed > 0.5") self.assertEqual(4, trace.size()) self.assertTrue(trace.hasAnalyticalFeature('speed')) self.assertLessEqual( (0.7071 - trace.getObsAnalyticalFeatures('speed', 0)[0]), self.__epsilon, 'erreur de vitesse 0') self.assertLessEqual( (0.7071 - trace.getObsAnalyticalFeatures('speed', 1)[0]), self.__epsilon, 'erreur de vitesse 1') self.assertLessEqual( (0.7071 - trace.getObsAnalyticalFeatures('speed', 2)[0]), self.__epsilon, 'erreur de vitesse 2') self.assertLessEqual( (0.7071 - trace.getObsAnalyticalFeatures('speed', 3)[0]), self.__epsilon, 'erreur de vitesse 3')