本文整理汇总了Python中qgis.gui.QgsMapCanvas.setCanvasColor方法的典型用法代码示例。如果您正苦于以下问题:Python QgsMapCanvas.setCanvasColor方法的具体用法?Python QgsMapCanvas.setCanvasColor怎么用?Python QgsMapCanvas.setCanvasColor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.gui.QgsMapCanvas
的用法示例。
在下文中一共展示了QgsMapCanvas.setCanvasColor方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: MainWindow
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setCanvasColor [as 别名]
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.canvas = QgsMapCanvas()
self.canvas.setCanvasColor(QtGui.QColor(255, 255, 255))
self.canvas.enableAntiAliasing(True)
def create_layer(self, data):
display_name = 'some-layer'
uri = 'Point?crs=epsg:4326&index=yes&uuid=%s' % uuid.uuid4()
vlayer = QgsVectorLayer(uri, display_name, 'memory')
QgsMapLayerRegistry.instance().addMapLayer(vlayer)
provider = vlayer.dataProvider()
vlayer.startEditing()
provider.addAttributes([
QgsField('population_density', QtCore.QVariant.Double),
])
features = []
for x, y, density in data:
feat = QgsFeature()
geom = QgsGeometry.fromPoint(QgsPoint(x, y))
feat.setGeometry(geom)
feat.setAttributes([density])
features.append(feat)
provider.addFeatures(features)
vlayer.commitChanges()
vlayer.updateExtents()
self.canvas.setExtent(vlayer.extent())
vlayer.triggerRepaint()
示例2: MirrorMap
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setCanvasColor [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:
#.........这里部分代码省略.........
示例3: ConflictDialog
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setCanvasColor [as 别名]
class ConflictDialog(WIDGET, BASE):
LOCAL, REMOTE, DELETE = 1,2, 3
def __init__(self, conflicts):
super(ConflictDialog, self).__init__(None, Qt.WindowSystemMenuHint | Qt.WindowTitleHint)
self.solved = False
self.resolvedConflicts = {}
self.conflicts = conflicts
self.setupUi(self)
self.setWindowFlags(self.windowFlags() |
Qt.WindowSystemMenuHint |
Qt.WindowMinMaxButtonsHint)
self.zoomButton.clicked.connect(self.zoomToFullExtent)
self.solveButton.clicked.connect(self.solve)
self.conflictsTree.itemClicked.connect(self.treeItemClicked)
self.attributesTable.cellClicked.connect(self.cellClicked)
self.solveAllLocalButton.clicked.connect(self.solveAllLocal)
self.solveAllRemoteButton.clicked.connect(self.solveAllRemote)
self.solveLocalButton.clicked.connect(self.solveLocal)
self.solveRemoteButton.clicked.connect(self.solveRemote)
self.showRemoteCheck.stateChanged.connect(self.showGeoms)
self.showLocalCheck.stateChanged.connect(self.showGeoms)
self.lastSelectedItem = None
self.currentPath = None
self.currentConflict = None
self.theirsLayer = None
self.oursLayer = None
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))
self.mapCanvas.mapRenderer().setProjectionsEnabled(True)
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.canvasWidget.setLayout(horizontalLayout)
self.panTool = QgsMapToolPan(self.mapCanvas)
self.mapCanvas.setMapTool(self.panTool)
self.solveButton.setEnabled(False)
self.solveLocalButton.setEnabled(False)
self.solveRemoteButton.setEnabled(False)
self.fillConflictsTree()
def fillConflictsTree(self):
topTreeItems = {}
for c in self.conflicts:
path = os.path.dirname(c.path)
if path in topTreeItems:
topItem = topTreeItems[path]
else:
topItem = QTreeWidgetItem()
topItem.setText(0, path)
topItem.setIcon(0, layerIcon)
topTreeItems[path] = topItem
conflictItem = ConflictItem(c)
topItem.addChild(conflictItem)
for item in list(topTreeItems.values()):
self.conflictsTree.addTopLevelItem(item)
def cellClicked(self, row, col):
if col > 2:
return
value = self.attributesTable.item(row, col).value
geoms = (self.oursgeom, self.theirsgeom)
self.attributesTable.setItem(row, 4, ValueItem(value, False, geoms));
self.attributesTable.item(row, 0).setBackgroundColor(Qt.white);
self.attributesTable.item(row, 1).setBackgroundColor(Qt.white);
self.attributesTable.item(row, 2).setBackgroundColor(Qt.white);
attrib = self.attributesTable.item(row, 3).text()
if attrib in self.conflicted:
self.conflicted.remove(attrib)
self.updateSolveButton()
self.showGeoms()
def treeItemClicked(self):
item = self.conflictsTree.selectedItems()[0]
if self.lastSelectedItem == item:
return
if isinstance(item, ConflictItem):
self.lastSelectedItem = item
self.currentPath = item.conflict.path
self.updateCurrentPath()
self.solveLocalButton.setEnabled(True)
self.solveRemoteButton.setEnabled(True)
self.solveButton.setEnabled(False)
#.........这里部分代码省略.........
示例4: QgsMapCanvas
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setCanvasColor [as 别名]
import sys
from qgis.gui import QgsMapCanvas, QgsLayerTreeMapCanvasBridge
import os
from qgis.core import QgsProject
from qgis.core.contextmanagers import qgisapp
from PyQt4.QtCore import QFileInfo
# Get all layer names
allLayers = QgsMapLayerRegistry.instance().mapLayers()
for name,layer in allLayers.iteritems():
print layer.name()
#show and set map canvas
canvas = QgsMapCanvas()
canvas.setCanvasColor(Qt.white)
#canvas.setCanvasColor(Qt.red)
canvas.enableAntiAliasing(True)
# set extent to the extent of our layer
canvas.setExtent(baselayer.extent())
# Load our project
bridge = QgsLayerTreeMapCanvasBridge(QgsProject.instance().layerTreeRoot(), canvas)
#QgsProject.instance().read(QFileInfo(project_path))
bridge.setCanvasLayers()
canvas.show()
#----------------------------------------------------------------------------------------------------------------------------------------
#Part 2. Select local .shp file and load as vector layer
示例5: FeatureOfInterestDefinerConfigurationWidget
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setCanvasColor [as 别名]
class FeatureOfInterestDefinerConfigurationWidget(StandardModuleConfigurationWidget):
"""A widget to configure the FeatureOfInterestDefiner Module."""
def __init__(self, module, controller, parent=None):
StandardModuleConfigurationWidget.__init__(self, module, controller, parent)
self.foi_type = module.name
#self.module = module
self.setObjectName("FeatureOfInterestDefinerWidget")
self.parent_widget = module
# FIXME these modules don't exist
self.path_png_icon = vistrails.packages.eo4vistrails.geoinf.visual.__path__[0]
self.path_bkgimg = vistrails.packages.eo4vistrails.geoinf.visual.__path__[0]
self.create_config_window()
def create_config_window(self):
"""TO DO - add docstring"""
self.setWindowTitle(self.foi_type)
self.setMinimumSize(800, 850)
self.center()
self.mainLayout = QtGui.QVBoxLayout()
self.setLayout(self.mainLayout)
#set up Group Box for organising CRS of FOI
self.crsGroupBox = QtGui.QGroupBox("Define Projection or Coordinate Reference System")
self.crsLayout = QtGui.QHBoxLayout()
self.crsProj4Label = QtGui.QLabel('SRS Proj4: ')
self.crsTextAsProj4 = QtGui.QLineEdit('4326')
self.crsChooseButton = QtGui.QPushButton('&Choose SRS')
self.crsChooseButton.setAutoDefault(False)
self.crsChooseButton.setToolTip('Choose a Spatial Reference System or Projection')
self.crsLayout.addWidget(self.crsProj4Label)
self.crsLayout.addWidget(self.crsTextAsProj4)
self.crsLayout.addWidget(self.crsChooseButton)
self.crsGroupBox.setLayout(self.crsLayout)
#set up Group Box for getting coords of Bounding Box
self.bbGroupBox = QtGui.QGroupBox("Define Area of Interest via a Bounding Box in units of SRS")
self.bbLayout = QtGui.QHBoxLayout()
self.bbMinXLabel = QtGui.QLabel('MinX/Left: ')
self.bbMinYLabel = QtGui.QLabel('MinY/Bottom: ')
self.bbMaxXLabel = QtGui.QLabel('MaxX/Right: ')
self.bbMaxYLabel = QtGui.QLabel('MaxY/Top: ')
self.bbMinXText = QtGui.QLineEdit('15')
self.bbMinYText = QtGui.QLineEdit('-35')
self.bbMaxXText = QtGui.QLineEdit('35')
self.bbMaxYText = QtGui.QLineEdit('-20')
self.bbToMapButton = QtGui.QPushButton('&To Map')
self.bbToMapButton.setAutoDefault(False)
self.bbToMapButton.setToolTip('Show Bounding Box on Map')
self.bbLayout.addWidget(self.bbMinXLabel)
self.bbLayout.addWidget(self.bbMinXText)
self.bbLayout.addWidget(self.bbMinYLabel)
self.bbLayout.addWidget(self.bbMinYText)
self.bbLayout.addWidget(self.bbMaxXLabel)
self.bbLayout.addWidget(self.bbMaxXText)
self.bbLayout.addWidget(self.bbMaxYLabel)
self.bbLayout.addWidget(self.bbMaxYText)
self.bbLayout.addWidget(self.bbToMapButton)
self.bbGroupBox.setLayout(self.bbLayout)
#set up Group Box for getting text representation of a geometry
self.asTxtGroupBox = QtGui.QGroupBox("Define Area of Interest via a WKT string in units of SRS")
self.asTxtLayout = QtGui.QVBoxLayout()
self.asTxtLabel = QtGui.QLabel('WKT String: ')
self.asTxtText = QtGui.QTextEdit('')
self.asTxtToMapButton = QtGui.QPushButton('&To Map')
self.asTxtToMapButton.setAutoDefault(False)
self.asTxtToMapButton.setToolTip('Show Bounding Box on Map')
self.asTxtLayout.addWidget(self.asTxtLabel)
self.asTxtLayout.addWidget(self.asTxtText)
self.asTxtLayout.addWidget(self.asTxtToMapButton)
self.asTxtGroupBox.setLayout(self.asTxtLayout)
#set up Group Box for Map
self.MapGroupBox = QtGui.QGroupBox("Map Viewer")
self.MapLayout = QtGui.QHBoxLayout()
#sz = QtCore.QSize(200, 300)
#self.MapLayout.setGeometry(QtCore.QRect(300, 700, 780, 680))
self.MapGroupBox.setLayout(self.MapLayout)
## create canvas
self.canvas = QgsMapCanvas()
self.canvas.setCanvasColor(QtGui.QColor(200, 200, 255))
#self.mainLayout.addWidget(self.canvas)
# icons
actionAddLayer = QtGui.QAction(QtGui.QIcon(self.path_png_icon + \
"/mActionAddLayer.png"), "Add Layer", self)
actionZoomIn = QtGui.QAction(QtGui.QIcon(self.path_png_icon + \
"/mActionZoomIn.png"), "Zoom In", self)
#.........这里部分代码省略.........
示例6: ViewerWnd
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setCanvasColor [as 别名]
class ViewerWnd( QMainWindow ):
def __init__( self, app, dictOpts ):
QMainWindow.__init__( self )
self.setWindowTitle( "PostGIS Layer Viewer - v.1.6.1" )
self.setTabPosition( Qt.BottomDockWidgetArea, QTabWidget.North )
self.canvas = QgsMapCanvas()
self.canvas.setCanvasColor( Qt.white )
self.canvas.useImageToRender( True )
self.canvas.enableAntiAliasing( True )
self.setCentralWidget( self.canvas )
actionZoomIn = QAction( QIcon( imgs_dir + "mActionZoomIn.png" ), QString( "Zoom in" ), self )
actionZoomOut = QAction( QIcon( imgs_dir + "mActionZoomOut.png" ), QString( "Zoom out" ), self )
actionPan = QAction( QIcon( imgs_dir + "mActionPan.png" ), QString( "Pan" ), self )
actionZoomFullExtent = QAction( QIcon( imgs_dir + "mActionZoomFullExtent.png" ), QString( "Zoom full" ), self )
actionZoomIn.setCheckable( True )
actionZoomOut.setCheckable( True )
actionPan.setCheckable( True )
self.connect(actionZoomIn, SIGNAL( "triggered()" ), self.zoomIn )
self.connect(actionZoomOut, SIGNAL( "triggered()" ), self.zoomOut )
self.connect(actionPan, SIGNAL( "triggered()" ), self.pan )
self.connect(actionZoomFullExtent, SIGNAL( "triggered()" ), self.zoomFullExtent )
self.actionGroup = QActionGroup( self )
self.actionGroup.addAction( actionPan )
self.actionGroup.addAction( actionZoomIn )
self.actionGroup.addAction( actionZoomOut )
# Create the toolbar
self.toolbar = self.addToolBar( "Map tools" )
self.toolbar.addAction( actionPan )
self.toolbar.addAction( actionZoomIn )
self.toolbar.addAction( actionZoomOut )
self.toolbar.addAction( actionZoomFullExtent )
# Create the map tools
self.toolPan = QgsMapToolPan( self.canvas )
self.toolPan.setAction( actionPan )
self.toolZoomIn = QgsMapToolZoom( self.canvas, False ) # false = in
self.toolZoomIn.setAction( actionZoomIn )
self.toolZoomOut = QgsMapToolZoom( self.canvas, True ) # true = out
self.toolZoomOut.setAction( actionZoomOut )
# Create the statusbar
self.statusbar = QStatusBar( self )
self.statusbar.setObjectName( "statusbar" )
self.setStatusBar( self.statusbar )
self.lblXY = QLabel()
self.lblXY.setFrameStyle( QFrame.Box )
self.lblXY.setMinimumWidth( 170 )
self.lblXY.setAlignment( Qt.AlignCenter )
self.statusbar.setSizeGripEnabled( False )
self.statusbar.addPermanentWidget( self.lblXY, 0 )
self.lblScale = QLabel()
self.lblScale.setFrameStyle( QFrame.StyledPanel )
self.lblScale.setMinimumWidth( 140 )
self.statusbar.addPermanentWidget( self.lblScale, 0 )
self.createLegendWidget() # Create the legend widget
self.connect( app, SIGNAL( "loadPgLayer" ), self.loadLayer )
self.connect( self.canvas, SIGNAL( "scaleChanged(double)" ),
self.changeScale )
self.connect( self.canvas, SIGNAL( "xyCoordinates(const QgsPoint&)" ),
self.updateXY )
self.pan() # Default
self.plugins = Plugins( self, self.canvas, dictOpts['-h'], dictOpts['-p'], dictOpts['-d'], dictOpts['-U'], dictOpts['-W'] )
self.createAboutWidget()
self.layerSRID = '-1'
self.loadLayer( dictOpts )
def zoomIn( self ):
self.canvas.setMapTool( self.toolZoomIn )
def zoomOut( self ):
self.canvas.setMapTool( self.toolZoomOut )
def pan( self ):
self.canvas.setMapTool( self.toolPan )
def zoomFullExtent( self ):
self.canvas.zoomToFullExtent()
def about( self ):
pass
def createLegendWidget( self ):
""" Create the map legend widget and associate it to the canvas """
self.legend = Legend( self )
self.legend.setCanvas( self.canvas )
self.legend.setObjectName( "theMapLegend" )
#.........这里部分代码省略.........
示例7: GeometryDiffViewerDialog
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setCanvasColor [as 别名]
class GeometryDiffViewerDialog(QDialog):
def __init__(self, geoms, crs, parent = None):
super(GeometryDiffViewerDialog, self).__init__(parent)
self.geoms = geoms
self.crs = crs
self.initGui()
def initGui(self):
layout = QVBoxLayout()
self.tab = QTabWidget()
self.table = QTableView()
self.setLayout(layout)
self.canvas = QgsMapCanvas()
self.canvas.setCanvasColor(Qt.white)
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.mapSettings().setDestinationCrs(self.crs)
action = settings.value("/qgis/wheel_action", 0, type = float)
zoomFactor = settings.value("/qgis/zoom_factor", 2, type = float)
self.canvas.setWheelAction(QgsMapCanvas.WheelAction(action), zoomFactor)
self.panTool = QgsMapToolPan(self.canvas)
self.canvas.setMapTool(self.panTool)
execute(self.createLayers)
model = GeomDiffTableModel(self.data)
self.table.setModel(model)
self.table.resizeColumnsToContents()
self.table.resizeRowsToContents()
self.tab.addTab(self.canvas, "Map view")
self.tab.addTab(self.table, "Table view")
layout.addWidget(self.tab)
self.resize(600, 500)
self.setWindowTitle("Geometry comparison")
def createLayers(self):
textGeometries = []
for geom in self.geoms:
text = geom.exportToWkt()
valid = " -1234567890.,"
text = "".join([c for c in text if c in valid])
textGeometries.append(text.split(","))
lines = difflib.Differ().compare(textGeometries[0], textGeometries[1])
self.data = []
for line in lines:
if line.startswith("+"):
self.data.append([None, line[2:]])
if line.startswith("-"):
self.data.append([line[2:], None])
if line.startswith(" "):
self.data.append([line[2:], line[2:]])
types = [("LineString", lineBeforeStyle, lineAfterStyle),
("Polygon", polygonBeforeStyle, polygonAfterStyle)]
layers = []
extent = self.geoms[0].boundingBox()
for i, geom in enumerate(self.geoms):
geomtype = types[int(geom.type() - 1)][0]
style = types[int(geom.type() - 1)][i + 1]
layer = loadLayerNoCrsDialog(geomtype + "?crs=" + self.crs.authid(), "layer", "memory")
pr = layer.dataProvider()
feat = QgsFeature()
feat.setGeometry(geom)
pr.addFeatures([feat])
layer.loadNamedStyle(style)
layer.updateExtents()
layers.append(layer)
QgsMapLayerRegistry.instance().addMapLayer(layer, False)
extent.combineExtentWith(geom.boundingBox())
layer = loadLayerNoCrsDialog("Point?crs=%s&field=changetype:string" % self.crs.authid(), "points", "memory")
pr = layer.dataProvider()
feats = []
for coords in self.data:
coord = coords[0] or coords[1]
feat = QgsFeature()
x, y = coord.strip().split(" ")
x, y = (float(x), float(y))
pt = QgsGeometry.fromPoint(QgsPoint(x, y))
feat.setGeometry(pt)
if coords[0] is None:
changetype = "A"
elif coords[1] is None:
changetype = "R"
else:
changetype = "U"
feat.setAttributes([changetype])
feats.append(feat)
pr.addFeatures(feats)
layer.loadNamedStyle(pointsStyle)
QgsMapLayerRegistry.instance().addMapLayer(layer, False)
layers.append(layer)
self.mapLayers = [QgsMapCanvasLayer(lay) for lay in layers]
self.canvas.setLayerSet(self.mapLayers)
#.........这里部分代码省略.........
示例8: ViewerWnd
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setCanvasColor [as 别名]
class ViewerWnd(QMainWindow):
def __init__(self, app, dictOpts):
QMainWindow.__init__(self)
self.canvas = QgsMapCanvas()
self.canvas.setCanvasColor(Qt.white)
self.canvas.useImageToRender(True)
self.canvas.enableAntiAliasing(True)
self.setCentralWidget(self.canvas)
actionZoomIn = QAction(QIcon(imgs_dir + "mActionZoomIn.png"), QString("Zoom in"), self)
actionZoomOut = QAction(QIcon(imgs_dir + "mActionZoomOut.png"), QString("Zoom out"), self)
actionPan = QAction(QIcon(imgs_dir + "mActionPan.png"), QString("Pan"), self)
actionZoomIn.setCheckable(True)
actionZoomOut.setCheckable(True)
actionPan.setCheckable(True)
self.connect(actionZoomIn, SIGNAL("triggered()"), self.zoomIn)
self.connect(actionZoomOut, SIGNAL("triggered()"), self.zoomOut)
self.connect(actionPan, SIGNAL("triggered()"), self.pan)
# Create the toolbar
self.toolbar = self.addToolBar("Map tools")
self.toolbar.addAction(actionZoomIn)
self.toolbar.addAction(actionZoomOut)
self.toolbar.addAction(actionPan)
# Create the map tools
self.toolPan = QgsMapToolPan(self.canvas)
self.toolPan.setAction(actionPan)
self.toolZoomIn = QgsMapToolZoom(self.canvas, False) # false = in
self.toolZoomIn.setAction(actionZoomIn)
self.toolZoomOut = QgsMapToolZoom(self.canvas, True) # true = out
self.toolZoomOut.setAction(actionZoomOut)
# Create the statusbar
self.statusbar = QStatusBar(self)
self.statusbar.setObjectName("statusbar")
self.setStatusBar(self.statusbar)
self.lblXY = QLabel()
self.lblXY.setFrameStyle(QFrame.Box)
self.lblXY.setMinimumWidth(170)
self.lblXY.setAlignment(Qt.AlignCenter)
self.statusbar.setSizeGripEnabled(False)
self.statusbar.addPermanentWidget(self.lblXY, 0)
self.lblScale = QLabel()
self.lblScale.setFrameStyle(QFrame.StyledPanel)
self.lblScale.setMinimumWidth(140)
self.statusbar.addPermanentWidget(self.lblScale, 0)
self.createLegendWidget() # Create the legend widget
self.connect(app, SIGNAL("loadPgLayer"), self.loadLayer)
self.connect(self.canvas, SIGNAL("scaleChanged(double)"), self.changeScale)
self.connect(self.canvas, SIGNAL("xyCoordinates(const QgsPoint&)"), self.updateXY)
self.pan()
self.layerSRID = ""
self.loadLayer(dictOpts)
def zoomIn(self):
self.canvas.setMapTool(self.toolZoomIn)
def zoomOut(self):
self.canvas.setMapTool(self.toolZoomOut)
def pan(self):
self.canvas.setMapTool(self.toolPan)
def createLegendWidget(self):
""" Create the map legend widget and associate to the canvas """
self.legend = Legend(self)
self.legend.setCanvas(self.canvas)
self.legend.setObjectName("theMapLegend")
self.LegendDock = QDockWidget("Layers", self)
self.LegendDock.setObjectName("legend")
# self.LegendDock.setAllowedAreas( Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea )
self.LegendDock.setWidget(self.legend)
self.LegendDock.setContentsMargins(0, 0, 0, 0)
self.addDockWidget(Qt.BottomDockWidgetArea, self.LegendDock)
def loadLayer(self, dictOpts):
print "I: Loading the layer..."
self.layerSRID = dictOpts["srid"] # To access the SRID when querying layer properties
if not self.isActiveWindow():
self.activateWindow()
self.raise_()
if dictOpts["type"] == "vector":
# QGIS connection
uri = QgsDataSourceURI()
uri.setConnection(dictOpts["-h"], dictOpts["-p"], dictOpts["-d"], dictOpts["-U"], dictOpts["-W"])
uri.setDataSource(dictOpts["-s"], dictOpts["-t"], dictOpts["-g"])
layer = QgsVectorLayer(uri.uri(), dictOpts["-s"] + "." + dictOpts["-t"], "postgres")
#.........这里部分代码省略.........
示例9: VersionViewerDialog
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setCanvasColor [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)
示例10: WidgetResult
# 需要导入模块: from qgis.gui import QgsMapCanvas [as 别名]
# 或者: from qgis.gui.QgsMapCanvas import setCanvasColor [as 别名]
class WidgetResult(Ui_widgetResult, QWidget):
"""
Widget (Panel) for result review
"""
''' buffer around clicked point for point in polygon query '''
SEARCH_BUFFER = 20.0
''' supported export formats '''
EXPORT_FORMATS = {
get_ui_string("app.extension.shapefile"):ExportTypes.Shapefile,
#get_ui_string("app.extension.kml"):ExportTypes.KML,
#get_ui_string("app.extension.nrml"):ExportTypes.NRML,
get_ui_string("app.extension.csv"):ExportTypes.CSV,
};
''' enumeration of Layer to be previewed '''
EXPOSURE, SURVEY, POP_GRID, FOOTPRINT, ZONES = range(5);
''' name for Layer to be previewed '''
LAYER_NAMES = [
get_ui_string("widget.result.layer.exposure"),
get_ui_string("widget.result.layer.survey"),
get_ui_string("widget.result.layer.popgrid"),
get_ui_string("widget.result.layer.footprint"),
get_ui_string("widget.result.layer.zones"),
];
LAYER_STYLES = [
'<!DOCTYPE renderer><renderer-v2 symbollevels="0" type="singleSymbol"><symbols><symbol outputUnit="MM" alpha="1" type="fill" name="0"><layer pass="0" class="SimpleLine" locked="0"><prop k="capstyle" v="square"/><prop k="color" v="0,0,0,255"/><prop k="customdash" v="5;2"/><prop k="joinstyle" v="bevel"/><prop k="offset" v="0"/><prop k="penstyle" v="solid"/><prop k="use_custom_dash" v="0"/><prop k="width" v="0.26"/></layer></symbol></symbols><rotation field=""/><sizescale field=""/></renderer-v2>',
'<!DOCTYPE renderer><renderer-v2 symbollevels="0" type="singleSymbol"><symbols><symbol outputUnit="MM" alpha="1" type="marker" name="0"><layer pass="0" class="SimpleMarker" locked="0"><prop k="angle" v="0"/><prop k="color" v="0,0,255,255"/><prop k="color_border" v="0,0,255,255"/><prop k="name" v="circle"/><prop k="offset" v="0,0"/><prop k="size" v="2"/></layer></symbol></symbols><rotation field=""/><sizescale field=""/></renderer-v2>',
'<!DOCTYPE renderer><renderer-v2 symbollevels="0" type="singleSymbol"><symbols><symbol outputUnit="MM" alpha="1" type="marker" name="0"><layer pass="0" class="SimpleMarker" locked="0"><prop k="angle" v="0"/><prop k="color" v="0,255,0,255"/><prop k="color_border" v="0,255,0,255"/><prop k="name" v="rectangle"/><prop k="offset" v="0,0"/><prop k="size" v="4"/></layer></symbol></symbols><rotation field=""/><sizescale field=""/></renderer-v2>',
'<!DOCTYPE renderer><renderer-v2 symbollevels="0" type="singleSymbol"><symbols><symbol outputUnit="MM" alpha="1" type="fill" name="0"><layer pass="0" class="SimpleFill" locked="0"><prop k="color" v="170,250,170,255"/><prop k="color_border" v="0,0,0,255"/><prop k="offset" v="0,0"/><prop k="style" v="solid"/><prop k="style_border" v="solid"/><prop k="width_border" v="0.26"/></layer></symbol></symbols><rotation field=""/><sizescale field=""/></renderer-v2>',
'<!DOCTYPE renderer><renderer-v2 symbollevels="0" type="singleSymbol"><symbols><symbol outputUnit="MM" alpha="1" type="fill" name="0"><layer pass="0" class="SimpleFill" locked="0"><prop k="color" v="211,211,158,200"/><prop k="color_border" v="0,0,0,255"/><prop k="offset" v="0,0"/><prop k="style" v="solid"/><prop k="style_border" v="solid"/><prop k="width_border" v="0.26"/></layer></symbol></symbols><rotation field=""/><sizescale field=""/></renderer-v2>',
]
# constructor / destructor
###############################
def __init__(self, app):
"""
constructor
- initialize UI elements
- connect UI elements to callback
"""
super(WidgetResult, self).__init__()
self.ui = Ui_widgetResult()
self.ui.setupUi(self)
# create canvas
self.canvas = QgsMapCanvas(self.ui.widget_map)
self.canvas.setGeometry(
0, # x
self.ui.widget_map_menu_l.x()+self.ui.widget_map_menu_l.height(), # y
self.ui.widget_map.width() - 2*UI_PADDING, # width
self.ui.widget_map.width() - 2*UI_PADDING # height
)
self.canvas.setCanvasColor(Qt.white)
self.canvas.enableAntiAliasing(True)
self.canvas.mapRenderer().setProjectionsEnabled(True)
self.canvas.mapRenderer().setDestinationCrs(QgsCoordinateReferenceSystem(4326, QgsCoordinateReferenceSystem.PostgisCrsId))
self.canvas.zoomNextStatusChanged.connect(self.checkRendering)
self.canvas.xyCoordinates.connect(self.currentLocation)
self.registry = QgsMapLayerRegistry.instance()
self.map_layers = [None] * len(self.LAYER_NAMES)
self.map_layer_renderer = [None] * len(self.LAYER_NAMES)
for idx, str_style in enumerate(self.LAYER_STYLES):
rdoc = QDomDocument("renderer")
rdoc.setContent(str_style)
self.map_layer_renderer[idx] = QgsFeatureRendererV2.load(rdoc.firstChild().toElement())
# populate export list
self.ui.cb_export_format.clear()
for export_format in self.EXPORT_FORMATS.keys():
self.ui.cb_export_format.addItem(export_format)
# style object required for QgsRendererV2PropertiesDialog
self.style = QgsStyleV2()
# create the map tools
self.toolPan = QgsMapToolPan(self.canvas)
self.toolZoomIn = QgsMapToolZoom(self.canvas, False) # false = in
self.toolZoomOut = QgsMapToolZoom(self.canvas, True) # true = out
self.toolInfo = QgsMapToolEmitPoint(self.canvas)
self.toolInfo.canvasClicked.connect(self.showInfo)
self.canvas.setMapTool(self.toolPan)
# additional
self.dlgResultDetail = DialogResult()
self.dlgResultDetail.setModal(True)
# set link to application main controller
self.app = app
# reset project
self._project = None
# default export setting
self.export_format = ExportTypes.Shapefile
# connect slots (ui event)
self.ui.btn_zoom_full.clicked.connect(self.mapZoomFull)
#.........这里部分代码省略.........