Newer
Older
# coding=utf-8
"""Tests QGIS plugin init."""
import os
import unittest
import example
from osgeo import gdal, ogr, osr
from timeseriesviewer.timeseries import *
class TestInit(unittest.TestCase):
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
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):
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)
def test_sensors(self):
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)
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()