From ae4143d9556f7d1c703b2813ea1f5282b95e02d5 Mon Sep 17 00:00:00 2001
From: "benjamin.jakimow@geo.hu-berlin.de" <q8DTkxUg-BB>
Date: Mon, 20 Mar 2017 18:11:10 +0100
Subject: [PATCH] more robust date parsing in  ImageDateParserPLEIADES

---
 timeseriesviewer/dateparser.py           | 10 ++++------
 timeseriesviewer/profilevisualization.py |  3 +++
 timeseriesviewer/timeseries.py           | 24 ++++++++++--------------
 3 files changed, 17 insertions(+), 20 deletions(-)

diff --git a/timeseriesviewer/dateparser.py b/timeseriesviewer/dateparser.py
index 5897e77f..2a73f0ee 100644
--- a/timeseriesviewer/dateparser.py
+++ b/timeseriesviewer/dateparser.py
@@ -103,8 +103,9 @@ class ImageDateParserPLEIADES(ImageDateParser):
 
         if ext == '.xml':
             md = self.dataSet.GetMetadata_Dict()
-            timeStamp = '{}T{}'.format(md.get('IMAGING_DATE', ''),
-                                       md.get('IMAGING_TIME', ''))
+            if 'IMAGING_DATE' in md.keys() and 'IMAGING_TIME' in md.keys():
+                timeStamp = '{}T{}'.format(md.get('IMAGING_DATE', ''),
+                                           md.get('IMAGING_TIME', ''))
         elif ext == '.jp2':
             timeStamp = self.dataSet.GetMetadataItem('ACQUISITIONDATETIME', 'IMAGERY')
         if len(timeStamp) > 0:
@@ -122,10 +123,7 @@ class ImageDateParserSentinel2(ImageDateParser):
 
         if ext == '.xml':
             md = self.dataSet.GetMetadata_Dict()
-            timeStamp = '{}T{}'.format(md.get('IMAGING_DATE', ''),
-                                       md.get('IMAGING_TIME', ''))
-        elif ext == '.jp2':
-            timeStamp = self.dataSet.GetMetadataItem('ACQUISITIONDATETIME', 'IMAGERY')
+            timeStamp = md.get('DATATAKE_1_DATATAKE_SENSING_START', '')
         if len(timeStamp) > 0:
             return np.datetime64(timeStamp)
         return None
diff --git a/timeseriesviewer/profilevisualization.py b/timeseriesviewer/profilevisualization.py
index d51578ab..e454ea83 100644
--- a/timeseriesviewer/profilevisualization.py
+++ b/timeseriesviewer/profilevisualization.py
@@ -87,6 +87,9 @@ class PixelLoadWorker(QObject):
             self.recentFile = path
 
             lyr = QgsRasterLayer(path)
+            if not lyr.isValid():
+                logger.debug('Layer not valid: {}'.format(path))
+                continue
             dp = lyr.dataProvider()
 
             trans = QgsCoordinateTransform(crs, dp.crs())
diff --git a/timeseriesviewer/timeseries.py b/timeseriesviewer/timeseries.py
index 8f1681f6..25f58d0b 100644
--- a/timeseriesviewer/timeseries.py
+++ b/timeseriesviewer/timeseries.py
@@ -1,6 +1,7 @@
 from __future__ import absolute_import
 import six, sys, os, gc, re, collections, site, inspect, time, traceback, copy
-
+import logging
+logger = logging.getLogger(__name__)
 import bisect, datetime
 from osgeo import gdal, ogr
 
@@ -11,13 +12,15 @@ from PyQt4.QtGui import *
 from PyQt4.QtCore import *
 from PyQt4.QtXml import *
 
-from osgeo import gdal, ogr
+from osgeo import gdal, ogr, gdal_array
+
 gdal.SetConfigOption('VRT_SHARED_SOURCE', '0') #!important. really. do not change this.
 
 import numpy as np
 
-from timeseriesviewer import DIR_REPO, DIR_EXAMPLES, dprint, jp, findAbsolutePath
+from timeseriesviewer import DIR_REPO, DIR_EXAMPLES, jp
 from timeseriesviewer.dateparser import parseDateFromDataSet
+
 def transformGeometry(geom, crsSrc, crsDst, trans=None):
     if trans is None:
         assert isinstance(crsSrc, QgsCoordinateReferenceSystem)
@@ -178,12 +181,6 @@ class SensorInstrument(QObject):
 def verifyInputImage(path, vrtInspection=''):
     if path is None or not type(path) in [str, unicode]:
         return None
-
-    path2 = path.split(':')[0]
-    if not os.path.exists(path2):
-        print('{}Image does not exist: '.format(vrtInspection, path2))
-        return False
-
     ds = gdal.Open(path)
 
     if not ds:
@@ -218,12 +215,11 @@ class TimeSeriesDatum(QObject):
         :return:
         """
 
-        p = findAbsolutePath(path)
         tsd = None
-        if verifyInputImage(p):
+        if verifyInputImage(path):
 
             try:
-                tsd = TimeSeriesDatum(None, p)
+                tsd = TimeSeriesDatum(None, path)
             except :
                 pass
 
@@ -244,7 +240,7 @@ class TimeSeriesDatum(QObject):
 
         ds = getDS(pathImg)
 
-        self.pathImg = ds.GetFileList()[0]
+        self.pathImg = ds.GetFileList()[0] if isinstance(pathImg, gdal.Dataset) else pathImg
 
         self.timeSeries = timeSeries
         self.nb, self.nl, self.ns, self.crs, px_x, px_y = getSpatialPropertiesFromDataset(ds)
@@ -498,7 +494,7 @@ class TimeSeries(QObject):
             tsd = TimeSeriesDatum.createFromPath(file)
             if tsd is None:
                 msg = 'Unable to add: {}'.format(os.path.basename(file))
-                dprint(msg, file=sys.stderr)
+                logger.error(msg)
             else:
                 self.addTimeSeriesDates([tsd])
                 msg = 'Added {}'.format(os.path.basename(file))
-- 
GitLab