From f1eec4aee6d51bd5fea4cacf8664bc1723ab0b0c Mon Sep 17 00:00:00 2001 From: "benjamin.jakimow" <benjamin.jakimow@geo.hu-berlin.de> Date: Wed, 7 Nov 2018 19:47:52 +0100 Subject: [PATCH] tbd pixel loader --- timeseriesviewer/pixelloader.py | 22 ++++++++++++++++------ timeseriesviewer/utils.py | 28 ++++++++++++++++++++++------ 2 files changed, 38 insertions(+), 12 deletions(-) diff --git a/timeseriesviewer/pixelloader.py b/timeseriesviewer/pixelloader.py index cf2e6ae8..4270bff7 100644 --- a/timeseriesviewer/pixelloader.py +++ b/timeseriesviewer/pixelloader.py @@ -179,10 +179,12 @@ def transformPoint2Px(trans, pt, gt): x, y, _ = trans.TransformPoint(pt.x(), pt.y()) return geo2px(QgsPointXY(x, y), gt) -def doLoaderTask(task): +def doLoaderTask(taskWrapper:QgsTask, *args, **kwds): + assert isinstance(taskWrapper, QgsTask) #assert isinstance(task, PixelLoaderTask), '{}\n{}'.format(type(task), task) - + task = args[0] + assert isinstance(task, PixelLoaderTask) result = task ds = gdal.Open(task.sourcePath, gdal.GA_ReadOnly) @@ -384,7 +386,7 @@ class PixelLoader(QObject): Loads pixel from raster images Use QgsTaskManager interface in background """ - sigPixelLoaded = pyqtSignal([int, int, object],[object]) + sigPixelLoaded = pyqtSignal([int, int, object], [object]) sigLoadingStarted = pyqtSignal() sigLoadingFinished = pyqtSignal(np.timedelta64) sigLoadingCanceled = pyqtSignal() @@ -434,15 +436,23 @@ class PixelLoader(QObject): tm = self.taskManager() #todo: create chuncks - + import uuid for plt in tasks: assert isinstance(plt, PixelLoaderTask) - qgsTask = QgsTask.fromFunction('pltTask', doLoaderTask, on_finished=) + name = 'pltTask.{}'.format(uuid.uuid4()) + qgsTask = QgsTask.fromFunction(name, doLoaderTask, plt, on_finished=self.onLoadingFinished) + qgsTask self.mTasks.append(qgsTask) tm.addTask(qgsTask) - def onLoadingFinished(self, e, result): + def onLoadingFinished(self, *args): + + err = args[0] + results = args[1:] + + + print('Loading finished') s ="" def cancelLoading(self): diff --git a/timeseriesviewer/utils.py b/timeseriesviewer/utils.py index 8a4acde2..98007939 100644 --- a/timeseriesviewer/utils.py +++ b/timeseriesviewer/utils.py @@ -20,7 +20,7 @@ """ # noinspection PyPep8Naming -import os, sys, math, re, io, fnmatch +import os, sys, math, re, io, fnmatch, uuid from collections import defaultdict @@ -255,6 +255,12 @@ class SpatialPoint(QgsPointXY): crs = mapCanvas.mapSettings().destinationCrs() return SpatialPoint(crs, mapCanvas.center()) + @staticmethod + def fromMapLayerCenter(mapLayer:QgsMapLayer): + assert isinstance(mapLayer, QgsMapLayer) and mapLayer.isValid() + crs = mapLayer.crs() + return SpatialPoint(crs, mapLayer.extent().center()) + @staticmethod def fromSpatialExtent(spatialExtent): assert isinstance(spatialExtent, SpatialExtent) @@ -1176,6 +1182,15 @@ def initQgisApplication(pythonPlugins=None, PATH_QGIS=None, qgisDebug=False, qgi class TestObjects(): + @staticmethod + def createTestImageSeries(n=1) -> list: + assert n > 0 + + datasets = [] + for i in range(n): + ds = TestObjects.inMemoryImage() + datasets.append(ds) + return datasets @staticmethod def inMemoryImage(nl=10, ns=20, nb=3, crs='EPSG:32632')->gdal.Dataset: @@ -1189,8 +1204,8 @@ class TestObjects(): """ drv = gdal.GetDriverByName('GTiff') assert isinstance(drv, gdal.Driver) - - path = '/vsimem/testimage.tif' + id = uuid.uuid4() + path = '/vsimem/testimage.multiband.{}.tif'.format(id) ds = drv.Create(path, ns, nl, bands=nb, eType=gdal.GDT_Float32) if isinstance(crs, str): @@ -1217,11 +1232,12 @@ class TestObjects(): scheme = ClassificationScheme() scheme.createClasses(n) - drv = gdal.GetDriverByName('MEM') + drv = gdal.GetDriverByName('GTiff') assert isinstance(drv, gdal.Driver) - - ds = drv.Create('', ns, nl, bands=nb, eType=gdal.GDT_Byte) + id = uuid.uuid4() + path = '/vsimem/testimage.class._{}.tif'.format(id) + ds = drv.Create(path, ns, nl, bands=nb, eType=gdal.GDT_Byte) if isinstance(crs, str): c = QgsCoordinateReferenceSystem(crs) -- GitLab