def test_datetime_loaded_by_vector2(self):
        """Testing for the file provided by https://github.com/henrikkriisa"""
        layer = self.layer_dtimes
        attr = "measuredts"
        settings = LayerSettings()
        settings.layer = layer
        settings.startTimeAttribute = attr
        settings.endTimeAttribute = attr
        timeLayer = timevectorlayer.TimeVectorLayer(settings, iface=Mock())
        self.tlm.registerTimeLayer(timeLayer)

        self.assertEquals(timeLayer.getDateType(),
                          timevectorlayer.DateTypes.DatesAsQDateTimes)
        self.tlm.setTimeFrameType("minutes")
        self.tlm.stepForward()
        subsetString = layer.subsetString()
        expectedSubsetString = STRINGCAST_FORMAT.format(
            attr, self.comparison_op,
            time_util.datetime_to_str(
                self.tlm.getCurrentTimePosition() + timedelta(minutes=1),
                timeLayer.getTimeFormat()), attr,
            time_util.datetime_to_str(self.tlm.getCurrentTimePosition(),
                                      timeLayer.getTimeFormat()))
        self.assertEqual(timeLayer.getTimeFormat(),
                         time_util.OGR_DATETIME_FORMAT)
        self.assertEquals(subsetString, expectedSubsetString)
 def _test_layer(self, layer, attr, typ, tf, attr2=None):
     if attr2 is None:
         attr2 = attr
     settings = ls.LayerSettings()
     settings.layer = layer
     settings.startTimeAttribute = attr
     settings.endTimeAttribute = attr2
     iface = Mock()
     timeLayer = timevectorlayer.TimeVectorLayer(settings, iface)
     # TODO
     # self.assertEqual(settings, ls.getSettingsFromLayer(timeLayer))
     self.tlm.registerTimeLayer(timeLayer)
     self.assertEquals(len(self.tlm.getActiveVectors()), 1)
     self.assertEquals(len(self.tlm.getActiveRasters()), 0)
     self.assertEquals(timeLayer.getDateType(), typ)
     if tf is not None:
         self.assertEquals(timeLayer.getTimeFormat(), tf)
     expected_datetime = time_util.epoch_to_datetime(self.get_start_time())
     self.assertEquals(self.tlm.getCurrentTimePosition(), expected_datetime)
     self.tlm.setTimeFrameType("seconds")
     self.assertEquals(layer.featureCount(), 1)
     self.assertEquals(self.tlm.getCurrentTimePosition(), expected_datetime)
     self.tlm.stepForward()
     self.assertEquals(layer.featureCount(), 1)
     expected_datetime = time_util.epoch_to_datetime(self.get_start_time() +
                                                     1)
     self.assertEquals(self.tlm.getCurrentTimePosition(), expected_datetime)
     self.tlm.setTimeFrameSize(2)
     self.assertEquals(layer.featureCount(), 2)
    def _test_spatialite_layer(self, attr, layer, is_int=False):

        timeLayer = timevectorlayer.TimeVectorLayer(layer, attr, attr, True,
                                                    time_util.DEFAULT_FORMAT,
                                                    0)
        self.tlm.registerTimeLayer(timeLayer)
        if is_int:
            self.assertEquals(timeLayer.getDateType(),
                              timevectorlayer.DateTypes.IntegerTimestamps)
            self.assertEquals(timeLayer.getTimeFormat(), time_util.UTC)
        else:
            self.assertEquals(timeLayer.getDateType(),
                              timevectorlayer.DateTypes.DatesAsStrings)
            self.assertEquals(timeLayer.getTimeFormat(),
                              time_util.DEFAULT_FORMAT)
        start_time = time_util.str_to_datetime(timeLayer.getMinMaxValues()[0],
                                               time_util.DEFAULT_FORMAT)
        self.assertEquals(time_util.epoch_to_datetime(STARTTIME), start_time)

        self.tlm.setTimeFrameType("minutes")
        self.tlm.stepForward()
        assert (start_time +
                timedelta(minutes=1) == self.tlm.getCurrentTimePosition())
        # only one feature is selected now, because there is one feature per minute
        self.assertEquals(layer.featureCount(), 1)
        FS = 5
        self.tlm.setTimeFrameSize(FS)
        # we have one feature per minute
        self.assertEquals(layer.featureCount(), FS)
        subsetString = layer.subsetString()

        if is_int:
            expectedSubsetString = INT_FORMAT.format(
                attr, self.comparison_op,
                time_util.datetime_to_epoch(self.tlm.getCurrentTimePosition() +
                                            timedelta(minutes=FS)), attr,
                time_util.datetime_to_epoch(self.tlm.getCurrentTimePosition()))

            self.assertEquals(subsetString, expectedSubsetString)
            minimum_bound_seconds = int(subsetString.split(" ")[6])
            self.assertEquals(
                self.tlm.getCurrentTimePosition(),
                time_util.epoch_to_datetime(minimum_bound_seconds))
        if not is_int:
            self.assertEqual(timeLayer.getTimeFormat(),
                             time_util.DEFAULT_FORMAT)
            expectedSubsetString = STRING_FORMAT.format(
                attr, self.comparison_op,
                time_util.datetime_to_str(
                    self.tlm.getCurrentTimePosition() + timedelta(minutes=FS),
                    timeLayer.getTimeFormat()), attr,
                time_util.datetime_to_str(self.tlm.getCurrentTimePosition(),
                                          timeLayer.getTimeFormat()))

            self.assertEquals(subsetString, expectedSubsetString)

        self.tlm.stepForward()
        self.assertEquals(layer.featureCount(), FS)
Exemple #4
0
 def registerTweetsTimeLayer(self, fromAttr="T", toAttr="T"):
     self.layer = QgsVectorLayer(
         os.path.join(testcfg.TEST_DATA_DIR, 'tweets.shp'), 'tweets', 'ogr')
     self.timeLayer = timevectorlayer.TimeVectorLayer(
         self.layer, fromAttr, toAttr, True, time_util.DEFAULT_FORMAT, 0)
     self.assertTrue(not self.timeLayer.hasTimeRestriction())
     self.tlm.registerTimeLayer(self.timeLayer)
     # refresh will have set the time restriction
     self.assertTrue(self.timeLayer.hasTimeRestriction())
    def test_datetime_loaded_by_vector(self):
        layer = self.layer_loaded_as_vector
        attr = STRING_TIMESTAMP
        timeLayer = timevectorlayer.TimeVectorLayer(layer, attr, attr, True,
                                                    time_util.DEFAULT_FORMAT,
                                                    0)
        self.tlm.registerTimeLayer(timeLayer)

        self.assertEquals(timeLayer.getDateType(),
                          timevectorlayer.DateTypes.DatesAsQDateTimes)
Exemple #6
0
    def test_datetime_loaded_by_vector(self):
        layer = self.layer_loaded_as_vector
        attr=STRING_TIMESTAMP
        settings = LayerSettings()
        settings.layer = layer
        settings.startTimeAttribute = attr
        settings.endTimeAttribute = attr
        timeLayer = timevectorlayer.TimeVectorLayer(settings, iface=Mock())
        self.tlm.registerTimeLayer(timeLayer)

        self.assertEquals(timeLayer.getDateType(), timevectorlayer.DateTypes.DatesAsQDateTimes)
 def registerTweetsTimeLayer(self, fromAttr="T", toAttr="T"):
     self.layer = QgsVectorLayer(
         os.path.join(testcfg.TEST_DATA_DIR, 'tweets.shp'), 'tweets', 'ogr')
     settings = ls.LayerSettings()
     settings.layer = self.layer
     settings.startTimeAttribute = fromAttr
     settings.endTimeAttribute = toAttr
     self.timeLayer = timevectorlayer.TimeVectorLayer(settings,
                                                      iface=Mock())
     self.assertTrue(not self.timeLayer.hasTimeRestriction())
     self.tlm.registerTimeLayer(self.timeLayer)
     # refresh will have set the time restriction
     self.assertTrue(self.timeLayer.hasTimeRestriction())
    def test_archaeological_range_queries(self):
        try:
            layer = self.getArchaelogicalLayer()
            self.ctrl.setArchaeology(1)
            assert (time_util.is_archaelogical())
            settings = ls.LayerSettings()
            settings.layer = layer
            settings.startTimeAttribute = "year"
            settings.endTimeAttribute = "endyear"
            iface = Mock()
            timeLayer = timevectorlayer.TimeVectorLayer(settings, iface)
            self.tlm.registerTimeLayer(timeLayer)
            self.assertEquals(len(self.tlm.getActiveVectors()), 1)
            self.assertEquals(timeLayer.getDateType(),
                              time_util.DateTypes.DatesAsStringsArchaelogical)
            self.assertEquals(timeLayer.getTimeFormat(), bcdate_util.BC_FORMAT)
            self.tlm.setTimeFrameType("years")
            self.tlm.setCurrentTimePosition(bcdate_util.BCDate(-452))
            self.assertEquals(layer.featureCount(), 0)
            self.tlm.setCurrentTimePosition(bcdate_util.BCDate(-400))
            self.assertEquals(layer.featureCount(), 1)
            self.tlm.setCurrentTimePosition(bcdate_util.BCDate(-352))
            self.assertEquals(layer.featureCount(), 2)
            self.tlm.setCurrentTimePosition(bcdate_util.BCDate(-9))
            self.assertEquals(layer.featureCount(), 2)
            self.tlm.setCurrentTimePosition(bcdate_util.BCDate(180))
            self.assertEquals(layer.featureCount(), 0)
            self.tlm.setCurrentTimePosition(bcdate_util.BCDate(1))
            self.assertEquals(layer.featureCount(), 2)
            self.tlm.setCurrentTimePosition(bcdate_util.BCDate(333))
            self.assertEquals(layer.featureCount(), 1)
            self.tlm.setCurrentTimePosition(bcdate_util.BCDate(-450))
            self.tlm.setTimeFrameSize(500)
            self.assertEquals(layer.featureCount(), 4)
            self.tlm.setTimeFrameSize(1000)
            self.assertEquals(layer.featureCount(), 5)

            # expected_datetime = time_util.epoch_to_datetime(self.get_start_time())
            #self.assertEquals(self.tlm.getCurrentTimePosition(),expected_datetime)
            #self.assertEquals(layer.featureCount(),1)
            #self.tlm.stepForward()
            #self.tlm.setTimeFrameSize(2)
            self.tlm.clearTimeLayerList()
            self.ctrl.setArchaeology(0)
        except Exception, e:
            self.tlm.clearTimeLayerList()
            self.ctrl.setArchaeology(0)
            raise e
Exemple #9
0
    def _test_layer(self, layer, attr, typ, tf, attr2=None):
        if attr2 is None:
            attr2 = attr
        timeLayer = timevectorlayer.TimeVectorLayer(layer, attr, attr2, True,
                                                    time_util.DEFAULT_FORMAT,
                                                    0)
        self.tlm.registerTimeLayer(timeLayer)

        self.assertEquals(timeLayer.getDateType(), typ)
        self.assertEquals(timeLayer.getTimeFormat(), tf)
        expected_datetime = time_util.epoch_to_datetime(self.get_start_time())
        self.assertEquals(self.tlm.getCurrentTimePosition(), expected_datetime)
        self.tlm.setTimeFrameType("seconds")
        self.assertEquals(layer.featureCount(), 1)
        self.assertEquals(self.tlm.getCurrentTimePosition(), expected_datetime)
        self.tlm.stepForward()
        self.assertEquals(layer.featureCount(), 1)
        expected_datetime = time_util.epoch_to_datetime(self.get_start_time() +
                                                        1)
        self.assertEquals(self.tlm.getCurrentTimePosition(), expected_datetime)
        self.tlm.setTimeFrameSize(2)
        self.assertEquals(layer.featureCount(), 2)
Exemple #10
0
 def test_export_exports_last_frame(self):
     settings = ls.LayerSettings()
     settings.layer = self.layer
     settings.startTimeAttribute = DATE_COL
     settings.endTimeAttribute = DATE_COL
     iface = Mock()
     timeLayer = timevectorlayer.TimeVectorLayer(settings, iface)
     self.tlm.registerTimeLayer(timeLayer)
     tmpdir = tempfile.mkdtemp()
     self.tlm.setTimeFrameType("seconds")
     start_time = time_util.str_to_datetime(timeLayer.getMinMaxValues()[0])
     end_time = time_util.str_to_datetime(timeLayer.getMinMaxValues()[1])
     self.ctrl.exportVideo(tmpdir, 100, False)
     screenshots_generated = glob.glob(
         os.path.join(tmpdir, FRAME_FILENAME_PREFIX + "*"))
     # import ipdb; ipdb.set_trace()
     last_fn = self.ctrl.generateFrameFilename(
         tmpdir,
         len(screenshots_generated) - 1, end_time)
     self.assertEquals(6, len(screenshots_generated))
     self.assertIn(last_fn, screenshots_generated)
     print screenshots_generated
     shutil.rmtree(tmpdir)