Beispiel #1
0
    def test_vector_with_int_timestamps(self):
        layer = Mock()
        layer.subsetString.return_value = ""
        layer.minimumValue.return_value = 60
        layer.maximumValue.return_value = 260
        layer.uniqueValues.return_value = [60, 260]
        settings = ls.LayerSettings()
        settings.layer = layer
        settings.startTimeAttribute = self.from_attr
        settings.endTimeAttribute = self.to_attr
        vector = TimeVectorLayer(settings, iface=Mock())

        assert (vector.getTimeFormat() == UTC)
        td = timedelta(minutes=5)
        currTime = datetime(1970, 1, 1, 0, 3, 0)
        vector.setTimeRestriction(currTime, td)
        layer.setSubsetString.assert_called_with(
            INT_FORMAT.format(self.from_attr, self.comparison_op,
                              datetime_to_epoch(currTime + td), self.to_attr,
                              datetime_to_epoch(currTime)))

        currTime = datetime(1980, 1, 1, 0, 0, 2)

        vector.setTimeRestriction(currTime, td)
        layer.setSubsetString.assert_called_with(
            INT_FORMAT.format(self.from_attr, self.comparison_op,
                              datetime_to_epoch(currTime + td), self.to_attr,
                              datetime_to_epoch(currTime)))
 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)
Beispiel #3
0
    def test_vector(self):
        layer = Mock()
        layer.subsetString.return_value = ""
        layer.minimumValue.return_value = "1970-01-01 00:01:00"
        layer.maximumValue.return_value = "1970-01-01 00:04:20"
        layer.uniqueValues.return_value = [
            "1970-01-01 00:04:20", "1970-01-01 00:01:00"
        ]
        settings = ls.LayerSettings()
        settings.layer = layer
        settings.startTimeAttribute = self.from_attr
        settings.endTimeAttribute = self.to_attr

        vector = TimeVectorLayer(settings, iface=Mock())

        assert (vector.getTimeFormat() == DEFAULT_FORMAT)
        td = timedelta(minutes=5)
        vector.setTimeRestriction(datetime(1970, 1, 1, 0, 0, 2), td)
        layer.setSubsetString.assert_called_with(
            STRING_FORMAT.format(self.from_attr, self.comparison_op,
                                 "1970-01-01 00:05:02", self.to_attr,
                                 "1970-01-01 "
                                 "00:00:02"))

        vector.setTimeRestriction(datetime(1980, 1, 1, 0, 0, 2), td)
        layer.setSubsetString.assert_called_with(
            STRING_FORMAT.format(self.from_attr, self.comparison_op,
                                 "1980-01-01 00:05:02", self.to_attr,
                                 "1980-01-01 "
                                 "00:00:02"))
 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
Beispiel #6
0
    def test_raster_with_int_timetstamps(self):
        layer = Mock()
        renderer = Mock()
        layer.renderer.return_value = renderer
        settings = ls.LayerSettings()
        settings.layer = layer
        settings.startTimeAttribute = 60
        settings.endTimeAttribute = 260
        raster = TimeRasterLayer(settings, iface=Mock())

        assert (raster.getTimeFormat() == UTC)
        raster.setTimeRestriction(datetime(1970, 1, 1, 0, 0, 2),
                                  timedelta(minutes=5))
        renderer.setOpacity.assert_called_with(1)
        raster.setTimeRestriction(datetime(1980, 1, 1, 0, 0, 2),
                                  timedelta(minutes=5))
        renderer.setOpacity.assert_called_with(0)
Beispiel #7
0
    def test_raster(self):
        layer = Mock()
        renderer = Mock()
        layer.renderer.return_value = renderer
        settings = ls.LayerSettings()
        settings.layer = layer
        settings.startTimeAttribute = "1970-01-01 00:00:01"
        settings.endTimeAttribute = "1970-11-01 06:45:26"
        raster = TimeRasterLayer(settings, iface=Mock())

        assert (raster.getTimeFormat() == DEFAULT_FORMAT)

        raster.setTimeRestriction(datetime(1970, 1, 1, 0, 0, 2),
                                  timedelta(minutes=5))
        renderer.setOpacity.assert_called_with(1)

        raster.setTimeRestriction(datetime(1980, 1, 1, 0, 0, 2),
                                  timedelta(minutes=5))
        renderer.setOpacity.assert_called_with(0)
Beispiel #8
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)