def startRubberBand(self, pointMap, layer): #Método para iniciar o rubberBand da aquisição #Parâmetro de entrada: pointMap (Primeiro ponto da feição em aquisição), layer (Camada ativa) self.setDrawingState(True) self.setGeometryType(layer.geometryType()) if self.isPolygon(): rubberBand = gui.QgsRubberBand(self.getCanvas(), core.QgsWkbTypes.PolygonGeometry) rubberBand.setColor(QtGui.QColor(255, 0, 0, 63)) rubberBand.setWidth(2) else: rubberBand = gui.QgsRubberBand(self.getCanvas(), core.QgsWkbTypes.LineGeometry) rubberBand.setColor(QtGui.QColor(255, 0, 0, 150)) rubberBand.setWidth(1) rubberBand.addPoint(pointMap) self.setRubberBand(rubberBand)
def startRubberBandToStopState(self, point): #Método para iniciar o rubberBand do pause da ferramenta #Parâmetro de entrada: point (Último ponto da feição em aquisição) rubberBandToStopState = self.getRubberBandToStopState() if rubberBandToStopState: rubberBandToStopState.reset() if self.isPolygon(): rubberBand = gui.QgsRubberBand(self.getCanvas(), core.QGis.Polygon) rubberBand.setColor(QtGui.QColor(255, 0, 0, 63)) rubberBand.setWidth(2) else: rubberBand = gui.QgsRubberBand(self.getCanvas(), core.QGis.Line) rubberBand.setColor(QtGui.QColor(255, 0, 0, 150)) rubberBand.setWidth(1) rubberBand.setLineStyle(QtCore.Qt.DotLine) rubberBand.addPoint(point) self.setRubberBandToStopState(rubberBand)
def resetRubberBand(self): if self.rubberBand: self.rubberBand.reset() self.rubberBand = gui.QgsRubberBand( iface.mapCanvas(), geometryType = core.QgsWkbTypes.PointGeometry ) self.rubberBand.setSvgIcon(self.getSettings()['svgIconPath'], QPoint(-12.5, -48)) iface.mapCanvas().refresh()
def highlight(): def removeRB(): rb.reset( True ) self.canvas.scene().removeItem( rb ) rb = QgsGui.QgsRubberBand( self.canvas, QgsCore.QGis.Polygon) rb.setBorderColor( QtGui.QColor( 255, 0, 0 ) ) rb.setWidth( 2 ) rb.setToGeometry( QgsCore.QgsGeometry.fromRect( extent ), None ) QtCore.QTimer.singleShot( 2000, removeRB )
def start(self): self.tool = gui.QgsMapToolEmitPoint(iface.mapCanvas()) self.tool.canvasClicked.connect(self.mouseClick) self.rubberBand = gui.QgsRubberBand(iface.mapCanvas(), core.QgsWkbTypes.PolygonGeometry) color = QtGui.QColor(78, 97, 114) color.setAlpha(190) self.rubberBand.setColor(color) self.rubberBand.setFillColor(QtGui.QColor(255, 0, 0, 40)) iface.mapCanvas().setMapTool(self.tool) iface.mapCanvas().xyCoordinates.connect(self.mouseMove)
def __init__(self, canvas, parent): self.canvas = canvas gui.QgsMapToolEmitPoint.__init__(self, self.canvas) #self.tmp_band = gui.QgsRubberBand(self.canvas, core.QGis.Polygon) self.tmp_band = gui.QgsRubberBand( self.canvas) #, qgis.core.QgsWkbTypes.Polygon) #self.tmp_band.setBorderColor(qcore.Qt.yellow) self.tmp_band.setStrokeColor(qcore.Qt.yellow) self.tmp_band.setFillColor(qcore.Qt.transparent) self.tmp_band.setWidth(3) self.reset() self.parent = parent
def createSnapCursor(self, point): #Método para criar rubberBand do snap rubberBand = self.getSnapRubberBand() if rubberBand: rubberBand.reset() else: rubberBand = gui.QgsRubberBand( self.getCanvas(), geometryType=core.QgsWkbTypes.PointGeometry) rubberBand.setColor(QtGui.QColor(255, 0, 0, 200)) rubberBand.setFillColor(QtGui.QColor(255, 0, 0, 40)) rubberBand.setWidth(5) rubberBand.setIcon(gui.QgsRubberBand.ICON_X) rubberBand.addPoint(point) self.setSnapRubberBand(rubberBand)
def canvasPressEvent(self, event): # Press event handler inherited from QgsMapTool used to store the given location in WGS84 long/lat self.pressed=True self.pressx = event.pos().x() self.pressy = event.pos().y() self.movex = event.pos().x() self.movey = event.pos().y() self.highlight=gui.QgsRubberBand(self.iface.mapCanvas(),core.QgsWkbTypes.LineGeometry ) self.highlight.setColor(QtCore.Qt.yellow) self.highlight.setWidth(5) self.PressedPoint = self.canvas.getCoordinateTransform().toMapCoordinates(self.pressx, self.pressy) self.pointWgs84 = self.transformToWGS84(self.PressedPoint) # start infobox self.infoBoxManager.restoreIni()
def highlight(self, geom, seconds=2): def removeRB(): rb.reset(True) self.canvas.scene().removeItem(rb) geomTransform = geom crsCanvas = self.canvas.mapSettings().destinationCrs() if not self.crs == crsCanvas: ct = QgsCore.QgsCoordinateTransform(self.crs, crsCanvas) geomTransform.transform(ct) rb = QgsGui.QgsRubberBand(self.canvas, QgsCore.QGis.Polygon) rb.setBorderColor(self.color) rb.setWidth(2) rb.setToGeometry(geomTransform, None) QtCore.QTimer.singleShot(seconds * 1000, removeRB)
def createRubberBand(): def canvasRect(): # Adaption from "https://github.com/sourcepole/qgis-instantprint-plugin/blob/master/InstantPrintTool.py" mtp = self.canvas.mapSettings().mapToPixel() rect = self.canvas.extent().toRectF() p1 = mtp.transform( QgsCore.QgsPoint(rect.left(), rect.top())) p2 = mtp.transform( QgsCore.QgsPoint(rect.right(), rect.bottom())) return QtCore.QRect(p1.x(), p1.y(), p2.x() - p1.x(), p2.y() - p1.y()) rb = QgsGui.QgsRubberBand(self.canvas, False) rb.setBorderColor(QtGui.QColor(0, 255, 255)) rb.setWidth(2) rb.setToCanvasRectangle(canvasRect()) return rb
def getRubberBand(self): rubberBand = gui.QgsRubberBand(iface.mapCanvas(), True) rubberBand.setFillColor(QColor(255, 0, 0, 40)) rubberBand.setSecondaryStrokeColor(QColor(255, 0, 0, 200)) rubberBand.setWidth(2) return rubberBand
def initGui(self): # Create actions that will start plugin configuration self.StreetviewAction = QtWidgets.QAction(QtGui.QIcon(os.path.join(os.path.dirname(__file__), 'res', 'icoStreetview.png')), \ "Click to open Google Street View", self.iface.mainWindow()) #self.StreetviewAction = QtWidgets.QAction(QtGui.QIcon(":/plugins/go2streetview/res/icoStreetview.png"), \ # "Click to open Google Street View", self.iface.mainWindow()) self.StreetviewAction.triggered.connect(self.StreetviewRun) # Add toolbar button and menu item self.iface.addToolBarIcon(self.StreetviewAction) self.iface.addPluginToWebMenu("&go2streetview", self.StreetviewAction) self.dirPath = os.path.dirname( os.path.abspath( __file__ ) ) self.actualPOV = {} self.view = go2streetviewDialog() self.dumView = dumWidget() self.dumView.enter.connect(self.clickOn) self.dumView.iconRif.setPixmap(QtGui.QPixmap(os.path.join(os.path.dirname(__file__), 'res', 'icoStreetview.png'))) #self.dumView.iconRif.setPixmap(QtGui.QPixmap(":/plugins/go2streetview/res/icoStreetview.png")) self.apdockwidget=QtWidgets.QDockWidget("go2streetview" , self.iface.mainWindow() ) self.apdockwidget.setObjectName("go2streetview") self.apdockwidget.setWidget(self.dumView) self.iface.addDockWidget( QtCore.Qt.LeftDockWidgetArea, self.apdockwidget) self.apdockwidget.update() self.viewHeight=self.apdockwidget.size().height() self.viewWidth=self.apdockwidget.size().width() self.snapshotOutput = snapShot(self) self.view.SV.settings().globalSettings().setAttribute(QtWebKit.QWebSettings.DeveloperExtrasEnabled, True); self.view.SV.settings().globalSettings().setAttribute(QtWebKit.QWebSettings.LocalContentCanAccessRemoteUrls, True); self.view.SV.page().networkAccessManager().finished.connect(self.noSVConnectionsPending) self.view.SV.page().statusBarMessage.connect(self.catchJSevents) self.view.BE.page().statusBarMessage.connect(self.catchJSevents) self.view.btnSwitchView.setIcon(QtGui.QIcon(os.path.join(self.dirPath,"res","icoGMaps.png"))) self.view.enter.connect(self.clickOn) self.view.closed.connect(self.closeDialog) self.setButtonBarSignals() self.infoBoxManager = infobox(self) self.infoBoxManager.defined.connect(self.infoLayerDefinedAction) self.apdockwidget.visibilityChanged.connect(self.apdockChangeVisibility) self.iface.projectRead.connect(self.projectReadAction) self.pressed=None self.CTRLPressed=None self.controlShape = gui.QgsRubberBand(self.iface.mapCanvas(),core.QgsWkbTypes.LineGeometry ) self.controlShape.setWidth( 1 ) self.position=gui.QgsRubberBand(self.iface.mapCanvas(),core.QgsWkbTypes.PointGeometry ) self.position.setWidth( 5 ) self.position.setIcon(gui.QgsRubberBand.ICON_CIRCLE) self.position.setIconSize(6) self.position.setColor(QtCore.Qt.red) self.aperture=gui.QgsRubberBand(self.iface.mapCanvas(),core.QgsWkbTypes.LineGeometry ) self.rotateTool = transformGeometry() self.canvas.rotationChanged.connect(self.mapRotationChanged) self.canvas.scaleChanged.connect(self.setPosition) self.dumLayer = core.QgsVectorLayer("Point?crs=EPSG:4326", "temporary_points", "memory") self.actualPOV = {"lat":0.0,"lon":0.0,"heading":0.0,"zoom":1} self.pointWgs84 = None self.mkDirs() self.licenceDlg = snapshotLicenseDialog() self.httpConnecting = None self.S = QtCore.QSettings() terms = self.S.value("go2sv/license", defaultValue = "undef") self.APIkey = self.S.value("go2sv/APIkey", defaultValue = "") self.licenceDlg.APIkey.setText(self.APIkey) if terms == self.version: self.licenseAgree = True self.licenceDlg.checkGoogle.setCheckState(QtCore.Qt.Checked) self.licenceDlg.checkGoogle.setEnabled(False) else: self.licenseAgree = None self.licenceDlg.OKbutton.clicked.connect(self.checkLicenseAction) self.licenceDlg.textBrowser.anchorClicked.connect(self.openExternalUrl) # Register plugin layer type #self.tileLayerType = TileLayerType(self) #QgsPluginLayerRegistry.instance().addPluginLayerType(self.tileLayerType) self.view.SV.page().setNetworkAccessManager(core.QgsNetworkAccessManager.instance()) self.view.BE.page().setNetworkAccessManager(core.QgsNetworkAccessManager.instance()) #setting a webinspector dialog self.webInspectorDialog = QtWidgets.QDialog() self.webInspector = QtWebKitWidgets.QWebInspector(self.webInspectorDialog) self.webInspector.setPage(self.view.BE.page()) self.webInspectorDialog.setLayout(QtWidgets.QVBoxLayout()) self.webInspectorDialog.setWindowTitle("Web Inspector") self.webInspectorDialog.resize(960, 480) self.webInspectorDialog.layout().addWidget(self.webInspector) self.webInspectorDialog.setModal(False) self.webInspectorDialog.hide() core.QgsExpression.registerFunction(get_streetview_url) core.QgsExpression.registerFunction(get_streetview_pov)