本文整理汇总了Python中qgis.gui.QgsMapCanvas.extent方法的典型用法代码示例。如果您正苦于以下问题:Python QgsMapCanvas.extent方法的具体用法?Python QgsMapCanvas.extent怎么用?Python QgsMapCanvas.extent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.gui.QgsMapCanvas
的用法示例。
在下文中一共展示了QgsMapCanvas.extent方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Dialog
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import extent [as 别名]
class Dialog(QtGui.QWidget, Ui_DialogBase):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setupUi(self)
self.widget = QgsMapCanvas()
self.show()
def on_pushButton_clicked(self):
"""Wow - an autoconnected slot!"""
print 'Click!'
myPath = os.path.join(
os.path.dirname(__file__),
'landsat.tif')
print myPath
layer = QgsRasterLayer(myPath, 'A Layer')
QgsMapLayerRegistry.instance().addMapLayers([layer])
layer.setGrayBandName(layer.bandName(1))
layer.setDrawingStyle(QgsRasterLayer.SingleBandPseudoColor)
layer.setColorShadingAlgorithm(QgsRasterLayer.PseudoColorShader)
layer.saveDefaultStyle()
self.widget.zoomToFullExtent()
print self.widget.extent().toString()
print layer.extent().toString()
self.widget.refresh()
示例2: make_pdf
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import extent [as 别名]
def make_pdf():
canvas = QgsMapCanvas()
# Load our project
QgsProject.instance().read(QFileInfo(project_path))
bridge = QgsLayerTreeMapCanvasBridge(
QgsProject.instance().layerTreeRoot(), canvas)
bridge.setCanvasLayers()
if canvas.layerCount() < 1:
print 'No layers loaded from this project, exiting.'
return
print canvas.mapSettings().extent().toString()
template_file = file(template_path)
template_content = template_file.read()
template_file.close()
document = QDomDocument()
document.setContent(template_content)
composition = QgsComposition(canvas.mapSettings())
# You can use this to replace any string like this [key]
# in the template with a new value. e.g. to replace
# [date] pass a map like this {'date': '1 Jan 2012'}
substitution_map = {
'DATE_TIME_START': TIME_START,
'DATE_TIME_END': TIME_STOP}
composition.loadFromTemplate(document, substitution_map)
# You must set the id in the template
map_item = composition.getComposerItemById('map')
map_item.setMapCanvas(canvas)
map_item.zoomToExtent(canvas.extent())
# You must set the id in the template
legend_item = composition.getComposerItemById('legend')
legend_item.updateLegend()
composition.refreshItems()
composition.exportAsPDF(
'/home/web/reports/pdf/%s/%s.pdf' % (TIME_SLICE, LABEL))
QgsProject.instance().clear()
示例3: MirrorMap
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import extent [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:
#.........这里部分代码省略.........
示例4: AuxiliaryWindow
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import extent [as 别名]
class AuxiliaryWindow(QMainWindow):
closed = pyqtSignal( int )
def __init__(self, parent, geometryWin, numWin):
def populateStatusBar():
statusBar = self.statusBar()
w = QCheckBox( "Render", self )
w.setObjectName( 'renderCheck')
w.setToolTip( "Toggle map rendering" )
w.setChecked( True )
statusBar.addPermanentWidget( w )
w = QCheckBox( "Marker", self )
w.setObjectName( 'markerCheck')
w.setToolTip( "Toggle marker with cursor position from main map" )
w.setChecked( False )
statusBar.addPermanentWidget( w, 1 )
w = QCheckBox( "Extent", self )
w.setObjectName( 'extentCheck')
w.setToolTip( "Show extent of main map" )
w.setChecked( False )
statusBar.addPermanentWidget( w, 1 )
w = QToolButton(self)
w.setObjectName( 'highlightBtn')
w.setToolTip( "Highlight extent in main map" )
w.setText("Highlight")
statusBar.addPermanentWidget( w, 1 )
w = QLabel( "Scale factor:", self )
w.setObjectName( 'scaleFactorLabel')
w.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
statusBar.addPermanentWidget( w, 1 )
w = QDoubleSpinBox(self)
w.setObjectName( 'scaleFactorSpin')
w.setToolTip( "Current scale factor of main map" )
w.setMinimum(0.0)
w.setMaximum(1000.0)
w.setDecimals(3)
w.setValue(1)
w.setSingleStep(.05)
statusBar.addPermanentWidget( w, 1 )
w = QToolButton(self)
w.setObjectName( 'scaleBtn')
w.setToolTip( "Set scale for main map" )
w.setText("Scale: ")
statusBar.addPermanentWidget( w, 1 )
def setupUi():
self.setObjectName( "AuxiliaryWindow" )
self.setGeometry( geometryWin )
self.addDockWidget ( Qt.LeftDockWidgetArea, self.dockLegend )
self.actLegend = self.menuBar().addAction("")
self.actLegend.triggered.connect( self.onActionLegend )
self.canvas.setMapTool( self.toolPan )
self.canvas.setCanvasColor( QColor(255,255,255) )
self.canvas.enableAntiAliasing( False )
self.canvas.useImageToRender( False )
self.canvas.setWheelAction( QgsMapCanvas.WheelZoom )
self.setCentralWidget( centralWidget )
self.messageBar.setSizePolicy( QSizePolicy.Minimum, QSizePolicy.Fixed )
layout = QGridLayout()
layout.setContentsMargins( 0, 0, 0, 0 )
layout.addWidget( self.canvas, 0, 0, 2, 1 )
layout.addWidget( self.messageBar, 0, 0, 1, 1 )
centralWidget.setLayout( layout )
super( AuxiliaryWindow, self ).__init__( parent )
centralWidget = QWidget( self )
self.canvas = QgsMapCanvas( centralWidget )
self.messageBar = QgsMessageBar( centralWidget )
self.toolPan = QgsMapToolPan( self.canvas )
self.qgisCanvas = qgis.utils.iface.mapCanvas()
self.qgisTView = qgis.utils.iface.layerTreeView()
self.qgisSyncGroup = None
self.numWin = numWin
self.ltg = QgsLayerTreeGroup('', Qt.Unchecked)
self.dockLegend = AuxiliaryLegend( self, numWin )
self.root = QgsProject.instance().layerTreeRoot()
self.extent = self.actLegend = None
self.marker = MarkerWindow( self.canvas )
setupUi()
populateStatusBar()
self.onCurrentLayerChanged( None )
self.onDestinationCrsChanged_MapUnitsChanged()
self.onHasCrsTransformEnabledChanged( self.qgisCanvas.hasCrsTransformEnabled() )
def _connect(self, isConnect = True):
#.........这里部分代码省略.........
示例5: WidgetResult
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import extent [as 别名]
#.........这里部分代码省略.........
dlg_render.buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)
dlg_render.buttonBox.accepted.connect(dlg_render.accept)
dlg_render.buttonBox.accepted.connect(dlg_render.renderer.onOK)
dlg_render.buttonBox.rejected.connect(dlg_render.reject)
dlg_render.setVisible(True)
# get user input and update renderer
answer = dlg_render.exec_()
if answer == QDialog.Accepted:
self.map_layer_renderer[cur_layer_idx] = None
self.map_layer_renderer[cur_layer_idx] = self.map_layers[cur_layer_idx].rendererV2().clone()
self.canvas.refresh()
dlg_render.destroy()
del dlg_render
except Exception as err:
# thematic is not-critical, allow continue on exception
logUICall.log(str(err), logUICall.WARNING)
@logUICall
@pyqtSlot()
def searchFeature(self):
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)
layer = self.map_layers[cur_layer_idx]
fields = []
for fidx in layer.dataProvider().fields():
fields.append(layer.dataProvider().fields()[fidx].name())
dlg_search = DialogSearchFeature(fields)
answer = dlg_search.exec_()
if answer == QDialog.Accepted:
extent = self.findFeatureExtentByAttribute(layer, dlg_search.attribute, dlg_search.value)
if extent is not None:
self.zoomToExtent(extent)
else:
logUICall.log(get_ui_string("widget.result.info.notfound"), logUICall.WARNING)
dlg_search.destroy()
except Exception as err:
# thematic is not-critical, allow continue on exception
logUICall.log(str(err), logUICall.WARNING)
@logUICall
@pyqtSlot()
def mapIdentify(self):
"""
event handler for btn_info
This only enables map querying, method connected to canvasClicked signal does
the actual point-polygon query
"""
self.canvas.setMapTool(self.toolInfo)
@logUICall
@pyqtSlot()
def selectExportFile(self):
"""
event handler for btn_export_select_path
- open save file dialog box to select file name for export
"""
filename = QFileDialog.getSaveFileName(self,
get_ui_string("widget.result.export.file.open"),
".",
self.ui.cb_export_format.currentText())
if not filename.isNull():
self.ui.txt_export_select_path.setText(filename)
示例6: PdfMaker
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import extent [as 别名]
#.........这里部分代码省略.........
self.canvas.enableAntiAliasing(True)
self.template_path = template_path
def __del__(self):
"""Destructor."""
del self.app
def _load_template(self):
"""Load the template.
:return: QgsComposition containing the loaded template.
:rtype: QgsComposition
"""
template_file = file(self.template_path)
template_content = template_file.read()
template_file.close()
document = QDomDocument()
document.setContent(template_content)
composition = QgsComposition(self.canvas.mapSettings())
# You can use this to replace any string like this [key]
# in the template with a new value. e.g. to replace
# [date] pass a map like this {'date': '1 Jan 2012'}
substitution_map = {
'DATE_TIME_START': 'foo',
'DATE_TIME_END': 'bar'}
composition.loadFromTemplate(document, substitution_map)
return composition
def _load_layers(self):
"""Manually load all the layers for our project.
:return: A list of QgsMapLayer instances.
:rtype: list
"""
layers = []
# First the RW layer
host = 'db'
port = '5432'
user = 'docker'
password = 'docker'
dbname = 'gis'
uri = QgsDataSourceURI()
uri.setConnection(host, port, dbname, user, password)
schema = 'public'
table = 'flood_mapper_rw'
geometry_column = 'geometry'
where_clause = ''
title = 'RW'
uri.setDataSource(schema, table, geometry_column, where_clause)
layer = QgsVectorLayer(uri.uri(), title, 'postgres')
QgsMapLayerRegistry.instance().addMapLayer(layer, False)
canvas_layer = QgsMapCanvasLayer(layer)
layers.append(canvas_layer)
# Now the JK layer
path = './data/jk.shp'
title = 'JK'
layer = QgsVectorLayer(path, title, 'ogr')
QgsMapLayerRegistry.instance().addMapLayer(layer, False)
canvas_layer = QgsMapCanvasLayer(layer)
layers.append(canvas_layer)
return layers
def make_pdf(self, pdf_path):
"""Generate a pdf for the given project and template files.
:param pdf_path: Absolute path for the output PDF file.
:type pdf_path: str
"""
layers = self._load_layers()
self.canvas.setLayerSet(layers)
if self.canvas.layerCount() < 1:
print 'No layers loaded from this project, exiting.'
return
self.canvas.setDestinationCrs(QgsCoordinateReferenceSystem('EPSG:3857'))
self.canvas.setCrsTransformEnabled(True)
self.canvas.zoomToFullExtent()
print 'Extent: %s' % self.canvas.mapSettings().extent().toString()
# self._load_project()
composition = self._load_template()
# You must set the id in the template
map_item = composition.getComposerItemById('map')
map_item.setMapCanvas(self.canvas)
map_item.zoomToExtent(self.canvas.extent())
# You must set the id in the template
legend_item = composition.getComposerItemById('legend')
legend_item.updateLegend()
composition.refreshItems()
composition.exportAsPDF(pdf_path)
QgsProject.instance().clear()