def snap(self, pos):
     """
     Snap to nearby points on the wastewater node layer which may be used as connection
     points for this reach.
     :param pos: The position to snap
     :return: The snapped position
     """
     snapper = QgsSnapper(self.iface.mapCanvas().mapSettings())
     snap_nodelayer = QgsSnapper.SnapLayer()
     snap_nodelayer.mLayer = self.nodeLayer
     snap_nodelayer.mTolerance = 10
     snap_nodelayer.mUnitType = QgsTolerance.Pixels
     snap_nodelayer.mSnapTo = QgsSnapper.SnapToVertex
     snapper.setSnapLayers([snap_nodelayer])
     (_, snappedPoints) = snapper.snapPoint(pos)
     if snappedPoints:
         self.currentSnappingResult = snappedPoints[0]
         return self.currentSnappingResult.snappedVertex
     else:
         snapper = QgsSnapper(self.iface.mapCanvas().mapSettings())
         snap_reachlayer = QgsSnapper.SnapLayer()
         snap_reachlayer.mLayer = self.reachLayer
         snap_reachlayer.mTolerance = 10
         snap_reachlayer.mUnitType = QgsTolerance.Pixels
         snap_reachlayer.mSnapTo = QgsSnapper.SnapToVertexAndSegment
         snapper.setSnapLayers([snap_reachlayer])
         (_, snappedPoints) = snapper.snapPoint(pos)
         if snappedPoints:
             self.currentSnappingResult = snappedPoints[0]
             return self.currentSnappingResult.snappedVertex
         else:
             self.currentSnappingResult = None
             return pos
Ejemplo n.º 2
0
 def getSnapper(self):
     """
     Getter for the snapper
     """
     self.snapper = QgsSnapper(self.iface.mapCanvas().mapRenderer())
     snap_layer = QgsSnapper.SnapLayer()
     snap_layer.mLayer = self.nodeLayer
     snap_layer.mTolerance = 10
     snap_layer.mUnitType = QgsTolerance.Pixels
     snap_layer.mSnapTo = QgsSnapper.SnapToVertex
     self.snapper.setSnapLayers([snap_layer])
     return self.snapper
Ejemplo n.º 3
0
    def set_up_snap_layer(vlayer, tolerance=None, snapping_type=QgsSnapper.SnapToVertex):

        snap_layer = QgsSnapper.SnapLayer()
        snap_layer.mLayer = vlayer

        if tolerance is None or tolerance < 0:
            (a, b, c, d, tolerance, f) = QgsProject.instance().snapSettingsForLayer(vlayer.id())
            snap_layer.mTolerance = tolerance
        else:
            snap_layer.mTolerance = tolerance

        snap_layer.mUnitType = QgsTolerance.MapUnits
        snap_layer.mSnapTo = snapping_type
        return snap_layer
Ejemplo n.º 4
0
 def activate(self):
     QgsMapTool.activate(self)
     self.rubber.setWidth(self.settings.value("rubberWidth"))
     self.rubber.setColor(self.settings.value("rubberColor"))
     lineLayer = MemoryLayers(self.iface).lineLayer()
     # unset this tool if the layer is removed
     lineLayer.layerDeleted.connect(self.unsetMapTool)
     self.layerId = lineLayer.id()
     # create snapper for this layer
     self.snapLayer = QgsSnapper.SnapLayer()
     self.snapLayer.mLayer = lineLayer
     self.snapLayer.mSnapTo = QgsSnapper.SnapToVertexAndSegment
     self.snapLayer.mTolerance = self.settings.value("selectTolerance")
     if self.settings.value("selectUnits") == "map":
         self.snapLayer.mUnitType = QgsTolerance.MapUnits
     else:
         self.snapLayer.mUnitType = QgsTolerance.Pixels