本文整理汇总了Python中qgis.gui.QgsMapCanvas.setRenderFlag方法的典型用法代码示例。如果您正苦于以下问题:Python QgsMapCanvas.setRenderFlag方法的具体用法?Python QgsMapCanvas.setRenderFlag怎么用?Python QgsMapCanvas.setRenderFlag使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.gui.QgsMapCanvas
的用法示例。
在下文中一共展示了QgsMapCanvas.setRenderFlag方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: MirrorMap
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setRenderFlag [as 别名]
class MirrorMap(QWidget):
def __init__(self, parent, iface):
QWidget.__init__(self, parent)
self.setAttribute(Qt.WA_DeleteOnClose)
self.iface = iface
self.layerId2canvasLayer = {}
self.canvasLayers = []
self.setupUi()
def closeEvent(self, event):
# self.scaleFactor.valueChanged.disconnect(self.onExtentsChanged)
QObject.disconnect(self.iface.mapCanvas(), SIGNAL("extentsChanged()"), self.onExtentsChanged)
QObject.disconnect(self.iface.mapCanvas().mapRenderer(), SIGNAL("destinationCrsChanged()"), self.onCrsChanged)
QObject.disconnect(self.iface.mapCanvas().mapRenderer(), SIGNAL("mapUnitsChanged()"), self.onCrsChanged)
QObject.disconnect(self.iface.mapCanvas().mapRenderer(), SIGNAL("hasCrsTransformEnabled(bool)"), self.onCrsTransformEnabled)
QObject.disconnect(QgsMapLayerRegistry.instance(), SIGNAL("layerWillBeRemoved(QString)"), self.delLayer)
QObject.disconnect(self.iface, SIGNAL("currentLayerChanged(QgsMapLayer *)"), self.refreshLayerButtons)
self.emit(SIGNAL("closed(PyQt_PyObject)"), self)
return QWidget.closeEvent(self, event)
def setupUi(self):
self.setObjectName("dockablemirrormap_mirrormap")
gridLayout = QGridLayout(self)
gridLayout.setContentsMargins(0, 0, gridLayout.verticalSpacing(), gridLayout.verticalSpacing())
self.canvas = QgsMapCanvas(self)
self.canvas.setCanvasColor(QColor(255, 255, 255))
settings = QSettings()
self.canvas.enableAntiAliasing(settings.value("/qgis/enable_anti_aliasing", False, type=bool))
self.canvas.useImageToRender(settings.value("/qgis/use_qimage_to_render", False, type=bool))
self.canvas.setWheelAction(3)
gridLayout.addWidget(self.canvas, 0, 0, 1, 5)
QObject.connect(self.iface.mapCanvas(), SIGNAL("extentsChanged()"), self.onExtentsChanged)
QObject.connect(self.iface.mapCanvas().mapRenderer(), SIGNAL("destinationCrsChanged()"), self.onCrsChanged)
QObject.connect(self.iface.mapCanvas().mapRenderer(), SIGNAL("mapUnitsChanged()"), self.onCrsChanged)
QObject.connect(self.iface.mapCanvas().mapRenderer(), SIGNAL("hasCrsTransformEnabled(bool)"), self.onCrsTransformEnabled)
QObject.connect(QgsMapLayerRegistry.instance(), SIGNAL("layerWillBeRemoved(QString)"), self.delLayer)
self.onExtentsChanged()
self.onCrsChanged()
self.onCrsTransformEnabled(self.iface.mapCanvas().hasCrsTransformEnabled())
def toggleRender(self, enabled):
self.canvas.setRenderFlag(enabled)
self.canvas.refresh()
self.canvas.repaint()
def onExtentsChanged(self):
try :
prevFlag = self.canvas.renderFlag()
self.canvas.setRenderFlag(False)
self.canvas.setExtent(self.iface.mapCanvas().extent())
# self.canvas.zoomByFactor( self.scaleFactor.value() )
self.canvas.setRenderFlag(prevFlag)
self.canvas.repaint()
self.canvas.refresh()
except Exception:
pass
def mirror_extent_changed(self):
logger.debug(self.canvas.extent())
logger.debug(self.iface.mapCanvas().extent())
if self.canvas.extent() != self.iface.mapCanvas().extent():
self.emit(SIGNAL("extentChanged( QgsRectangle )"), self.canvas.extent())
def onCrsChanged(self):
try:
prevFlag = self.canvas.renderFlag()
self.canvas.setRenderFlag(False)
renderer = self.iface.mapCanvas().mapRenderer()
self._setRendererCrs(self.canvas.mapRenderer(), self._rendererCrs(renderer))
self.canvas.mapRenderer().setMapUnits(renderer.mapUnits())
self.canvas.setRenderFlag(prevFlag)
self.canvas.repaint()
self.canvas.refresh()
except Exception:
pass
def onCrsTransformEnabled(self, enabled):
try:
prevFlag = self.canvas.renderFlag()
self.canvas.setRenderFlag(False)
self.canvas.mapRenderer().setProjectionsEnabled(enabled)
self.canvas.setRenderFlag(prevFlag)
self.canvas.repaint()
self.canvas.refresh()
except Exception:
#.........这里部分代码省略.........
示例2: ConflictDialog
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setRenderFlag [as 别名]
#.........这里部分代码省略.........
return
try:
geom = QgsGeometry.fromWkt(values[0])
except:
geom = None
if geom is not None:
self.theirsgeom = QgsGeometry().fromWkt(values[1])
self.oursgeom = QgsGeometry.fromWkt(values[2])
geoms = (self.oursgeom, self.theirsgeom)
ok = values[0] == values[1] or values[1] == values[2] or values[0] == values[2]
for i, v in enumerate(values):
self.attributesTable.setItem(idx, i, ValueItem(v, not ok, geoms));
if not ok:
self.conflicted.append(name)
else:
if values[0] == values[1]:
newvalue = values[2]
else:
newvalue = values[1]
self.attributesTable.setItem(idx, 4, ValueItem(newvalue, False, geoms));
self.attributesTable.resizeRowsToContents()
self.attributesTable.horizontalHeader().setMinimumSectionSize(150)
self.attributesTable.horizontalHeader().setStretchLastSection(True)
def solveModifyAndDelete(self, path, modified):
msgBox = QMessageBox()
msgBox.setText("The feature has been modified in one version and deleted in the other one.\n"
"How do you want to solve the conflict?")
msgBox.addButton(QPushButton('Modify'), QMessageBox.YesRole)
msgBox.addButton(QPushButton('Delete'), QMessageBox.NoRole)
msgBox.addButton(QPushButton('Cancel'), QMessageBox.RejectRole)
ret = msgBox.exec_()
if ret == 0:
self.resolvedConflicts[path] = modified
self._afterSolve()
elif ret == 1:
self.resolvedConflicts[path] = self.DELETE
self._afterSolve()
else:
pass
def createLayers(self):
types = [("Point", ptOursStyle, ptTheirsStyle),
("LineString", lineOursStyle, lineTheirsStyle),
("Polygon", polygonOursStyle, polygonTheirsStyle)]
if self.oursgeom is not None:
geomtype = types[int(self.oursgeom.type())][0]
style = types[int(self.oursgeom.type())][1]
self.oursLayer = loadLayerNoCrsDialog(geomtype + "?crs=EPSG:4326", "ours", "memory")
pr = self.oursLayer.dataProvider()
feat = QgsFeature()
feat.setGeometry(self.oursgeom)
pr.addFeatures([feat])
self.oursLayer.loadNamedStyle(style)
self.oursLayer.updateExtents()
QgsMapLayerRegistry.instance().addMapLayer(self.oursLayer, False)
else:
self.oursLayer = None
if self.theirsgeom is not None:
geomtype = types[int(self.theirsgeom.type())][0]
style = types[int(self.theirsgeom.type())][2]
self.theirsLayer = loadLayerNoCrsDialog(geomtype + "?crs=EPSG:4326", "theirs", "memory")
pr = self.theirsLayer.dataProvider()
feat = QgsFeature()
feat.setGeometry(self.theirsgeom)
pr.addFeatures([feat])
self.theirsLayer.loadNamedStyle(style)
self.theirsLayer.updateExtents()
QgsMapLayerRegistry.instance().addMapLayer(self.theirsLayer, False)
else:
self.theirsLayer = None
def showGeoms(self):
checks = [self.showRemoteCheck, self.showLocalCheck]
layers = [self.oursLayer, self.theirsLayer]
toShow = []
for lay, chk in zip(layers, checks):
if lay is not None and chk.isChecked():
toShow.append(lay)
self.mapCanvas.setRenderFlag(False)
self.mapCanvas.setLayerSet([QgsMapCanvasLayer(layer) for layer in toShow])
self.mapCanvas.setRenderFlag(True)
def closeEvent(self, evnt):
if not self.solved:
ret = QMessageBox.warning(self, "Conflict resolution",
"There are unsolved conflicts.\n"
"Do you really want to exit and abort the sync operation?",
QMessageBox.Yes | QMessageBox.No)
if ret == QMessageBox.No:
evnt.ignore()
return
self.cleanCanvas()
示例3: VersionViewerDialog
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setRenderFlag [as 别名]
class VersionViewerDialog(BASE, WIDGET):
def __init__(self, repo, path):
super(VersionViewerDialog, self).__init__(config.iface.mainWindow(), Qt.WindowSystemMenuHint | Qt.WindowTitleHint)
self.repo = repo
self.path = path
self.setupUi(self)
self.listWidget.itemClicked.connect(self.commitClicked)
settings = QSettings()
horizontalLayout = QHBoxLayout()
horizontalLayout.setSpacing(0)
horizontalLayout.setMargin(0)
self.mapCanvas = QgsMapCanvas()
self.mapCanvas.setCanvasColor(Qt.white)
self.mapCanvas.enableAntiAliasing(settings.value("/qgis/enable_anti_aliasing", False, type = bool))
self.mapCanvas.useImageToRender(settings.value("/qgis/use_qimage_to_render", False, type = bool))
action = settings.value("/qgis/wheel_action", 0, type = float)
zoomFactor = settings.value("/qgis/zoom_factor", 2, type = float)
self.mapCanvas.setWheelAction(QgsMapCanvas.WheelAction(action), zoomFactor)
horizontalLayout.addWidget(self.mapCanvas)
self.mapWidget.setLayout(horizontalLayout)
self.panTool = QgsMapToolPan(self.mapCanvas)
self.mapCanvas.setMapTool(self.panTool)
versions = repo.log(path = path)
if versions:
for commit in versions:
item = CommitListItem(commit, repo, path)
self.listWidget.addItem(item)
''''w = CommitListItemWidget(commit)
self.ui.listWidget.setItemWidget(item, w)'''
else:
raise GeoGigException("The selected feature is not versioned yet")
def commitClicked(self):
feature = self.listWidget.currentItem().feature
geom = None
self.attributesTable.setRowCount(len(feature))
for idx, attrname in enumerate(feature):
value = feature[attrname]
font = QFont()
font.setBold(True)
font.setWeight(75)
item = QTableWidgetItem(attrname)
item.setFont(font)
self.attributesTable.setItem(idx, 0, item);
self.attributesTable.setItem(idx, 1, QTableWidgetItem(str(value)));
if geom is None:
try:
geom = QgsGeometry.fromWkt(value)
except:
pass
self.attributesTable.resizeRowsToContents()
self.attributesTable.horizontalHeader().setMinimumSectionSize(150)
self.attributesTable.horizontalHeader().setStretchLastSection(True)
settings = QSettings()
prjSetting = settings.value('/Projections/defaultBehaviour')
settings.setValue('/Projections/defaultBehaviour', '')
types = ["Point", "LineString", "Polygon"]
layers = []
if geom is not None:
geomtype = types[int(geom.type())]
layer = loadLayerNoCrsDialog(geomtype + "?crs=EPSG:4326", "temp", "memory")
pr = layer.dataProvider()
feat = QgsFeature()
feat.setGeometry(geom)
pr.addFeatures([feat])
layer.updateExtents()
layer.selectAll()
layer.setExtent(layer.boundingBoxOfSelected())
layer.invertSelection()
symbol = QgsSymbolV2.defaultSymbol(layer.geometryType())
symbol.setColor(Qt.green)
symbol.setAlpha(0.5)
if QGis.QGIS_VERSION_INT < 29900:
layer.setRendererV2(QgsSingleSymbolRendererV2(symbol))
else:
layer.setRenderer(QgsSingleSymbolRenderer(symbol))
self.mapCanvas.setRenderFlag(False)
self.mapCanvas.setLayerSet([QgsMapCanvasLayer(layer)])
QgsMapLayerRegistry.instance().addMapLayer(layer, False)
self.mapCanvas.setExtent(layer.extent())
self.mapCanvas.setRenderFlag(True)
layers.append(layer)
else:
self.mapCanvas.setLayerSet([])
settings.setValue('/Projections/defaultBehaviour', prjSetting)
示例4: AuxiliaryWindow
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setRenderFlag [as 别名]
#.........这里部分代码省略.........
self.messageBar.pushMessage( msg, QgsMessageBar.INFO, 4 )
return True
if not self.qgisSyncGroup is None:
self.qgisSyncGroup.addedChildren.disconnect( self.addedChildrenLayer )
self.qgisSyncGroup = ltg
self.qgisSyncGroup.addedChildren.connect( self.addedChildrenLayer )
self.dockLegend.addNameSyncGroup( name )
msg = "Changed synchronized group (main map) -> '%s'" % name
self.messageBar.pushMessage( msg, QgsMessageBar.INFO, 4 )
self._addLayersQgis( layersQgis )
return True
def run(self):
if len( self.qgisTView.selectedLayerNodes() ) > 0:
self.onAddSelectedLayersQgis()
else:
ltn = self.qgisTView.currentNode()
if not isinstance( ltn, QgsLayerTreeGroup ):
return False
else:
if ltn == self.root:
return False
else:
if not self._syncGroupAddLayersQgis( ltn ):
return False
self.dockLegend.setBridge( self.canvas)
self.canvas.setRenderFlag( False )
self.show() # Need show before self._connect()
self._connect()
self.canvas.setExtent( self.qgisCanvas.extent() )
w = self.findChild( QDoubleSpinBox, 'scaleFactorSpin')
w.setValue( 1 )
self.canvas.setRenderFlag( True )
return True
def getLayersCanvas(self):
layerIds = map(lambda x: x.layerId(), self.ltg.findLayers() )
layerChecks = map(lambda x: str( x.isVisible() ), self.ltg.findLayers() )
return ( layerIds, layerChecks )
def setLayersCanvas(self, layerIds, layerChecks ):
prevFlag = self.canvas.renderFlag()
self.canvas.setRenderFlag( False )
lyrRegs = QgsMapLayerRegistry.instance()
for id in range( len( layerIds ) ):
layer = lyrRegs.mapLayer( layerIds[id] )
isVisible = int( layerChecks[id] )
if not layer is None:
self.ltg.addLayer( layer ).setVisible( isVisible )
self.canvas.setRenderFlag( prevFlag )
def getWindowSetting(self):
g = self.geometry()
r = self.canvas.extent()
nodes = self.ltg.findLayers()
示例5: WidgetResult
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setRenderFlag [as 别名]
#.........这里部分代码省略.........
self.ui.widget_map.width()-self.ui.widget_map_menu_r.width(), # right align with map panel
0)
# logo
self.ui.lb_gem_logo.move(self.width()-self.ui.lb_gem_logo.width(), self.ui.lb_gem_logo.y())
@logUICall
@pyqtSlot()
def mapPan(self):
""" event handler for btn_pan - pan map """
self.canvas.unsetMapTool(self.toolInfo)
self.canvas.setMapTool(self.toolPan)
@logUICall
@pyqtSlot()
def mapZoomIn(self):
""" event handler for btn_zoom_in - zoom in on map """
self.canvas.unsetMapTool(self.toolInfo)
self.canvas.setMapTool(self.toolZoomIn)
@logUICall
@pyqtSlot()
def mapZoomOut(self):
""" event handler for btn_zoom_out - zoom out on map """
self.canvas.unsetMapTool(self.toolInfo)
self.canvas.setMapTool(self.toolZoomOut)
@logUICall
@pyqtSlot()
def mapZoomFull(self):
""" event handler for btn_zoom_full - zoom to full map """
self.canvas.zoomToFullExtent()
def checkRendering(self, changed):
self.canvas.setRenderFlag(True)
@logUICall
@pyqtSlot()
def stopRendering(self):
self.canvas.setRenderFlag(False)
@logUICall
@pyqtSlot()
def mapZoomLayer(self):
self.canvas.unsetMapTool(self.toolInfo)
cur_layer_name = self.ui.cb_layer_selector.currentText()
if cur_layer_name.isEmpty():
return
self.zoomToLayer(self.map_layers[self.LAYER_NAMES.index(cur_layer_name)])
@logUICall
@pyqtSlot()
def mapEditTheme(self):
""" event handler for btn_edit - identify item on map """
cur_layer_name = self.ui.cb_layer_selector.currentText()
if cur_layer_name.isEmpty():
return
try:
cur_layer_idx = self.LAYER_NAMES.index(cur_layer_name)
# build layer render property Dialog for selected layer
dlg_render = QDialog()
dlg_render.setWindowTitle(get_ui_string('widget.result.renderer.settings'))
dlg_render.setModal(True)
dlg_render.setFixedSize(530, 370)
dlg_render.renderer = QgsRendererV2PropertiesDialog(self.map_layers[cur_layer_idx], self.style, True)
dlg_render.renderer.setParent(dlg_render)