Skip to content
Snippets Groups Projects
test_timeseries.py 3.05 KiB
Newer Older
# coding=utf-8
"""Tests QGIS plugin init."""

import os
import unittest
import example
import example.Images
from osgeo import gdal, ogr, osr
Benjamin Jakimow's avatar
Benjamin Jakimow committed
from timeseriesviewer.utils import file_search
from timeseriesviewer.timeseries import *
class TestInit(unittest.TestCase):

    def createTestDatasets(self):

        vsiDir = '/vsimem/tmp'
        from timeseriesviewer.temporalprofiles2d import date2num
        ns = 50
        nl = 100

        r1 = np.arange('2000-01-01', '2005-06-14', step=np.timedelta64(16, 'D'), dtype=np.datetime64)
        r2 = np.arange('2000-01-01', '2005-06-14', step=np.timedelta64(8, 'D'), dtype=np.datetime64)
        drv = gdal.GetDriverByName('ENVI')

        crs = osr.SpatialReference()
        crs.ImportFromEPSG(32633)

        assert isinstance(drv, gdal.Driver)
        datasets = []

        for i, r in enumerate([r1, r2]):
            p = '{}tmpstack{}.bsq'.format(vsiDir, i+1)

            ds = drv.Create(p, ns, nl, len(r), eType=gdal.GDT_Float32)
            assert isinstance(ds, gdal.Dataset)

            ds.SetProjection(crs.ExportToWkt())

            dateString = ','.join([str(d) for d in r])
            dateString = '{{{}}}'.format(dateString)
            ds.SetMetadataItem('wavelength', dateString, 'ENVI')

            for b, date in enumerate(r):
                decimalYear = date2num(date)

                band = ds.GetRasterBand(b+1)
                assert isinstance(band, gdal.Band)
                band.Fill(decimalYear)
            ds.FlushCache()
            datasets.append(p)





        return datasets

    def test_timeseriesdatum(self):

        file = example.Images.Img_2014_03_20_LC82270652014079LGN00_BOA

        tsd = TimeSeriesDatum.createFromPath(file)
        self.assertIsInstance(tsd, TimeSeriesDatum)
        self.assertEqual(tsd.nb, 6)

    def test_timeseries(self):

Benjamin Jakimow's avatar
Benjamin Jakimow committed
        files = list(file_search(os.path.dirname(example.__file__), '*.tif', recursive=True))

        addedDates = []

        TS = TimeSeries()
        TS.sigTimeSeriesDatesAdded.connect(lambda dates: addedDates.extend(dates))
        TS.sigTimeSeriesDatesRemoved.connect(lambda dates: [addedDates.remove(d) for d in dates])

        for file in files:
            TS.addFiles([file])

        self.assertEqual(len(files), len(TS))
        TS.removeDates(addedDates)
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        self.assertEqual(len(addedDates), 0)
Benjamin Jakimow's avatar
Benjamin Jakimow committed
        pathRE = list(file_search(os.path.dirname(example.__file__), 're*.tif', recursive=True))[0]
        pathLS = list(file_search(os.path.dirname(example.__file__), '*BOA.tif', recursive=True))[0]

        TS = TimeSeries()
        TS.addFiles(pathRE)
        TS.addFiles(pathLS)
        self.assertEqual(len(TS.Sensors), 2)

        dsRE = gdal.Open(pathRE)
        assert isinstance(dsRE, gdal.Dataset)

        tsdRE = TS.getTSD(pathRE)
        self.assertIsInstance(tsdRE, TimeSeriesDatum)
        sRE = tsdRE.sensor
        self.assertIsInstance(sRE, SensorInstrument)
        self.assertEqual(dsRE.RasterCount, sRE.nb)

    def test_datematching(self):
        pass



if __name__ == '__main__':
    unittest.main()