Skip to content

Instantly share code, notes, and snippets.

@NathanW2

NathanW2/sipe.py Secret

Last active August 29, 2015 14:02
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NathanW2/dc1b665cbce627ce0350 to your computer and use it in GitHub Desktop.
Save NathanW2/dc1b665cbce627ce0350 to your computer and use it in GitHub Desktop.
from PyQt4.QtGui import *
from qgis.gui import *
map = iface.mapCanvas().map()
othermap = QgsMapCanvasMap(iface.mapCanvas())
othermap.setZValue(-9.0)
legend = iface.legendInterface()
def updatebackmap():
def updatemap():
othermap.setContent(job.renderedImage(), settings.extent())
settings = QgsMapSettings(iface.mapCanvas().mapSettings())
groups = legend.groupLayerRelationship()
slidergroup = [layers for group, layers in groups if group == 'Slider'][0]
settings.setLayers(slidergroup)
job = QgsMapRendererParallelJob(settings)
job.start()
job.finished.connect(updatemap)
def value(i):
i = float(i) / 100
othermap.setOpacity(i)
iface.mapCanvas().extentsChanged.connect(updatebackmap)
slider = QSlider(1)
slider.setTickInterval(0.1)
slider.show()
slider.valueChanged.connect(value)
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from qgis.gui import *
class SwipeMap(QgsMapCanvasMap):
def __init__(self, canvas):
super(SwipeMap, self).__init__(canvas)
self.width = 0
self.setZValue(-9.0)
self.image = QImage()
def setContent(self, image, rect):
self.image = image
self.setRect(rect)
def setWidth(self, width):
self.width = width
self.update()
def paint(self, painter, *args):
w = self.width
h = self.boundingRect().height() - 2
image = self.image.copy(0,0, self.width, h)
painter.drawImage(QRect(0,0,w,h), image )
painter.drawLine(w-1,0,w-1,h-1)
map = iface.mapCanvas().map()
othermap = SwipeMap(iface.mapCanvas())
legend = iface.legendInterface()
def updatebackmap():
def updatemap():
othermap.setContent(job.renderedImage(), settings.extent())
settings = QgsMapSettings(iface.mapCanvas().mapSettings())
groups = legend.groupLayerRelationship()
slidergroup = [layers for group, layers in groups if group == 'Slider'][0]
settings.setLayers(slidergroup)
job = QgsMapRendererParallelJob(settings)
job.start()
job.finished.connect(updatemap)
def value(i):
w = (i * iface.mapCanvas().map().boundingRect().width()) / 100
othermap.setWidth(w)
iface.mapCanvas().mapCanvasRefreshed.connect(updatebackmap)
slider = QSlider(1)
slider.setTickInterval(1)
slider.setRange(0,100)
slider.show()
slider.valueChanged.connect(value)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment