diff --git a/eotimeseriesviewer/main.py b/eotimeseriesviewer/main.py index 8aa0953e0b4729ee7915617151e8c484b05fd30b..09baa7d1c47a2d271a65cf899e0de8afa316fd69 100644 --- a/eotimeseriesviewer/main.py +++ b/eotimeseriesviewer/main.py @@ -367,11 +367,11 @@ class TimeSeriesViewer(QgisInterface, QObject): self.spatialTemporalVis.sigMapSizeChanged.connect(self.ui.dockMapViews.setMapSize) self.spatialTemporalVis.sigSpatialExtentChanged.connect(self.timeSeries().setCurrentSpatialExtent) self.spatialTemporalVis.sigVisibleDatesChanged.connect(self.timeSeries().setCurrentDates) - self.spectralTemporalVis.sigMoveToTSD.connect(self.showTimeSeriesDate) + self.spectralTemporalVis.sigMoveToTSD.connect(self.setCurrentDate) tstv = self.ui.dockTimeSeries.timeSeriesTreeView assert isinstance(tstv, TimeSeriesTreeView) - tstv.sigMoveToDateRequest.connect(self.showTimeSeriesDate) + tstv.sigMoveToDateRequest.connect(self.setCurrentDate) self.mCurrentMapLocation = None self.mCurrentMapSpectraLoading = 'TOP' @@ -643,7 +643,7 @@ class TimeSeriesViewer(QgisInterface, QObject): return self.ui.actionZoomOut - def showTimeSeriesDate(self, tsd:TimeSeriesDate): + def setCurrentDate(self, tsd:TimeSeriesDate): """ Moves the viewport of the scroll window to a specific TimeSeriesDate :param tsd: TimeSeriesDate @@ -978,30 +978,6 @@ class TimeSeriesViewer(QgisInterface, QObject): """ return self.spatialTemporalVis.MVC[:] - def zoomTo(self, key): - if key == 'zoomMaxExtent': - ext = self.mTimeSeries.maxSpatialExtent(self.ui.dockRendering.crs()) - elif key == 'zoomPixelScale': - - extent = self.spatialTemporalVis.spatialExtent() - #calculate in web-mercator for metric distances - crs = self.spatialTemporalVis.crs() - crsWMC = QgsCoordinateReferenceSystem('EPSG:3857') - - extentWMC = extent.toCrs(crsWMC) - pxSize = max(self.mTimeSeries.pixelSizes(), key= lambda s :s.width()) - canvasSize = self.spatialTemporalVis.mapSize() - f = 0.05 - width = f * canvasSize.width() * pxSize.width() # width in map units - height = f * canvasSize.height() * pxSize.height() - ext = SpatialExtent(crsWMC, 0, 0, width, height) - ext.setCenter(extentWMC.center()) - #return to original CRS - ext = ext.toCrs(crs) - else: - raise NotImplementedError(key) - self.spatialTemporalVis.setSpatialExtent(ext) - def icon(self)->QIcon: """ diff --git a/eotimeseriesviewer/mapvisualization.py b/eotimeseriesviewer/mapvisualization.py index 41b53abca97606b030f5330e0ef403d6c7e50916..c5743cc58ab544feef6fab48a4d92bc69832529c 100644 --- a/eotimeseriesviewer/mapvisualization.py +++ b/eotimeseriesviewer/mapvisualization.py @@ -1689,6 +1689,13 @@ class SpatialTemporalVisualization(QObject): """ return [m for m in self.mapCanvases() if m.isVisibleToViewport()] + def visibleTSDs(self): + """ + Returns an ordered list of visible time series dates. + :return: [list-of-TimeSeriesDates] + """ + return sorted(list(self.mVisibleDates)) + def onVisibleMapsChanged(self, *args): visibleDates = set([m.tsd() for m in self.visibleMaps()]) @@ -1830,7 +1837,6 @@ class SpatialTemporalVisualization(QObject): self.MVC.setVectorLayer(lyr) - def setMapSize(self, size:QSize): """ Sets the MapCanvas size. @@ -1839,6 +1845,12 @@ class SpatialTemporalVisualization(QObject): assert isinstance(size, QSize) self.mSize = size + + currentTSD = None + visible = self.visibleTSDs() + if len(visible) > 0: + currentTSD = visible[int(len(visible) / 2)] + from eotimeseriesviewer.mapcanvas import MapCanvas for mapCanvas in self.mMapCanvases: assert isinstance(mapCanvas, MapCanvas) @@ -1846,6 +1858,9 @@ class SpatialTemporalVisualization(QObject): self.sigMapSizeChanged.emit(self.mSize) self.adjustScrollArea() + if isinstance(currentTSD, TimeSeriesDate): + self.navigateToTSD(currentTSD) + def mapSize(self)->QSize: """ Returns the MapCanvas size diff --git a/eotimeseriesviewer/ui/timeseriesviewer.ui b/eotimeseriesviewer/ui/timeseriesviewer.ui index 89de05f9660c5e4e64e9397f6b64b89353f42f2d..f0ba09fa89c2959a5770827aabeeb3d9dbc08916 100644 --- a/eotimeseriesviewer/ui/timeseriesviewer.ui +++ b/eotimeseriesviewer/ui/timeseriesviewer.ui @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>887</width> + <width>877</width> <height>475</height> </rect> </property> @@ -48,7 +48,7 @@ <property name="focusPolicy"> <enum>Qt::NoFocus</enum> </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> + <layout class="QVBoxLayout" name="verticalLayout"> <property name="spacing"> <number>1</number> </property> @@ -77,7 +77,7 @@ <item> <widget class="MapViewScrollArea" name="scrollAreaSubsets"> <property name="sizePolicy"> - <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <horstretch>3</horstretch> <verstretch>3</verstretch> </sizepolicy> @@ -105,7 +105,7 @@ <rect> <x>0</x> <y>0</y> - <width>885</width> + <width>875</width> <height>387</height> </rect> </property> @@ -152,7 +152,7 @@ <rect> <x>0</x> <y>0</y> - <width>887</width> + <width>877</width> <height>21</height> </rect> </property> diff --git a/tests/test_main.py b/tests/test_main.py index f0f6abd68c5fa176d23f6810dddf26c41aea67f7..fbd9e4d8516bfda7aae9bf446fef7cb6e99258cf 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -80,6 +80,17 @@ class TestInit(TestCase): self.assertIn(expectation, dict(metadata), message) + def test_TimeSeriesViewerNoSource(self): + + from eotimeseriesviewer.main import TimeSeriesViewer + + TSV = TimeSeriesViewer() + TSV.show() + + self.assertIsInstance(TSV, TimeSeriesViewer) + if SHOW_GUI: + QGIS_APP.exec_() + s = "" def test_TimeSeriesViewer(self): @@ -95,7 +106,7 @@ class TestInit(TestCase): QCoreApplication.processEvents() tsd = TSV.timeSeries()[-1] - TSV.showTimeSeriesDate(tsd) + TSV.setCurrentDate(tsd) if SHOW_GUI: QGIS_APP.exec_() @@ -151,17 +162,7 @@ class TestInit(TestCase): if SHOW_GUI: QGIS_APP.exec_() - def test_TimeSeriesViewerNoSource(self): - - from eotimeseriesviewer.main import TimeSeriesViewer - - TSV = TimeSeriesViewer() - TSV.show() - self.assertIsInstance(TSV, TimeSeriesViewer) - if SHOW_GUI: - QGIS_APP.exec_() - s = "" if __name__ == '__main__':