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