Beispiel #1
0
    def render(self):

        try:
            if (self.meshlayer.hydrauparser != None
                    and self.meshlayer.hydrauparser.path != None
                    and self.meshlayer.meshrenderer != None):
                bool1, image1, image2 = self.meshlayer.meshrenderer.getimage(
                    self.meshlayer, self.rendererContext)
            else:
                image1 = QtGui.QImage()
                image2 = None
                bool1 = True

            painter = self.rendererContext.painter()
            painter.save()
            painter.drawImage(0, 0, image1)
            if image2:
                painter.drawImage(0, 0, image2)
            painter.restore()

            return bool1

        except Exception as e:
            self.meshlayer.propertiesdialog.errorMessage("Renderer Error")
            return False
Beispiel #2
0
    def __init__(self, parent=None):
        super(ScribbleArea, self).__init__(parent)

        self.setAttribute(QtCore.Qt.WA_StaticContents)
        self.modified = False
        self.scribbling = False
        imageSize = QtCore.QSize(500, 500)
        self.image = QtGui.QImage(imageSize, QtGui.QImage.Format_RGB16)
        self.userimage = None
        self.painter = QtGui.QPainter()
        self.lastPoint = QtCore.QPoint()
        self.pen = QtGui.QPen()
Beispiel #3
0
    def __init__(self, nom):
        QtWidgets.QMainWindow.__init__(self)
        self.ui = Ui_graphicsWindow()
        self.ui.setupUi(self, nom)
        self.ui.graphicsView.resizeEvent = self.gwResizeEvent
        self.currentRect = None
        self.myRect = QtCore.QRect()
        self.myPen = QtGui.QPen()
        self.rayon = 20
        self.ui.widget.paintEvent = self.draw

        cursorPath = ":/Anaglyph/Icons/cursor3x3.png"
        cursorImage = QtGui.QImage(cursorPath)
        cursorPix = QtGui.QPixmap.fromImage(cursorImage)
        self.invisibleCursor = QtGui.QCursor(cursorPix)
        self.normalCursor = self.cursor()
Beispiel #4
0
 def canvasChangedWithSameBBox(self):
     return (QtGui.QImage(), QtGui.QImage())
Beispiel #5
0
 def canvasPaned(self):
     return (QtGui.QImage(), QtGui.QImage())
Beispiel #6
0
    def getimage(self, meshlayer, rendererContext):
        #initialize rendered image dimension

        DEBUG = False
        if DEBUG:
            self.debugtext = []
            self.timestart = time.clock()

        painter = rendererContext.painter()
        self.__imageChangedMutex.lock()
        self.rendererContext = qgis.core.QgsRenderContext(rendererContext)
        self.rendererContext.setPainter(None)

        self.ext = self.rendererContext.extent()
        self.rect = [
            float(self.ext.xMinimum()),
            float(self.ext.xMaximum()),
            float(self.ext.yMinimum()),
            float(self.ext.yMaximum())
        ]

        if False:
            self.sizepx = painter.viewport().size(
            )  #size in pixel - notworking when printing
        else:
            ratio = 1.0
            mupp = float(rendererContext.mapToPixel().mapUnitsPerPixel())
            #self.sizepx = [ round(((rect[1] - rect[0] )/mupp/ratio),2) , round(((rect[3]  - rect[2] )/mupp/ratio),2) ]
            self.sizepx = QtCore.QSize(
                int(((self.rect[1] - self.rect[0]) / mupp / ratio)),
                int(((self.rect[3] - self.rect[2]) / mupp / ratio)))

        self.dpi = rendererContext.painter().device().logicalDpiX()
        self.width = float((self.sizepx.width())) / float(
            self.dpi)  #widht of canvas in inches
        self.lenght = float((self.sizepx.height())) / float(
            self.dpi)  #height of canvas in inches

        #self.__img = None

        self.__imageChangedMutex.unlock()

        try:
            #***********************************************************************
            #Case 1 : mapcanvas panned
            if (self.previousdrawrenderersizepx == self.sizepx
                    and self.previousdrawtime == meshlayer.time_displayed
                    and self.previousdrawparam == meshlayer.param_displayed
                    and self.lvl_contour == self.previousdrawlvl
                    and self.alpha_displayed == self.previousdrawalpha
                    and self.previousdrawcmcontour == self.cmap_contour_raw
                    and meshlayer.forcerefresh == False):

                if DEBUG:
                    self.debugtext += [
                        'deplacement : ' +
                        str(round(time.clock() - self.timestart, 3))
                    ]

                if self.alreadypanned:  #the whole mesh has been regenerated
                    img1, img2 = self.canvasPaned()
                else:  #maybe working with case 2 : need t oregenerate the whole mesh
                    img1, img2 = self.canvasCreation()
                    self.alreadypanned = True

            #Case 2 : figure changed (time,param) with the same mapcanvas dimension
            elif self.previousdrawrenderersizepx == self.sizepx and meshlayer.forcerefresh == False:
                #update meshlayer parameters
                self.previousdrawparam = meshlayer.param_displayed
                self.previousdrawlvl = self.lvl_contour
                self.previousdrawtime = meshlayer.time_displayed
                self.previousdrawalpha = self.alpha_displayed
                self.previousdrawrenderersizepx = self.sizepx
                self.previousdrawcmcontour = self.cmap_contour_raw
                self.alreadypanned = False

                if DEBUG:
                    self.debugtext += [
                        'paramchanged : ' +
                        str(round(time.clock() - self.timestart, 3))
                    ]

                img1, img2 = self.canvasChangedWithSameBBox()

            #***********************************************************************
            #Case 3 : new figure
            else:
                #update meshlayer parameters
                self.previousdrawparam = meshlayer.param_displayed
                self.previousdrawlvl = self.lvl_contour
                self.previousdrawtime = meshlayer.time_displayed
                self.previousdrawalpha = self.alpha_displayed
                self.previousdrawrenderersizepx = self.sizepx
                self.previousdrawcmcontour = self.cmap_contour_raw
                self.alreadypanned = False
                if self.meshlayer.forcerefresh == True:
                    self.meshlayer.forcerefresh = False

                if DEBUG:
                    self.debugtext += [
                        'new fig : ' +
                        str(round(time.clock() - self.timestart, 3))
                    ]

                img1, img2 = self.canvasCreation()

            if DEBUG:
                self.debugtext += [
                    'fin : ' + str(round(time.clock() - self.timestart, 3))
                ]
            if DEBUG:
                self.meshlayer.propertiesdialog.textBrowser_2.append(
                    str(self.debugtext))
            return (True, img1, img2)

        except Exception as e:
            meshlayer.propertiesdialog.textBrowser_2.append(
                'Get rendered image : ' + str(e))
            return (False, QtGui.QImage(), QtGui.QImage())
Beispiel #7
0
 def canvasCreation(self):
     return (QtGui.QImage(), QtGui.QImage())
Beispiel #8
0
from __future__ import print_function
import numpy as np
from qgis.PyQt import QtGui
import os, pickle, sys

path = os.path.abspath(os.path.split(__file__)[0])
pixmaps = {}
for f in os.listdir(path):
    if not f.endswith('.png'):
        continue
    print(f)
    img = QtGui.QImage(os.path.join(path, f))
    ptr = img.bits()
    ptr.setsize(img.byteCount())
    arr = np.asarray(ptr).reshape(img.height(), img.width(), 4).transpose(1,0,2)
    pixmaps[f] = pickle.dumps(arr)
ver = sys.version_info[0]
fh = open(os.path.join(path, 'pixmapData_%d.py' %ver), 'w')
fh.write("import numpy as np; pixmapData=%s" % repr(pixmaps))
    
Beispiel #9
0
 def showEvent(self, event):
     newImage = QtGui.QImage(self.size(), QtGui.QImage.Format_RGB32)
     newImage.fill(QtGui.qRgb(255, 255, 255))
     self.image = newImage
     self.render_userimage()
Beispiel #10
0
    def _csmapToFile(self, dem, layer_set, outdir):

        if dem.rasterUnitsPerPixelX() == dem.rasterUnitsPerPixelY():
            dx = dem.rasterUnitsPerPixelX()
            dy = dem.rasterUnitsPerPixelY()
            w = dem.dataProvider().xSize()
            h = dem.dataProvider().ySize()
        elif dem.rasterUnitsPerPixelX() > dem.rasterUnitsPerPixelY():
            dx = dem.rasterUnitsPerPixelY()
            dy = dem.rasterUnitsPerPixelY()
            w = int(dem.dataProvider().xSize() *
                    (dem.rasterUnitsPerPixelX() / dem.rasterUnitsPerPixelY()))
            h = dem.dataProvider().ySize()
        else:
            dx = dem.rasterUnitsPerPixelX()
            dy = dem.rasterUnitsPerPixelX()
            w = dem.dataProvider().xSize()
            h = int(dem.dataProvider().ySize() *
                    (dem.rasterUnitsPerPixelY() / dem.rasterUnitsPerPixelX()))

        img = QtGui.QImage(QtCore.QSize(w, h),
                           QtGui.QImage.Format_ARGB32_Premultiplied)
        color = QtGui.QColor(255, 255, 255)
        img.fill(color.rgb())

        setting = QgsMapSettings()
        setting.setExtent(dem.dataProvider().extent())
        setting.setDestinationCrs(dem.crs())
        setting.setOutputSize(QtCore.QSize(w, h))
        setting.setLayers(layer_set)
        setting.updateDerived()

        p = QtGui.QPainter()
        p.begin(img)

        render = QgsMapRendererCustomPainterJob(setting, p)

        render.start()
        render.waitForFinished()

        p.end()

        temp = tempfile.NamedTemporaryFile()
        img.save(temp.name + ".tif", "tif")

        src_ds = gdal.Open(temp.name + ".tif")
        driver = gdal.GetDriverByName("GTiff")

        filepath, filename = os.path.split(
            str(dem.dataProvider().dataSourceUri()))

        dst_file = outdir + r"/csmap_" + filename
        dst_ds = driver.CreateCopy(dst_file, src_ds, 0)
        geo_trans = [
            dem.dataProvider().extent().xMinimum(), dx, 0,
            dem.dataProvider().extent().yMaximum(), 0, dy * -1
        ]
        dst_ds.SetGeoTransform(geo_trans)
        dst_ds.SetProjection(str(dem.crs().toWkt()))

        dst_ds = None
        src_ds = None
        temp.close()

        self.result_files.append(dst_file)