Skip to content
Snippets Groups Projects
profilevisualization.py 78.3 KiB
Newer Older
  • Learn to ignore specific revisions
  •     coord = lyr.extent().center()
        crs = lyr.crs()
    
        l = QVBoxLayout()
    
        btnStart = QPushButton()
        btnStop = QPushButton()
        prog = QProgressBar()
        tboxResults = QPlainTextEdit()
        tboxResults.setMaximumHeight(300)
        tboxThreads = QPlainTextEdit()
        tboxThreads.setMaximumHeight(200)
        label = QLabel()
        label.setText('Progress')
    
        def showProgress(n,m,md):
            prog.setMinimum(0)
            prog.setMaximum(m)
            prog.setValue(n)
    
            info = []
            for k, v in md.items():
                info.append('{} = {}'.format(k,str(v)))
            tboxResults.setPlainText('\n'.join(info))
            #tboxThreads.setPlainText(PL.threadInfo())
            qgsApp.processEvents()
    
        PL.sigPixelLoaded.connect(showProgress)
        btnStart.setText('Start loading')
        btnStart.clicked.connect(lambda : PL.startLoading(files, coord, crs))
        btnStop.setText('Cancel')
        btnStop.clicked.connect(lambda: PL.cancelLoading())
        lh = QHBoxLayout()
        lh.addWidget(btnStart)
        lh.addWidget(btnStop)
        l.addLayout(lh)
        l.addWidget(prog)
        l.addWidget(tboxThreads)
        l.addWidget(tboxResults)
    
        gb.setLayout(l)
        gb.show()
        #rs.setBackgroundStyle('background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #222, stop:1 #333);')
        #rs.handle.setStyleSheet('background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #282, stop:1 #393);')
        qgsApp.exec_()
        qgsApp.exitQgis()
    
    if __name__ == '__main__':
        import site, sys
    
        from timeseriesviewer import utils
    
        qgsApp = utils.initQgisApplication(qgisDebug=True)
    
        DEBUG = False
    
        if False: #the ultimative test for floating point division correctness, at least on a DOY-level
            date1 = np.datetime64('1960-12-31','D')
            assert date1 == num2date(date2num(date1))
            #1960 - 12 - 31
            for year in  range(1960, 2057):
                for doy in range(1, daysPerYear(year)+1):
                    dt = datetime.timedelta(days=doy - 1)
                    date1 = np.datetime64('{}-01-01'.format(year)) + np.timedelta64(doy-1,'D')
                    date2 = datetime.date(year=year, month=1, day=1) + datetime.timedelta(days=doy-1)
    
                    assert date1 == num2date(date2num(date1), dt64=True), 'date1: {}'.format(date1)
                    assert date2 == num2date(date2num(date2), dt64=False), 'date2: {}'.format(date1)
    
        ui = ProfileViewDockUI()
        ui.show()
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
        if True:
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
            STVis = SpectralTemporalVisualization(ui)
            STVis.setTimeSeries(TS)
    
            import example.Images
            from timeseriesviewer import file_search
            files = file_search(os.path.dirname(example.Images.__file__), '*.tif')
    
            TS.addFiles(files)
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
            ext = TS.getMaxSpatialExtent()
    
            for tsd in TS:
                ext = tsd.spatialExtent()
                if ext.crs().description() != '':
                    break
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
            cp1 = SpatialPoint(ext.crs(),ext.center())
    
            cpND = SpatialPoint(ext.crs(), 681151.214,-752388.476)
    
            cp2 = SpatialPoint(ext.crs(), ext.center())
            cp3 = SpatialPoint(ext.crs(), ext.center().x()+500, ext.center().y()+250)
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
    
    
            STVis.createNewPlotStyle2D()
    
            def addProfile():
                x0,y1 = ext.upperLeftPt()
                x1,y0 = ext.lowerRightPt()
    
                x = x0 + (x1 - x0) * np.random.sample()
                y = y0 + (y1 - y0) * np.random.sample()
                pt = SpatialPoint(ext.crs(), x, y)
    
                STVis.loadCoordinate(pt)
    
    
    
            btn = QPushButton('Add Profile')
            btn.clicked.connect(addProfile)
            btn.show()
    
    
            if False:
                for tp in STVis.tpCollection:
                    assert isinstance(tp, TemporalProfile)
                    tp.plot()
    
            #STVis.tpCollection.removeTemporalProfiles(STVis.tpCollection[-1])
    
            STVis.createNewPlotStyle3D()
    
            STVis.ui.listWidget.setCurrentRow(1)
    
    
            STVis.loadCoordinate(cpND)
            # STVis.loadCoordinate(cp2)
            # STVis.loadCoordinate(cp3)
    
    
    Benjamin Jakimow's avatar
    Benjamin Jakimow committed
        qgsApp.exec_()
        qgsApp.exitQgis()