Newer
Older
from qgis.core import *
from qgis.gui import *
from qgis.PyQt.QtWidgets import *
from qgis.PyQt.QtCore import *
from qgis.PyQt.QtGui import *
from timeseriesviewer.utils import *
from timeseriesviewer.main import TimeSeriesViewer
from timeseriesviewer.mapvisualization import *
from timeseriesviewer.profilevisualization import *
from timeseriesviewer.timeseries import *
from timeseriesviewer import DIR_REPO, DIR_QGIS_RESOURCES
#DIR_SCREENSHOTS = jp(DIR_REPO, 'screenshots')
DIR_SCREENSHOTS = jp(DIR_REPO, 'doc/source/img/autogenerated')
os.makedirs(DIR_SCREENSHOTS, exist_ok=True)
app = initQgisApplication(qgisResourceDir=DIR_QGIS_RESOURCES)
TSV = TimeSeriesViewer(None)
TSV.show()
#set up example settings
from example.Images import Img_2014_04_21_LC82270652014111LGN00_BOA, re_2014_06_25
if False:
TSV.loadExampleTimeSeries()
center = TSV.TS.getMaxSpatialExtent().spatialCenter()
else:
dirTestData = r'F:\TSData'
files = file_search(dirTestData, re.compile('\.tif$'))
assert len(files) > 0
TSV.loadImageFiles(files)
dirTestData = r'Y:\Pleiades'
files = file_search(dirTestData, re.compile('\.JP2$'), recursive=True)
assert len(files) > 0
TSV.loadImageFiles(files)
#x = 682430.2823150387
#y = -751432.9531412527
x = 682459.8471361337
y = -751853.6488464196
center = SpatialPoint(center.crs(), x, y)
dx = 500
extent = SpatialExtent(center.crs(), center.x()-dx, center.y()-dx, center.x()+dx, center.y() + dx)
extent = SpatialExtent(center.crs(), 681519.46197612234391272, -752814.23602663306519389, 683369.92926584207452834, -750963.76873691333457828)
date = np.datetime64('2014-08-01')
TSV.spatialTemporalVis.setSpatialExtent(extent)
dt = np.asarray([np.abs(tsd.date - date) for tsd in TSV.TS])
i = np.argmin(dt)
TSV.spatialTemporalVis.navigateToTSD(TSV.TS[i])
#TS.loadImageFiles([Img_2014_04_21_LC82270652014111LGN00_BOA, re_2014_06_25])
toHide = ['2014-07-18', '2014-08-08', '2014-08-10', '2014-08-23', '2014-08-25', '2014-08-03', '2014-07-26', '2014-07-10']
for tsd in TSV.TS:
assert isinstance(tsd, TimeSeriesDatum)
if str(tsd.date) in toHide:
tsd.setVisibility(False)
for sensor in TSV.TS.sensors():
assert isinstance(sensor, SensorInstrument)
if sensor.id() == '6b30.0m0.49;0.56;0.66;0.84;1.65;2.2um':
sensor.setName('Landsat')
sensorLS = sensor
if sensor.id() == '5b5.0m':
sensor.setName('RapidEye')
sensorRE = sensor
continue
if sensor.id() == '4b0.5m':
sensor.setName('Pléiades')
sensorPL = sensor
continue
assert isinstance(sensorLS, SensorInstrument)
assert isinstance(sensorRE, SensorInstrument)
#add second MapView
TSV.createMapView()
mv1 = TSV.mapViews()[0]
mv2 = TSV.mapViews()[1]
assert isinstance(mv1, MapView)
assert isinstance(mv2, MapView)
mv1.setTitle('True Color')
mv2.setTitle('Short-Wave IR')

Benjamin Jakimow
committed
TSV.spatialTemporalVis.adjustScrollArea()
for sensor in [sensorLS, sensorRE, sensorPL]:
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
rendering = mv1.sensorWidget(sensor)
assert isinstance(rendering, MapViewRenderSettings)
renderer = rendering.rasterRenderer()
assert isinstance(renderer, QgsMultiBandColorRenderer)
renderer.setRedBand(3)
renderer.setGreenBand(2)
renderer.setBlueBand(1)
rendering.setRasterRenderer(renderer)
#set swIR-nIR-R Bands
rendering = mv2.sensorWidget(sensorLS)
assert isinstance(rendering, MapViewRenderSettings)
renderer = rendering.rasterRenderer()
assert isinstance(renderer, QgsMultiBandColorRenderer)
renderer.setRedBand(4)
renderer.setGreenBand(5)
renderer.setBlueBand(3)
rendering.setRasterRenderer(renderer)
rendering = mv2.sensorWidget(sensorRE)
assert isinstance(rendering, MapViewRenderSettings)
renderer = rendering.rasterRenderer()
assert isinstance(renderer, QgsMultiBandColorRenderer)
renderer.setRedBand(5)
renderer.setGreenBand(4)
renderer.setBlueBand(3)
rendering.setRasterRenderer(renderer)
if isinstance(sensorPL, SensorInstrument):
rendering = mv2.sensorWidget(sensorPL)
assert isinstance(rendering, MapViewRenderSettings)
renderer = rendering.rasterRenderer()
assert isinstance(renderer, QgsMultiBandColorRenderer)
renderer.setRedBand(4)
renderer.setGreenBand(3)
renderer.setBlueBand(2)
rendering.setRasterRenderer(renderer)

Benjamin Jakimow
committed
mv1.refreshMapView()
mv2.refreshMapView()
from timeseriesviewer.mapcanvas import MapTools
TSV.onShowProfile(center, mv1.mapCanvases()[0], MapTools.CursorLocation)
#load data from other locations
TSV.ui.dockSpectralLibrary.setAddCurrentSpectraToSpeclibMode(True)

Benjamin Jakimow
committed
#collect exemplary profiles

Benjamin Jakimow
committed
import random
n = len(mv1.mapCanvases())

Benjamin Jakimow
committed
dx = random.sample(range(-500, 500, 30), n)
dy = random.sample(range(-500, 500, 20), n)
for i, mc in enumerate(mv1.mapCanvases()):

Benjamin Jakimow
committed
coordinate = SpatialPoint(center.crs(), center.x()+dx[i], center.y() + dy[i])
TSV.onShowProfile(center, mc, MapTools.SpectralProfile)
if i == 10:
break
ps2D_LS_NDVI = TSV.spectralTemporalVis.createNewPlotStyle2D()
ps2D_RE_NDVI = TSV.spectralTemporalVis.createNewPlotStyle2D()
for dx in range(-120, 120, 60):
location = SpatialPoint(center.crs(), center.x() + dx, center.y())
TSV.onShowProfile(location, mv1.mapCanvases()[0], MapTools.TemporalProfile)
TSV.spectralTemporalVis.loadMissingData(backgroundProcess=False)
ps2D_LS_NDVI.setSensor(sensorLS)
ps2D_LS_NDVI.setExpression('(b4-b3)/(b4+b3)')
ps2D_LS_NDVI.setTemporalProfile(TP)
ps2D_RE_NDVI.setSensor(sensorRE)
ps2D_RE_NDVI.setTemporalProfile(TP)
ps2D_RE_NDVI.setExpression('(b5-b3)/(b5+b3)')
TSV.spectralTemporalVis.updatePlot2D()
s = ""
def widgetScreenshot(widget, path):
assert isinstance(widget, QWidget)
rect = widget.rect()
pixmap = QPixmap(rect.size())
widget.render(pixmap, QPoint(), QRegion(rect))
pixmap.save(path, quality=100)
def makePNG(widget, name):
path = jp(DIR_SCREENSHOTS, name+'.png')
widgetScreenshot(widget, path)
# makePNG(TS.ui, 'mainGUI')
for dockWidget in TSV.ui.findChildren(QDockWidget):
assert isinstance(dockWidget, QDockWidget)
#dockWidget.setFloating(True)
name = dockWidget.objectName()
dSize = dockWidget.size()
#change sizes
if name == 'cursorLocationInfoPanel':
dockWidget.reloadCursorLocation()
dockWidget.resize(QSize(300, 300))

Benjamin Jakimow
committed
makePNG(dockWidget, name)
if name == 'mapViewPanel':
dockWidget.setCurrentMapView(mv1)
dockWidget.gbMapProperties.setCollapsed(True)
dockWidget.gbMapProperties.update()
mv1.ui.gbVectorRendering.setCollapsed(True)
mv1.ui.gbVectorRendering.setChecked(False)
mv1.ui.update()
dockWidget.resize(QSize(300, 600))
dockWidget.update()

Benjamin Jakimow
committed
makePNG(dockWidget, name)
if name == 'sensorPanel':
#dockWidget.setFixedHeight(200)

Benjamin Jakimow
committed
dockWidget.resize(QSize(330, 125))
makePNG(dockWidget, name)
if name == 'systemInfoPanel':
dockWidget.setFixedHeight(400)

Benjamin Jakimow
committed
makePNG(dockWidget, name)

Benjamin Jakimow
committed
dockWidget.resize(QSize(800, 250))

Benjamin Jakimow
committed

Benjamin Jakimow
committed
makePNG(dockWidget, name)

Benjamin Jakimow
committed
dockWidget.resize(QSize(800, 250))
for i in range(dockWidget.listWidget.count()):
assert isinstance(dockWidget.listWidget, QListWidget)
dockWidget.listWidget.setCurrentRow(i)
page = dockWidget.stackedWidget.currentWidget()
pageName = page.objectName()
page.update()

Benjamin Jakimow
committed
dockWidget.plotWidget2D.update()
elif pageName == 'page3D' and dockWidget.plotWidget3D is not None:

Benjamin Jakimow
committed
dockWidget.plotWidget3D.update()
dockWidget.plotWidget3D.paintGL()
#dockWidget.plotWidget3D.repaint()
dockWidget.repaint()
makePNG(dockWidget, '{}.{}'.format(name, pageName))

Benjamin Jakimow
committed
dockWidget.resize(QSize(800, 250))
makePNG(dockWidget, name)
#dockWidget.setFloating(False)
app.exec_()
#print('Done')