コード例 #1
0
 def __init__(self, iface, layer):
     QgepMapToolAddFeature.__init__(self, iface, layer)
     self.nodeLayer = QgepLayerManager.layer('vw_wastewater_node')
     assert self.nodeLayer
     self.reachLayer = QgepLayerManager.layer('vw_qgep_reach')
     assert self.reachLayer
     self.setMode(QgsMapToolAdvancedDigitizing.CaptureLine)
コード例 #2
0
 def __init__(self, iface, layer):
     QgepMapToolAddFeature.__init__(self, iface, layer)
     self.nodeLayer = QgepLayerManager.layer('vw_wastewater_node')
     assert self.nodeLayer
     self.reachLayer = QgepLayerManager.layer('vw_qgep_reach')
     assert self.reachLayer
     self.setMode(QgsMapToolAdvancedDigitizing.CaptureLine)
コード例 #3
0
ファイル: qgepmaptools.py プロジェクト: QGEP/qgepplugin
    def activate(self):
        """
        Called by QGIS whenever the tool is activated.
        """
        source_snap_layers = list()
        target_snap_layers = list()

        # A dict of layers and the fields that are foreign keys
        # pointing to wastewater networkelements
        self.network_element_sources = {
            QgepLayerManager.layer('vw_qgep_reach'): [
                ('rp_to_fk_wastewater_networkelement',
                 QCoreApplication.translate('QgepMapToolConnectNetworkElements', 'Reach Point To')),
                ('rp_from_fk_wastewater_networkelement',
                 QCoreApplication.translate('QgepMapToolConnectNetworkElements', 'Reach Point From'))
            ],
            QgepLayerManager.layer('od_catchment_area'): [
                ('fk_wastewater_networkelement_rw_current', QCoreApplication.translate(
                    'QgepMapToolConnectNetworkElements', 'Rainwater current')),
                ('fk_wastewater_networkelement_rw_planned', QCoreApplication.translate(
                    'QgepMapToolConnectNetworkElements', 'Rainwater planned')),
                ('fk_wastewater_networkelement_ww_current', QCoreApplication.translate(
                    'QgepMapToolConnectNetworkElements', 'Wastewater current')),
                ('fk_wastewater_networkelement_ww_planned', QCoreApplication.translate(
                    'QgepMapToolConnectNetworkElements', 'Wastewater planned'))
            ]
        }

        # A list of layers that can be used as wastewater networkelement
        # targets
        self.network_element_targets = [
            QgepLayerManager.layer('vw_wastewater_node'),
            QgepLayerManager.layer('vw_qgep_reach')
        ]

        for layer in self.network_element_sources.keys():
            if layer:
                snap_layer = QgsSnappingUtils.LayerConfig(
                    layer, QgsPointLocator.All, 16, QgsTolerance.Pixels)
                source_snap_layers.append(snap_layer)

        for layer in self.network_element_targets:
            if layer:
                snap_layer = QgsSnappingUtils.LayerConfig(
                    layer, QgsPointLocator.All, 16, QgsTolerance.Pixels)
                target_snap_layers.append(snap_layer)

        self.source_snapper.setLayers(source_snap_layers)
        self.source_snapper.setSnapToMapMode(QgsSnappingUtils.SnapAdvanced)

        self.target_snapper.setLayers(target_snap_layers)
        self.target_snapper.setSnapToMapMode(QgsSnappingUtils.SnapAdvanced)

        self.reset()

        self.action.setChecked(True)

        self.iface.mapCanvas().setCursor(QCursor(Qt.CrossCursor))
コード例 #4
0
ファイル: qgepwizard.py プロジェクト: wbyne/QGEP
 def stateChanged(self):
     if self.stateButton.text() == 'Start Data Entry':
         self.layerComboBox.setEnabled(True)
         self.layerChanged(0)
         self.stateButton.setText( 'Stop Data Entry' )
     else:
         for lyr in [QgepLayerManager.layer('vw_wizard_cover_manhole'), QgepLayerManager.layer('vw_wizard_reach_channel')]:
             lyr.commitChanges()
             self.layerComboBox.setEnabled(False)
             self.stateButton.setText( 'Start Data Entry' )
コード例 #5
0
ファイル: qgepwizard.py プロジェクト: QGEP/qgepplugin
 def stateChanged(self):
     if self.stateButton.text() == 'Start Data Entry':
         self.layerComboBox.setEnabled(True)
         self.layerChanged(0)
         self.stateButton.setText('Stop Data Entry')
     else:
         for lyr in [QgepLayerManager.layer('vw_qgep_reach'),
                     QgepLayerManager.layer('vw_qgep_wastewater_structure')]:
             lyr.commitChanges()
             self.layerComboBox.setEnabled(False)
             self.stateButton.setText('Start Data Entry')
コード例 #6
0
 def stateChanged(self):
     if self.stateButton.property('state') != 'active':
         self.layerComboBox.setEnabled(True)
         self.layerChanged(0)
         self.stateButton.setText(self.tr('Stop Data Entry'))
         self.stateButton.setProperty('state', 'active')
     else:
         for lyr in [QgepLayerManager.layer('vw_qgep_reach'),
                     QgepLayerManager.layer('vw_qgep_wastewater_structure')]:
             lyr.commitChanges()
         self.layerComboBox.setEnabled(False)
         self.stateButton.setText(self.tr('Start Data Entry'))
         self.stateButton.setProperty('state', 'inactive')
コード例 #7
0
    def layerChanged(self, index):
        for lyr in [QgepLayerManager.layer('vw_qgep_wastewater_structure'), QgepLayerManager.layer('vw_qgep_reach')]:
            lyr.commitChanges()

        if self.layerComboBox.itemData(self.layerComboBox.currentIndex()) == 'wastewater_structure':
            lyr = QgepLayerManager.layer('vw_qgep_wastewater_structure')
            lyr.startEditing()
            self.iface.setActiveLayer(lyr)
            self.iface.actionAddFeature().trigger()

        elif self.layerComboBox.itemData(self.layerComboBox.currentIndex()) == 'reach':
            lyr = QgepLayerManager.layer('vw_qgep_reach')
            lyr.startEditing()
            self.iface.mapCanvas().setMapTool(self.mapToolAddReach)
コード例 #8
0
ファイル: qgepwizard.py プロジェクト: QGEP/qgepplugin
    def layerChanged(self, index):
        for lyr in [QgepLayerManager.layer('vw_qgep_wastewater_structure'), QgepLayerManager.layer('vw_qgep_reach')]:
            lyr.commitChanges()

        if self.layerComboBox.currentText() == 'Wastewater Structure':
            lyr = QgepLayerManager.layer('vw_qgep_wastewater_structure')
            lyr.startEditing()
            self.iface.setActiveLayer(lyr)
            self.iface.actionAddFeature().trigger()

        elif self.layerComboBox.currentText() == 'Reach':
            lyr = QgepLayerManager.layer('vw_qgep_reach')
            lyr.startEditing()
            self.iface.mapCanvas().setMapTool(self.mapToolAddReach)
コード例 #9
0
ファイル: qgepwizard.py プロジェクト: wbyne/QGEP
    def layerChanged(self,index):
        for lyr in [QgepLayerManager.layer('vw_wizard_cover_manhole'), QgepLayerManager.layer('vw_wizard_reach_channel')]:
            lyr.commitChanges()

        if self.layerComboBox.currentText() == 'Manhole':
            self.logger.debug( 'manhole' )
            lyr = QgepLayerManager.layer('vw_wizard_cover_manhole')
            lyr.startEditing()
            self.iface.setActiveLayer(lyr)
            self.iface.actionAddFeature().trigger()

        elif self.layerComboBox.currentText() == 'Reach':
            lyr = QgepLayerManager.layer('vw_wizard_reach_channel')
            lyr.startEditing()
            self.iface.mapCanvas().setMapTool( self.mapToolAddReach )
コード例 #10
0
ファイル: qgepwizard.py プロジェクト: QGEP/qgepplugin
    def __init__(self, parent, iface):
        QDockWidget.__init__(self, parent)
        self.setupUi(self)
        self.layerComboBox.currentIndexChanged.connect(self.layerChanged)
        self.stateButton.clicked.connect(self.stateChanged)
        self.iface = iface

        self.mapToolAddReach = QgepMapToolAddReach(self.iface, QgepLayerManager.layer('vw_qgep_reach'))
コード例 #11
0
    def activate(self):
        """
        Called by QGIS whenever the tool is activated.
        """

        # A dict of layers
        #  and for each layer the fields to use as foreign key
        #  as well as the possible target layers
        # Reaches can be connected to reaches and nodes
        # Catchment areas only to nodes
        self.network_element_sources = {
            QgepLayerManager.layer('vw_qgep_reach'): {
                'fields': [
                    ('rp_to_fk_wastewater_networkelement',
                     QCoreApplication.translate('QgepMapToolConnectNetworkElements', 'Reach Point To')),
                    ('rp_from_fk_wastewater_networkelement',
                     QCoreApplication.translate('QgepMapToolConnectNetworkElements', 'Reach Point From'))
                ],
                'target_layers': [
                    QgepLayerManager.layer('vw_wastewater_node'),
                    QgepLayerManager.layer('vw_qgep_reach')
                ]},
            QgepLayerManager.layer('od_catchment_area'): {'fields': [
                ('fk_wastewater_networkelement_rw_current', QCoreApplication.translate(
                    'QgepMapToolConnectNetworkElements', 'Rainwater current')),
                ('fk_wastewater_networkelement_rw_planned', QCoreApplication.translate(
                    'QgepMapToolConnectNetworkElements', 'Rainwater planned')),
                ('fk_wastewater_networkelement_ww_current', QCoreApplication.translate(
                    'QgepMapToolConnectNetworkElements', 'Wastewater current')),
                ('fk_wastewater_networkelement_ww_planned', QCoreApplication.translate(
                    'QgepMapToolConnectNetworkElements', 'Wastewater planned'))
            ],
                'target_layers': [
                QgepLayerManager.layer('vw_wastewater_node')
            ]}
        }

        self.setSnapLayers(self.source_snapper,
                           self.network_element_sources.keys())

        self.reset()

        self.action.setChecked(True)

        self.iface.mapCanvas().setCursor(QCursor(Qt.CrossCursor))
コード例 #12
0
    def __init__(self, parent, iface):
        QDockWidget.__init__(self, parent)
        self.setupUi(self)
        self.layerComboBox.currentIndexChanged.connect(self.layerChanged)
        self.stateButton.clicked.connect(self.stateChanged)
        self.iface = iface
        self.layerComboBox.insertItem(self.layerComboBox.count(), self.tr('Wastewater Structure'),
                                      'wastewater_structure')
        self.layerComboBox.insertItem(self.layerComboBox.count(), self.tr('Reach'), 'reach')
        self.stateButton.setProperty('state', 'inactive')

        self.mapToolAddReach = QgepMapToolAddReach(self.iface, QgepLayerManager.layer('vw_qgep_reach'))
コード例 #13
0
ファイル: qgepmaptooladdfeature.py プロジェクト: wbyne/QGEP
 def __init__(self,iface,layer):
     QgepMapToolAddFeature.__init__(self,iface,layer)
     self.nodeLayer = QgepLayerManager.layer('vw_wastewater_node')
     assert self.nodeLayer
     self.reachLayer = QgepLayerManager.layer('vw_reach')
     assert self.reachLayer
コード例 #14
0
    def onSelectCurrentPathAction(self):
        reaches = list()
        wastewater_nodes = list()
        wastewater_structures = list()

        for item in self.edges:
            item_information = item[2]
            if item_information['objType'] == 'reach':
                reaches.append(item_information['baseFeature'])

        for item in self.nodes:
            if item['objType'] == 'wastewater_node':
                wastewater_nodes.append(item['objId'])

        qgep_wastewater_structures_layer = QgepLayerManager.layer(
            'vw_qgep_wastewater_structure')
        wastewater_nodes_layer = QgepLayerManager.layer('vw_wastewater_node')
        qgep_reach_layer = QgepLayerManager.layer('vw_qgep_reach')
        catchment_areas_layer = QgepLayerManager.layer('od_catchment_area')

        wastewater_node_list = ','.join(
            ("'" + id + "'" for id in wastewater_nodes))
        reach_list = ','.join(("'" + id + "'" for id in reaches))

        if catchment_areas_layer:
            request = QgsFeatureRequest()
            filters = list()
            if QgsProject.instance().readBoolEntry('Qgep',
                                                   'FollowWastewaterCurrent',
                                                   True)[0]:
                filters.append(
                    'fk_wastewater_networkelement_ww_current IN ({})'.format(
                        wastewater_node_list))
            if QgsProject.instance().readBoolEntry('Qgep',
                                                   'FollowWastewaterPlanned',
                                                   True)[0]:
                filters.append(
                    'fk_wastewater_networkelement_ww_planned IN ({})'.format(
                        wastewater_node_list))
            if QgsProject.instance().readBoolEntry('Qgep',
                                                   'FollowRainwaterCurrent',
                                                   True)[0]:
                filters.append(
                    'fk_wastewater_networkelement_rw_current IN ({})'.format(
                        wastewater_node_list))
            if QgsProject.instance().readBoolEntry('Qgep',
                                                   'FollowRainwaterPlanned',
                                                   True)[0]:
                filters.append(
                    'fk_wastewater_networkelement_rw_planned IN ({})'.format(
                        wastewater_node_list))

            if filters:
                request.setFilterExpression(' OR '.join(filters))
                features = catchment_areas_layer.getFeatures(request)
                catchment_areas_layer.setSelectedFeatures(
                    [f.id() for f in features])

        if qgep_reach_layer:
            request = QgsFeatureRequest()
            request.setFilterExpression('obj_id IN ({})'.format(reach_list))
            features = qgep_reach_layer.getFeatures(request)
            qgep_reach_layer.setSelectedFeatures([f.id() for f in features])

        if wastewater_nodes_layer:
            request = QgsFeatureRequest()
            request.setFilterExpression(
                'obj_id IN ({})'.format(wastewater_node_list))
            features = wastewater_nodes_layer.getFeatures(request)
            ids = list()
            for feature in features:
                ids.append(feature.id())
                wastewater_structures.append(
                    feature['fk_wastewater_structure'])
            wastewater_nodes_layer.setSelectedFeatures(ids)

        wastewater_structure_list = ','.join(
            ("'" + id + "'" for id in wastewater_structures))

        if qgep_wastewater_structures_layer:
            request = QgsFeatureRequest()
            request.setFilterExpression(
                'obj_id IN ({})'.format(wastewater_structure_list))
            features = qgep_wastewater_structures_layer.getFeatures(request)
            qgep_wastewater_structures_layer.setSelectedFeatures(
                [f.id() for f in features])