コード例 #1
0
 def AreaResult(self, resultArea, resultRubberBand):
     self.area = resultArea
     self.rubberBand = resultRubberBand
     QgisHelper.ClearRubberBandInCanvas(define._canvas)
     self.DrawCanvas()
     self.method_2()
     self.method_3()
コード例 #2
0
 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)
コード例 #3
0
 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 )
コード例 #4
0
    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)
コード例 #5
0
    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
コード例 #6
0
    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)
コード例 #7
0
    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)
コード例 #8
0
 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())
コード例 #9
0
    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
コード例 #10
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()