def AreaResult(self, resultArea, resultRubberBand): self.area = resultArea self.rubberBand = resultRubberBand QgisHelper.ClearRubberBandInCanvas(define._canvas) self.DrawCanvas() self.method_2() self.method_3()
def btnPickScreen_Click(self): self.area = None self.priviewClickFlag = False QgisHelper.ClearRubberBandInCanvas(define._canvas) # self.rubberBand = None if self.comboBox.currentIndex() == ProtectionAreaType.Complex: self.complexDlg = DlgComplexAreas(self) self.complexDlg.show() self.complexDlg.ui.buttonBoxOkCancel.accepted.connect(self.ComplexAreaResult) return elif self.comboBox.currentIndex() == ProtectionAreaType.PrimaryAndSecondary: obstacleAreaJig= ObstacleAreaJigSelectArea(define._canvas, self.comboBox.currentIndex()) define._canvas.setMapTool(obstacleAreaJig) self.connect(obstacleAreaJig, QtCore.SIGNAL("outputResult"), self.AreaResult) return if QtGui.QMessageBox.question(self, "Question", "Please click \"Yes\" if you want to create new area.\nPlease click \"No\" if you want to select any area.", QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) == QtGui.QMessageBox.Yes: # if self.comboBox.currentIndex() == ProtectionAreaType.Primary: obstacleAreaJig= ObstacleAreaJigCreateArea(define._canvas, self.comboBox.currentIndex()) define._canvas.setMapTool(obstacleAreaJig) self.connect(obstacleAreaJig, QtCore.SIGNAL("outputResult"), self.AreaResult) # elif self.comboBox.currentIndex() == ProtectionAreaType.Secondary: else: obstacleAreaJig= ObstacleAreaJigSelectArea(define._canvas, self.comboBox.currentIndex()) define._canvas.setMapTool(obstacleAreaJig) self.connect(obstacleAreaJig, QtCore.SIGNAL("outputResult"), self.AreaResult)
def manualEvent(self, index): QgisHelper.ClearRubberBandInCanvas(define._canvas) self.manualPolygon = None if index != 0: self.toolSelectByPolygon = RubberBandPolygon(define._canvas) define._canvas.setMapTool(self.toolSelectByPolygon) self.connect(self.toolSelectByPolygon, SIGNAL("outputResult"), self.outputResultMethod) else: self.mapToolPan = QgsMapToolPan(define._canvas) define._canvas.setMapTool(self.mapToolPan )
def AreaResult(self, area, rubberBand): if area != None: rubberBand.setFillColor( QColor(46, 64, 142, 100) ) rubberBand.setBorderColor( QColor(0, 10, 238) ) define._canvas.refresh() QgisHelper.ClearRubberBandInCanvas(define._canvas) self.complexObstacleArea.Add(area) self.stdItemModel.setItem(self.itemCount, QStandardItem(area.ToString())) # polygon = rubberBand.asGeometry() # lineList = polygon.asPolygon() # self.resultPolylineAreaListForDrawing.append(PolylineArea(lineList[0])) self.itemCount += 1 AcadHelper.setGeometryAndAttributesInLayer(self.constructionLayer, area.PreviewArea, True)
def btnRemove_Click(self): if self.selectedModelIndex != None: if QMessageBox.question(self, "Question", "Do you want to remove the selected item?", QMessageBox.Ok | QMessageBox.Cancel) == QMessageBox.Ok: n = self.selectedModelIndex.row() self.complexObstacleArea.pop(n) self.stdItemModel.removeRow(self.selectedModelIndex.row()) self.itemCount -= 1 self.constructionLayer = AcadHelper.createVectorLayer("TempComplexObstacleAreaLayer") for area in self.complexObstacleArea: AcadHelper.setGeometryAndAttributesInLayer(self.constructionLayer, area.PreviewArea, True) QgisHelper.appendToCanvas(define._canvas, [self.constructionLayer], "Temp") QgisHelper.ClearRubberBandInCanvas(define._canvas) pass
def canvasMoveEvent(self, e): self.rubberBand.reset(QGis.Point) # snapPoint = QgisHelper.snapPoint(e.pos(), self.mSnapper , define._canvas, True) snapPoint, snapPointID, layer = self.snapPoint(e.pos(), True) if snapPoint != None: self.rubberBand.addPoint(snapPoint) self.rubberBand.show() if (self.mRubberBand == None): return if (self.mRubberBand.numberOfVertices() > 0): if self.menuString != "Undo": self.mRubberBand.removeLastPoint(0) else: self.menuString = "" point2 = None if snapPoint != None: self.mRubberBand.addPoint(snapPoint) point2 = snapPoint else: self.mRubberBand.addPoint(self.toMapCoordinates(e.pos())) point2 = self.toMapCoordinates(e.pos()) if self.menuString == "Arc": point0 = self.resultPolylineArea[self.resultPolylineArea.Count - 2].Position point1 = self.resultPolylineArea[self.resultPolylineArea.Count - 1].Position # point2 = self.mRubberBand.getPoint(self.mRubberBand.numberOfVertices() - 1) bulge = MathHelper.smethod_60(point0, point1, point2) self.resultPolylineArea[self.resultPolylineArea.Count - 2].bulge = bulge self.mRubberBand = None QgisHelper.ClearRubberBandInCanvas(define._canvas) self.mRubberBand = QgsRubberBand(self.mCanvas, QGis.Polygon) self.mRubberBand.setFillColor(self.mFillColor) self.mRubberBand.setBorderColor(self.mBorderColour) for pt in self.resultPolylineArea.method_14(): self.mRubberBand.addPoint(pt) self.mRubberBand.addPoint(point2)
def method_9(self): if self.selectedModelIndex == None: self.ui.frame_Track.setVisible(False) return else: selectedArea = self.complexObstacleArea[self.selectedModelIndex.row()] QgisHelper.ClearRubberBandInCanvas(define._canvas) rBand = QgsRubberBand(define._canvas, QGis.Polygon) for point in selectedArea.PreviewArea.method_14_closed(): rBand.addPoint(point) rBand.setFillColor( QColor(46, 64, 142, 100) ) rBand.setBorderColor( QColor(0, 10, 238) ) rBand.show() if not isinstance(selectedArea, SecondaryObstacleArea) or not isinstance(selectedArea.area, SecondaryAreaStraight): self.ui.frame_Track.setVisible(False) return else: self.ui.txtTrack.setText(str(round(Unit.smethod_1(selectedArea.nominalTrack), 4))); self.ui.frame_Track.setVisible(True)
def canvasPressEvent(self, e): QgisHelper.ClearRubberBandInCanvas(define._canvas) self.mSelectRect.setRect( 0, 0, 0, 0 ) self.mRubberBand = QgsRubberBand( self.mCanvas, QGis.Polygon ) self.startPoint, self.pointID, self.layer= self.snapPoint(e.pos())
def canvasPressEvent( self, e ): define._messageLabel.setText("") self.menuString = "" pointBackground = e.pos() # self.Point = QgisHelper.snapPoint(e.pos(), self.mSnapper, define._canvas) self.Point, self.pointID, self.layer= self.snapPoint(e.pos()) self.selectedLayerFromSnapPoint = None if ( self.mRubberBand == None ): self.resultPolylineArea = PolylineArea() self.mRubberBand0.reset( QGis.Polygon ) # define._canvas.clearCache () self.mRubberBand = QgsRubberBand( self.mCanvas, QGis.Polygon ) self.mRubberBand0 = QgsRubberBand( self.mCanvas, QGis.Polygon ) self.mRubberBand.setFillColor( self.mFillColor ) self.mRubberBand.setBorderColor( self.mBorderColour ) self.mRubberBand0.setFillColor( QColor(255, 255, 255, 100) ) self.mRubberBand0.setBorderColor( QColor(0, 0, 0) ) if ( e.button() == Qt.LeftButton ): if self.Point == None: self.mRubberBand.addPoint( self.toMapCoordinates( e.pos() ) ) self.resultPolylineArea.Add(PolylineAreaPoint(self.toMapCoordinates( e.pos() ))) if self.isPrimaryPolylineStarted: self.primaryPolyline.Add(PolylineAreaPoint(self.toMapCoordinates( e.pos() ))) else: self.mRubberBand.addPoint( self.Point ) self.resultPolylineArea.Add(PolylineAreaPoint(self.Point)) if self.isPrimaryPolylineStarted: self.primaryPolyline.Add(PolylineAreaPoint(self.toMapCoordinates( e.pos() ))) else: menu = None if self.areaType == ProtectionAreaType.Secondary and len(self.resultPolylineArea) == 0: menu = self.createContextMenu(self.areaType, True) menu.exec_( define._canvas.mapToGlobal(e.pos() )) return if ( self.mRubberBand.numberOfVertices() > 2 ): self.polygonGeom = self.mRubberBand.asGeometry() else: return # QgsMapToolSelectUtils.setSelectFeatures( self.mCanvas, polygonGeom, e ) menu = self.createContextMenu(self.areaType) menu.exec_( define._canvas.mapToGlobal(e.pos() )) if self.menuString == "Cancel" or self.menuString == "Arc": return elif self.menuString == "Undo": if ( self.mRubberBand.numberOfVertices() > 0 ): self.mRubberBand = None QgisHelper.ClearRubberBandInCanvas(define._canvas) self.mRubberBand = QgsRubberBand( self.mCanvas, QGis.Polygon ) self.mRubberBand.setFillColor( self.mFillColor ) self.mRubberBand.setBorderColor( self.mBorderColour ) self.resultPolylineArea[self.resultPolylineArea.Count - 2].bulge = 0.0 self.resultPolylineArea.pop(self.resultPolylineArea.Count - 1) if self.isPrimaryPolylineStarted and len(self.primaryPolyline) > 0: self.primaryPolyline.pop(self.primaryPolyline.Count - 1) for pt in self.resultPolylineArea.method_14(): self.mRubberBand.addPoint(pt) return elif self.menuString == "Enter": # if self.areaType == ProtectionAreaType.Secondary: # if self.resultPolylineArea.Count != 4: # define._messageLabel.setText("The count of point of Secondary Area must be 4.") # return self.mRubberBand.reset( QGis.Polygon ) self.mRubberBand0.reset( QGis.Polygon ) # define._canvas.clearCache () self.mRubberBand0 = QgsRubberBand( self.mCanvas, QGis.Polygon ) self.mRubberBand0.setFillColor( QColor(255, 255, 255, 100) ) self.mRubberBand0.setBorderColor( QColor(0, 0, 0) ) for pt in self.resultPolylineArea.method_14(): self.mRubberBand0.addPoint(pt) # self.mRubberBand0.addGeometry(self.polygonGeom, None) n = self.mRubberBand0.numberOfVertices() self.mRubberBand0.show() self.mRubberBand = None area = None if self.areaType == ProtectionAreaType.Primary: area = PrimaryObstacleArea(self.resultPolylineArea) elif self.areaType == ProtectionAreaType.Secondary: if len(self.resultPolylineArea) == 4: area = SecondaryObstacleArea(self.resultPolylineArea[0].Position, self.resultPolylineArea[1].Position, self.resultPolylineArea[3].Position, self.resultPolylineArea[2].Position, MathHelper.getBearing(self.resultPolylineArea[0].Position, self.resultPolylineArea[1].Position)) else: if self.primaryPolyline.Count < 2: define._messageLabel.setText("The PrimaryLine in Secondary Area must exist.") return if self.isPrimaryPolylineStarted: define._messageLabel.setText("You must finish the input of PrimaryLine.") return area = SecondaryObstacleAreaWithManyPoints(self.resultPolylineArea, self.primaryPolyline) self.emit(SIGNAL("outputResult"), area, self.mRubberBand0) n = 0
def btnPreview_Click(self): self.priviewClickFlag = not self.priviewClickFlag if not self.priviewClickFlag: QgisHelper.ClearRubberBandInCanvas(define._canvas) return if self.comboBox.currentIndex() == ProtectionAreaType.Primary: rBand = QgsRubberBand(define._canvas, QGis.Polygon) for point in self.area.PreviewArea.method_14(): rBand.addPoint(point) rBand.setFillColor( QtGui.QColor(46, 64, 142, 100) ) rBand.setBorderColor( QtGui.QColor(0, 10, 238) ) rBand.show() elif self.comboBox.currentIndex() == ProtectionAreaType.Secondary: rBand = QgsRubberBand(define._canvas, QGis.Polygon) if isinstance(self.area, SecondaryObstacleAreaWithManyPoints): for point in self.area.PreviewArea.method_14(): rBand.addPoint(point) rBand.setFillColor( QtGui.QColor(46, 64, 142, 100) ) rBand.setBorderColor( QtGui.QColor(0, 10, 238) ) rBand.show() else: for point in self.area.area.PreviewArea.method_14(): rBand.addPoint(point) rBand.setFillColor( QtGui.QColor(46, 64, 142, 100) ) rBand.setBorderColor( QtGui.QColor(0, 10, 238) ) rBand.show() elif self.comboBox.currentIndex() == ProtectionAreaType.PrimaryAndSecondary: rBand = QgsRubberBand(define._canvas, QGis.Polygon) for point in self.area.primaryArea.PreviewArea.method_14(): rBand.addPoint(point) rBand.setFillColor( QtGui.QColor(46, 64, 142, 100) ) rBand.setBorderColor( QtGui.QColor(0, 10, 238) ) rBand.show() rBand = QgsRubberBand(define._canvas, QGis.Polygon) for point in self.area.secondaryArea1.PreviewArea.method_14(): rBand.addPoint(point) rBand.setFillColor( QtGui.QColor(46, 64, 142, 100) ) rBand.setBorderColor( QtGui.QColor(0, 10, 238) ) rBand.show() rBand = QgsRubberBand(define._canvas, QGis.Polygon) for point in self.area.secondaryArea2.PreviewArea.method_14(): rBand.addPoint(point) rBand.setFillColor( QtGui.QColor(46, 64, 142, 100) ) rBand.setBorderColor( QtGui.QColor(0, 10, 238) ) rBand.show() else: for obstacleArea in self.area: if isinstance(obstacleArea, PrimaryObstacleArea): rBand = QgsRubberBand(define._canvas, QGis.Polygon) for point in obstacleArea.PreviewArea.method_14(): rBand.addPoint(point) rBand.setFillColor( QtGui.QColor(46, 64, 142, 100) ) rBand.setBorderColor( QtGui.QColor(0, 10, 238) ) rBand.show() else: rBand = QgsRubberBand(define._canvas, QGis.Polygon) if isinstance(obstacleArea, SecondaryObstacleAreaWithManyPoints): for point in obstacleArea.PreviewArea.method_14(): rBand.addPoint(point) rBand.setFillColor( QtGui.QColor(46, 64, 142, 100) ) rBand.setBorderColor( QtGui.QColor(0, 10, 238) ) rBand.show() else: for point in obstacleArea.area.PreviewArea.method_14(): rBand.addPoint(point) rBand.setFillColor( QtGui.QColor(46, 64, 142, 100) ) rBand.setBorderColor( QtGui.QColor(0, 10, 238) ) rBand.show() define._canvas.refresh()