def __init__(self, iface: QgisInterface, layer):
        QgepMapToolAddFeature.__init__(self, iface, layer)
        self.snapping_marker = None
        self.node_layer = QgepLayerManager.layer('vw_wastewater_node')
        assert self.node_layer is not None
        self.reach_layer = QgepLayerManager.layer('vw_qgep_reach')
        assert self.reach_layer is not None
        self.setAdvancedDigitizingAllowed(True)
        self.setAutoSnapEnabled(True)

        layer_snapping_configs = [{
            'layer': self.node_layer,
            'mode': QgsSnappingConfig.Vertex
        }, {
            'layer': self.reach_layer,
            'mode': QgsSnappingConfig.VertexAndSegment
        }]
        self.snapping_configs = []
        self.snapping_utils = QgsMapCanvasSnappingUtils(self.iface.mapCanvas())

        for lsc in layer_snapping_configs:
            config = QgsSnappingConfig()
            config.setMode(QgsSnappingConfig.AdvancedConfiguration)
            config.setEnabled(True)
            settings = QgsSnappingConfig.IndividualLayerSettings(
                True, lsc['mode'], 10, QgsTolerance.Pixels)
            config.setIndividualLayerSettings(lsc['layer'], settings)
            self.snapping_configs.append(config)
Example #2
0
    def activate(self):
        cursor = QCursor()
        cursor.setShape(Qt.ArrowCursor)
        self.iface.mapCanvas().setCursor(cursor)

        myLayers = []
        # Editing
        layers = self.getLayers()
        for layer in layers:
            openedLayerPath = self.getLayerPath(layer)
            for name in self.ownMainLayers:
                layerPath = self.generatePath(self.ProjectDirectory, self.NetworkName + "_" + name + ".shp")
                if openedLayerPath == layerPath:
                    myLayers.append(layer)
                    if not layer.isEditable():
                        layer.startEditing()
        # Snapping
        self.snapper = QgsMapCanvasSnappingUtils(self.iface.mapCanvas())
        self.snapper.setMapSettings(self.iface.mapCanvas().mapSettings())
        config = QgsSnappingConfig(QgsProject.instance())
        config.setType(2)  # Vertex
        config.setMode(2)  # All layers
        config.setTolerance(1)
        config.setUnits(2)  # Pixels
        config.setEnabled(True)
        self.snapper.setConfig(config)
Example #3
0
 def configSnapper(self, type):
     # Snapping
     self.snapper = QgsMapCanvasSnappingUtils(self.iface.mapCanvas())
     self.snapper.setMapSettings(self.iface.mapCanvas().mapSettings())
     config = QgsSnappingConfig(QgsProject.instance())
     config.setType(type)  # 1: Vertex; 2:Segment
     config.setMode(2)  # All layers
     config.setTolerance(10)
     config.setUnits(1)  # Pixels
     config.setEnabled(True)
     self.snapper.setConfig(config)
Example #4
0
    def activate(self):
        QgsMapTool.activate(self)

        # Snapping
        self.snapper = QgsMapCanvasSnappingUtils(self.iface.mapCanvas())
        self.snapper.setMapSettings(self.iface.mapCanvas().mapSettings())
        config = QgsSnappingConfig(QgsProject.instance())
        config.setType(1)  # Vertex
        config.setMode(2)  # All layers
        config.setTolerance(2)
        config.setUnits(2)  # Pixels
        config.setEnabled(True)
        self.snapper.setConfig(config)
Example #5
0
 def init_snapper(self):
     """
     Initialize snapper
     """
     if not self.snapper:
         self.node_layer = self.network_analyzer.getNodeLayer()
         self.snapper = QgsMapCanvasSnappingUtils(self.canvas)
         config = QgsSnappingConfig()
         config.setMode(QgsSnappingConfig.AdvancedConfiguration)
         config.setEnabled(True)
         ils = QgsSnappingConfig.IndividualLayerSettings(True, QgsSnappingConfig.VertexAndSegment,
                                                         16, QgsTolerance.Pixels)
         config.setIndividualLayerSettings(self.node_layer, ils)
         self.snapper.setConfig(config)
from qgis.core import QgsSnappingUtils
from qgis.gui import QgsMapCanvasSnappingUtils
from qgis.utils import iface

canvas = iface.mapCanvas()

snapping_utils = QgsSnappingUtils()
print(snapping_utils.snapToMapMode())
# Change the mode through the GUI
print(snapping_utils.snapToMapMode())
# Retrieve information from the project
snapping_utils.readConfigFromProject()

# Alternate way to above code
snapping_utils = canvas.snappingUtils()  # TODO: cast QgsMapCanvasSnappingUtils
snapping_utils.defaultSettings()

# Find the mode in a readable way
print([
    i for i in ['SnapCurrentLayer', 'SnapAdvanced', 'SnapAllLayers']
    if snapping_utils.snapToMapMode() == getattr(QgsSnappingUtils, i)
][0])

print(snapping_utils.layers())
print(snapping_utils.defaultSettings()
      )  # where values are type, tolerance and unit

map_canvas_snapping_utils = QgsMapCanvasSnappingUtils(canvas)

canvas.setSnappingUtils(map_canvas_snapping_utils)