further GUI implementations, plot of seismic array in main window

This commit is contained in:
Marcel Paffrath 2016-06-21 13:29:10 +02:00
parent 8393f283c7
commit 806b974011
3 changed files with 51 additions and 13 deletions

View File

@ -1,6 +1,10 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os import os
import matplotlib
matplotlib.use('Qt4Agg')
matplotlib.rcParams['backend.qt4']='PySide'
from PySide import QtCore, QtGui, QtCore from PySide import QtCore, QtGui, QtCore
from asp3d_layout import * from asp3d_layout import *
from fmtomo_parameters_layout import * from fmtomo_parameters_layout import *
@ -9,6 +13,10 @@ from generate_seisarray_layout import *
from picking_parameters_layout import * from picking_parameters_layout import *
from pylot.core.active import activeSeismoPick, surveyUtils, fmtomoUtils, seismicArrayPreparation from pylot.core.active import activeSeismoPick, surveyUtils, fmtomoUtils, seismicArrayPreparation
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
class gui_control(object): class gui_control(object):
def __init__(self): def __init__(self):
self.mainwindow = MainWindow self.mainwindow = MainWindow
@ -19,6 +27,7 @@ class gui_control(object):
self.cancelpixmap = self.mainwindow.style().standardPixmap(QtGui.QStyle.SP_DialogCancelButton) self.cancelpixmap = self.mainwindow.style().standardPixmap(QtGui.QStyle.SP_DialogCancelButton)
self.applypixmap = self.mainwindow.style().standardPixmap(QtGui.QStyle.SP_DialogApplyButton) self.applypixmap = self.mainwindow.style().standardPixmap(QtGui.QStyle.SP_DialogApplyButton)
self.setInitStates() self.setInitStates()
self.addArrayPlot()
def setInitStates(self): def setInitStates(self):
self.setPickState(False) self.setPickState(False)
@ -57,6 +66,7 @@ class gui_control(object):
self.seisarray.addSourceLocations(srcfile) self.seisarray.addSourceLocations(srcfile)
if len(ptsfile) > 0: if len(ptsfile) > 0:
self.seisarray.addMeasuredTopographyPoints(ptsfile) self.seisarray.addMeasuredTopographyPoints(ptsfile)
self.reprintArray()
self.setSeisArrayState(True) self.setSeisArrayState(True)
def gen_survey(self): def gen_survey(self):
@ -78,6 +88,12 @@ class gui_control(object):
surveyUtils.setDynamicFittedSNR(self.survey.getShotDict()) surveyUtils.setDynamicFittedSNR(self.survey.getShotDict())
self.setSurveyState(True) self.setSurveyState(True)
def addArrayPlot(self):
self.seisArrayFigure = Figure()
self.seisArrayCanvas = FigureCanvas(self.seisArrayFigure)
self.mainUI.verticalLayout_right.addWidget(self.seisArrayCanvas)
self.seisArrayAx = self.seisArrayFigure.add_subplot(111)
def interpolate_receivers(self): def interpolate_receivers(self):
if not self.checkSeisArrayState(): if not self.checkSeisArrayState():
self.printDialogMessage('No Seismic Array defined.') self.printDialogMessage('No Seismic Array defined.')
@ -230,8 +246,13 @@ class gui_control(object):
self.seisarray = self.survey.seisarray self.seisarray = self.survey.seisarray
self.setConnected2SurveyState(True) self.setConnected2SurveyState(True)
self.setSeisArrayState(True) self.setSeisArrayState(True)
self.reprintArray()
self.printDialogMessage('Loaded Survey with active Seismic Array.') self.printDialogMessage('Loaded Survey with active Seismic Array.')
def reprintArray(self):
self.seisArrayAx.clear()
self.seisarray.plotArray2D(self.seisArrayAx)
def load_seisarray(self): def load_seisarray(self):
if self.checkSeisArrayState(): if self.checkSeisArrayState():
if not self.continueDialogExists('Seismic Array'): if not self.continueDialogExists('Seismic Array'):
@ -249,6 +270,7 @@ class gui_control(object):
%(type(survey), seismicArrayPreparation.SeisArray)) %(type(survey), seismicArrayPreparation.SeisArray))
return return
self.seisarray = seisarray self.seisarray = seisarray
self.reprintArray()
self.setSeisArrayState(True) self.setSeisArrayState(True)
def save_seisarray(self): def save_seisarray(self):

View File

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'asp3d_layout.ui' # Form implementation generated from reading ui file 'asp3d_layout.ui'
# #
# Created: Thu Jun 16 12:18:04 2016 # Created: Tue Jun 21 13:22:35 2016
# by: pyside-uic 0.2.15 running on PySide 1.2.2 # by: pyside-uic 0.2.15 running on PySide 1.2.2
# #
# WARNING! All changes made in this file will be lost! # WARNING! All changes made in this file will be lost!
@ -13,7 +13,7 @@ class Ui_MainWindow(object):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow") MainWindow.setObjectName("MainWindow")
MainWindow.setEnabled(True) MainWindow.setEnabled(True)
MainWindow.resize(300, 585) MainWindow.resize(800, 600)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0) sizePolicy.setVerticalStretch(0)
@ -27,7 +27,13 @@ class Ui_MainWindow(object):
MainWindow.setWindowIcon(icon) MainWindow.setWindowIcon(icon)
self.centralwidget = QtGui.QWidget(MainWindow) self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget") self.centralwidget.setObjectName("centralwidget")
self.verticalLayout_5 = QtGui.QVBoxLayout(self.centralwidget) self.horizontalLayout_4 = QtGui.QHBoxLayout(self.centralwidget)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.horizontalLayout_outer = QtGui.QHBoxLayout()
self.horizontalLayout_outer.setSizeConstraint(QtGui.QLayout.SetDefaultConstraint)
self.horizontalLayout_outer.setObjectName("horizontalLayout_outer")
self.verticalLayout_5 = QtGui.QVBoxLayout()
self.verticalLayout_5.setSizeConstraint(QtGui.QLayout.SetMinimumSize)
self.verticalLayout_5.setObjectName("verticalLayout_5") self.verticalLayout_5.setObjectName("verticalLayout_5")
self.verticalLayout = QtGui.QVBoxLayout() self.verticalLayout = QtGui.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout") self.verticalLayout.setObjectName("verticalLayout")
@ -204,12 +210,11 @@ class Ui_MainWindow(object):
self.postprocessing = QtGui.QPushButton(self.centralwidget) self.postprocessing = QtGui.QPushButton(self.centralwidget)
self.postprocessing.setObjectName("postprocessing") self.postprocessing.setObjectName("postprocessing")
self.verticalLayout_3.addWidget(self.postprocessing) self.verticalLayout_3.addWidget(self.postprocessing)
self.verticalLayout_5.addLayout(self.verticalLayout_3)
self.line_2 = QtGui.QFrame(self.centralwidget) self.line_2 = QtGui.QFrame(self.centralwidget)
self.line_2.setFrameShape(QtGui.QFrame.HLine) self.line_2.setFrameShape(QtGui.QFrame.HLine)
self.line_2.setFrameShadow(QtGui.QFrame.Sunken) self.line_2.setFrameShadow(QtGui.QFrame.Sunken)
self.line_2.setObjectName("line_2") self.line_2.setObjectName("line_2")
self.verticalLayout_5.addWidget(self.line_2) self.verticalLayout_3.addWidget(self.line_2)
self.verticalLayout_4 = QtGui.QVBoxLayout() self.verticalLayout_4 = QtGui.QVBoxLayout()
self.verticalLayout_4.setObjectName("verticalLayout_4") self.verticalLayout_4.setObjectName("verticalLayout_4")
self.label_8 = QtGui.QLabel(self.centralwidget) self.label_8 = QtGui.QLabel(self.centralwidget)
@ -230,10 +235,17 @@ class Ui_MainWindow(object):
self.fmtomo = QtGui.QPushButton(self.centralwidget) self.fmtomo = QtGui.QPushButton(self.centralwidget)
self.fmtomo.setObjectName("fmtomo") self.fmtomo.setObjectName("fmtomo")
self.verticalLayout_4.addWidget(self.fmtomo) self.verticalLayout_4.addWidget(self.fmtomo)
self.verticalLayout_5.addLayout(self.verticalLayout_4) self.verticalLayout_3.addLayout(self.verticalLayout_4)
self.verticalLayout_5.addLayout(self.verticalLayout_3)
self.horizontalLayout_outer.addLayout(self.verticalLayout_5)
self.verticalLayout_right = QtGui.QVBoxLayout()
self.verticalLayout_right.setSizeConstraint(QtGui.QLayout.SetMaximumSize)
self.verticalLayout_right.setObjectName("verticalLayout_right")
self.horizontalLayout_outer.addLayout(self.verticalLayout_right)
self.horizontalLayout_4.addLayout(self.horizontalLayout_outer)
MainWindow.setCentralWidget(self.centralwidget) MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow) self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 300, 23)) self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
self.menubar.setObjectName("menubar") self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar) MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow) self.statusbar = QtGui.QStatusBar(MainWindow)

View File

@ -783,8 +783,9 @@ class SeisArray(object):
print "Exported coordinates for %s traces to file > %s" % (count, filename) print "Exported coordinates for %s traces to file > %s" % (count, filename)
recfile_out.close() recfile_out.close()
def plotArray2D(self, plot_topo=False, highlight_measured=False, annotations=True, pointsize=10): def plotArray2D(self, ax = None, plot_topo=False, highlight_measured=False, annotations=True, pointsize=10):
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
if ax == None:
plt.interactive(True) plt.interactive(True)
fig = plt.figure() fig = plt.figure()
ax = plt.axes() ax = plt.axes()
@ -803,11 +804,14 @@ class SeisArray(object):
if highlight_measured == True: if highlight_measured == True:
ax.plot(xmr, ymr, 'r.', markersize=pointsize, label='measured receivers') ax.plot(xmr, ymr, 'r.', markersize=pointsize, label='measured receivers')
plt.title('2D plot of seismic array %s' % self.recfile) ax.text(0.5, 1.05,'2D plot of seismic array\n %s'%self.recfile,
horizontalalignment='center', verticalalignment='center',
transform=ax.transAxes)
#plt.title('2D plot of seismic array %s' % self.recfile)
ax.set_xlabel('X [m]') ax.set_xlabel('X [m]')
ax.set_ylabel('Y [m]') ax.set_ylabel('Y [m]')
ax.set_aspect('equal') ax.set_aspect('equal')
plt.legend() ax.legend()
if annotations == True: if annotations == True:
for traceID in self.getReceiverCoordinates().keys(): for traceID in self.getReceiverCoordinates().keys():
ax.annotate((' ' + str(traceID)), xy=(self._getXreceiver(traceID), self._getYreceiver(traceID)), ax.annotate((' ' + str(traceID)), xy=(self._getXreceiver(traceID), self._getYreceiver(traceID)),