예제 #1
0
파일: edit_action.py 프로젝트: spanc29/qmap
    def findFeatures(self, point):
        #If we don't have a any layers to forms mappings yet just exit.
        if not self.layerstoformmapping:
            return

        layer = self.layerstoformmapping.iterkeys().next()

        searchRadius = QgsTolerance.toleranceInMapUnits( 5, layer, \
                                                         self.canvas.mapRenderer(), QgsTolerance.Pixels)

        rect = QgsRectangle()                                                 
        rect.setXMinimum( point.x() - searchRadius );
        rect.setXMaximum( point.x() + searchRadius );
        rect.setYMinimum( point.y() - searchRadius );
        rect.setYMaximum( point.y() + searchRadius );

        log("Finding Featues at %s with radius of %s" % (point, searchRadius))
        
        featuresToForms = {}
        for layer, form in self.layerstoformmapping.iteritems():
            layer.select( layer.pendingAllAttributesList(), rect, True, True)
            for feature in layer:
                featuresToForms[feature] = (form, layer)

        if len(featuresToForms) == 1:
            form, layer = featuresToForms.itervalues().next()
            feature = featuresToForms.iterkeys().next()
            self.openForm(form, feature, layer)
        elif len(featuresToForms) > 0:
            listUi = ListFeaturesForm()
            listUi.loadFeatureList(featuresToForms)
            listUi.openFeatureForm.connect(self.openForm)
            listUi.exec_()
예제 #2
0
    def highlightFeatures(self, point):
        if not qmap.QMap.layerformmap:
            return

        layer = qmap.QMap.layerformmap.iterkeys().next()

        searchRadius = QgsTolerance.toleranceInMapUnits(5, layer, self.canvas.mapRenderer(), QgsTolerance.Pixels)
        rect = QgsRectangle()
        rect.setXMinimum(point.x() - searchRadius)
        rect.setXMaximum(point.x() + searchRadius)
        rect.setYMinimum(point.y() - searchRadius)
        rect.setYMaximum(point.y() + searchRadius)

        self.band.reset()
        for layer in qmap.QMap.layerformmap.iterkeys():
            layer.select([], rect, True, True)
            for feature in layer:
                log("Looping feature")
                if not feature.isValid():
                    continue
                log("Adding to rubber band")
                self.band.addGeometry(feature.geometry(), None)