Beispiel #1
0
    def initialize():
        # Add the basic providers
        Processing.addProvider(QGISAlgorithmProvider())
        Processing.addProvider(ModelerOnlyAlgorithmProvider())
        Processing.addProvider(GdalOgrAlgorithmProvider())
        Processing.addProvider(LidarToolsAlgorithmProvider())
        Processing.addProvider(OTBAlgorithmProvider())
        Processing.addProvider(RAlgorithmProvider())
        Processing.addProvider(SagaAlgorithmProvider())
        Processing.addProvider(GrassAlgorithmProvider())
        Processing.addProvider(Grass7AlgorithmProvider())
        Processing.addProvider(ScriptAlgorithmProvider())
        Processing.addProvider(TauDEMAlgorithmProvider())
        Processing.addProvider(Processing.modeler)
        Processing.modeler.initializeSettings()

        # And initialize
        AlgorithmDecorator.loadClassification()
        ProcessingLog.startLogging()
        ProcessingConfig.initialize()
        ProcessingConfig.readSettings()
        RenderingStyles.loadStyles()
        Processing.loadFromProviders()
        
        # Inform registered listeners that all providers' algorithms have been loaded
        Processing.fireAlgsListHasChanged()
Beispiel #2
0
    def testUniqueValues(self):
        ProcessingConfig.initialize()

        test_data = points()
        test_layer = QgsVectorLayer(test_data, 'test', 'ogr')

        # field by index
        v = vector.uniqueValues(test_layer, 2)
        self.assertEqual(len(v), len(set(v)))
        self.assertEqual(set(v), set([2, 1, 0]))

        # field by name
        v = vector.uniqueValues(test_layer, 'id2')
        self.assertEqual(len(v), len(set(v)))
        self.assertEqual(set(v), set([2, 1, 0]))

        # test with selected features
        previous_value = ProcessingConfig.getSetting(ProcessingConfig.USE_SELECTED)
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.selectByIds([2, 4, 6])
        v = vector.uniqueValues(test_layer, 'id')
        self.assertEqual(len(v), len(set(v)))
        self.assertEqual(set(v), set([5, 7, 3]))

        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, previous_value)
Beispiel #3
0
    def testUniqueValues(self):
        ProcessingConfig.initialize()

        # disable check for geometry validity
        prevInvalidGeoms = ProcessingConfig.getSetting(ProcessingConfig.FILTER_INVALID_GEOMETRIES)
        ProcessingConfig.setSettingValue(ProcessingConfig.FILTER_INVALID_GEOMETRIES, 0)

        test_data = points()
        test_layer = QgsVectorLayer(test_data, 'test', 'ogr')

        # field by index
        v = vector.uniqueValues(test_layer, 2)
        self.assertEqual(len(v), len(set(v)))
        self.assertEqual(set(v), set([2, 1, 0]))

        # field by name
        v = vector.uniqueValues(test_layer, 'id2')
        self.assertEqual(len(v), len(set(v)))
        self.assertEqual(set(v), set([2, 1, 0]))

        # test with selected features
        previous_value = ProcessingConfig.getSetting(ProcessingConfig.USE_SELECTED)
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.selectByIds([2, 4, 6])
        v = vector.uniqueValues(test_layer, 'id')
        self.assertEqual(len(v), len(set(v)))
        self.assertEqual(set(v), set([5, 7, 3]))

        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, previous_value)
        ProcessingConfig.setSettingValue(ProcessingConfig.FILTER_INVALID_GEOMETRIES, prevInvalidGeoms)
Beispiel #4
0
    def testFeatures(self):
        ProcessingConfig.initialize()

        test_data = points()
        test_layer = QgsVectorLayer(test_data, 'test', 'ogr')

        # disable check for geometry validity
        prevInvalidGeoms = ProcessingConfig.getSetting(ProcessingConfig.FILTER_INVALID_GEOMETRIES)
        ProcessingConfig.setSettingValue(ProcessingConfig.FILTER_INVALID_GEOMETRIES, 0)

        # test with all features
        features = vector.features(test_layer)
        self.assertEqual(len(features), 9)
        self.assertEqual(set([f.id() for f in features]), set([0, 1, 2, 3, 4, 5, 6, 7, 8]))

        # test with selected features
        previous_value = ProcessingConfig.getSetting(ProcessingConfig.USE_SELECTED)
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.selectByIds([2, 4, 6])
        features = vector.features(test_layer)
        self.assertEqual(len(features), 3)
        self.assertEqual(set([f.id() for f in features]), set([2, 4, 6]))

        # selection, but not using selected features
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, False)
        test_layer.selectByIds([2, 4, 6])
        features = vector.features(test_layer)
        self.assertEqual(len(features), 9)
        self.assertEqual(set([f.id() for f in features]), set([0, 1, 2, 3, 4, 5, 6, 7, 8]))

        # using selected features, but no selection
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.removeSelection()
        features = vector.features(test_layer)
        self.assertEqual(len(features), 9)
        self.assertEqual(set([f.id() for f in features]), set([0, 1, 2, 3, 4, 5, 6, 7, 8]))

        # test that feature request is honored
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, False)
        features = vector.features(test_layer, QgsFeatureRequest().setFilterFids([1, 3, 5]))
        self.assertEqual(set([f.id() for f in features]), set([1, 3, 5]))

        # test that feature request is honored when using selections
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.selectByIds([2, 4, 6])
        features = vector.features(test_layer, QgsFeatureRequest().setFlags(QgsFeatureRequest.NoGeometry))
        self.assertTrue(all([not f.hasGeometry() for f in features]))
        features = vector.features(test_layer, QgsFeatureRequest().setFlags(QgsFeatureRequest.NoGeometry))
        self.assertEqual(set([f.id() for f in features]), set([2, 4, 6]))

        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, previous_value)

        # test exception is raised when filtering invalid geoms
        #ProcessingConfig.setSettingValue(ProcessingConfig.FILTER_INVALID_GEOMETRIES, 2)
        #test_layer_invalid_geoms = QgsVectorLayer(invalid_geometries(), 'test', 'ogr')
        #with self.assertRaises(GeoAlgorithmExecutionException):
        #    features = vector.features(test_layer_invalid_geoms)
        #    feats = [f for f in features]

        ProcessingConfig.setSettingValue(ProcessingConfig.FILTER_INVALID_GEOMETRIES, prevInvalidGeoms)
Beispiel #5
0
 def initialize():
     if "model" in [p.getName() for p in Processing.providers]:
         return
     # Add the basic providers
     for c in AlgorithmProvider.__subclasses__():
         Processing.addProvider(c())
     # And initialize
     ProcessingConfig.initialize()
     ProcessingConfig.readSettings()
     RenderingStyles.loadStyles()
Beispiel #6
0
 def initialize():
     if "model" in [p.id() for p in QgsApplication.processingRegistry().providers()]:
         return
     # Add the basic providers
     for c in QgsProcessingProvider.__subclasses__():
         p = c()
         Processing.BASIC_PROVIDERS.append(p)
         QgsApplication.processingRegistry().addProvider(p)
     # And initialize
     ProcessingConfig.initialize()
     ProcessingConfig.readSettings()
     RenderingStyles.loadStyles()
Beispiel #7
0
 def initialize():
     if "model" in [p.id() for p in QgsApplication.processingRegistry().providers()]:
         return
     # Add the basic providers
     for c in QgsProcessingProvider.__subclasses__():
         p = c()
         if p.id() in ('native', '3d'):
             # c++ providers are already registered
             continue
         if QgsApplication.processingRegistry().addProvider(p):
             Processing.BASIC_PROVIDERS.append(p)
     # And initialize
     ProcessingConfig.initialize()
     ProcessingConfig.readSettings()
     RenderingStyles.loadStyles()
Beispiel #8
0
    def testFeatures(self):
        ProcessingConfig.initialize()

        test_data = points()
        test_layer = QgsVectorLayer(test_data, 'test', 'ogr')

        # test with all features
        features = vector.features(test_layer)
        self.assertEqual(len(features), 9)
        self.assertEqual(set([f.id() for f in features]), set([0, 1, 2, 3, 4, 5, 6, 7, 8]))

        # test with selected features
        previous_value = ProcessingConfig.getSetting(ProcessingConfig.USE_SELECTED)
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.selectByIds([2, 4, 6])
        features = vector.features(test_layer)
        self.assertEqual(len(features), 3)
        self.assertEqual(set([f.id() for f in features]), set([2, 4, 6]))

        # selection, but not using selected features
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, False)
        test_layer.selectByIds([2, 4, 6])
        features = vector.features(test_layer)
        self.assertEqual(len(features), 9)
        self.assertEqual(set([f.id() for f in features]), set([0, 1, 2, 3, 4, 5, 6, 7, 8]))

        # using selected features, but no selection
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.removeSelection()
        features = vector.features(test_layer)
        self.assertEqual(len(features), 9)
        self.assertEqual(set([f.id() for f in features]), set([0, 1, 2, 3, 4, 5, 6, 7, 8]))

        # test that feature request is honored
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, False)
        features = vector.features(test_layer, QgsFeatureRequest().setFilterFids([1, 3, 5]))
        self.assertEqual(set([f.id() for f in features]), set([1, 3, 5]))

        # test that feature request is honored when using selections
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.selectByIds([2, 4, 6])
        features = vector.features(test_layer, QgsFeatureRequest().setFlags(QgsFeatureRequest.NoGeometry))
        self.assertTrue(all([not f.hasGeometry() for f in features]))
        features = vector.features(test_layer, QgsFeatureRequest().setFlags(QgsFeatureRequest.NoGeometry))
        self.assertEqual(set([f.id() for f in features]), set([2, 4, 6]))

        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, previous_value)
Beispiel #9
0
    def testValues(self):
        ProcessingConfig.initialize()

        # disable check for geometry validity
        prevInvalidGeoms = ProcessingConfig.getSetting(
            ProcessingConfig.FILTER_INVALID_GEOMETRIES)
        ProcessingConfig.setSettingValue(
            ProcessingConfig.FILTER_INVALID_GEOMETRIES, 0)

        test_data = points()
        test_layer = QgsVectorLayer(test_data, 'test', 'ogr')

        # field by index
        res = vector.values(test_layer, 1)
        self.assertEqual(res[1], [1, 2, 3, 4, 5, 6, 7, 8, 9])

        # field by name
        res = vector.values(test_layer, 'id')
        self.assertEqual(res['id'], [1, 2, 3, 4, 5, 6, 7, 8, 9])

        # two fields
        res = vector.values(test_layer, 1, 2)
        self.assertEqual(res[1], [1, 2, 3, 4, 5, 6, 7, 8, 9])
        self.assertEqual(res[2], [2, 1, 0, 2, 1, 0, 0, 0, 0])

        # two fields by name
        res = vector.values(test_layer, 'id', 'id2')
        self.assertEqual(res['id'], [1, 2, 3, 4, 5, 6, 7, 8, 9])
        self.assertEqual(res['id2'], [2, 1, 0, 2, 1, 0, 0, 0, 0])

        # two fields by name and index
        res = vector.values(test_layer, 'id', 2)
        self.assertEqual(res['id'], [1, 2, 3, 4, 5, 6, 7, 8, 9])
        self.assertEqual(res[2], [2, 1, 0, 2, 1, 0, 0, 0, 0])

        # test with selected features
        previous_value = ProcessingConfig.getSetting(
            ProcessingConfig.USE_SELECTED)
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.selectByIds([2, 4, 6])
        res = vector.values(test_layer, 1)
        self.assertEqual(set(res[1]), set([5, 7, 3]))

        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED,
                                         previous_value)
        ProcessingConfig.setSettingValue(
            ProcessingConfig.FILTER_INVALID_GEOMETRIES, prevInvalidGeoms)
Beispiel #10
0
 def initialize():
     if "model" in [p.id() for p in QgsApplication.processingRegistry().providers()]:
         return
     # Add the basic providers
     for c in [
         QgisAlgorithmProvider,
         Grass7AlgorithmProvider,
         GdalAlgorithmProvider,
         SagaAlgorithmProvider,
         ScriptAlgorithmProvider,
         ModelerAlgorithmProvider
     ]:
         p = c()
         if QgsApplication.processingRegistry().addProvider(p):
             Processing.BASIC_PROVIDERS.append(p)
     # And initialize
     ProcessingConfig.initialize()
     ProcessingConfig.readSettings()
     RenderingStyles.loadStyles()
Beispiel #11
0
 def initialize():
     #add the basic providers
     Processing.addProvider(QGISAlgorithmProvider())
     Processing.addProvider(ModelerOnlyAlgorithmProvider())
     Processing.addProvider(GdalOgrAlgorithmProvider())
     Processing.addProvider(LidarToolsAlgorithmProvider())
     Processing.addProvider(OTBAlgorithmProvider())
     Processing.addProvider(RAlgorithmProvider())
     Processing.addProvider(SagaAlgorithmProvider())
     Processing.addProvider(GrassAlgorithmProvider())
     Processing.addProvider(ScriptAlgorithmProvider())
     Processing.addProvider(TauDEMAlgorithmProvider())
     Processing.addProvider(AdminToolsAlgorithmProvider())
     Processing.modeler.initializeSettings();
     #and initialize
     AlgorithmDecorator.loadClassification()
     ProcessingLog.startLogging()
     ProcessingConfig.initialize()
     ProcessingConfig.loadSettings()
     RenderingStyles.loadStyles()
     Processing.loadFromProviders()
Beispiel #12
0
    def initialize():
        # Add the basic providers
        Processing.addProvider(QGISAlgorithmProvider(), updateList=False)
        Processing.addProvider(ModelerOnlyAlgorithmProvider(), updateList=False)
        Processing.addProvider(GdalOgrAlgorithmProvider(), updateList=False)
        Processing.addProvider(LidarToolsAlgorithmProvider(), updateList=False)
        Processing.addProvider(OTBAlgorithmProvider(), updateList=False)
        Processing.addProvider(RAlgorithmProvider(), updateList=False)
        Processing.addProvider(SagaAlgorithmProvider(), updateList=False)
        Processing.addProvider(GrassAlgorithmProvider(), updateList=False)
        Processing.addProvider(Grass7AlgorithmProvider(), updateList=False)
        Processing.addProvider(ScriptAlgorithmProvider(), updateList=False)
        Processing.addProvider(TauDEMAlgorithmProvider(), updateList=False)
        Processing.addProvider(PreconfiguredAlgorithmProvider(), updateList=False)
        Processing.addProvider(Processing.modeler, updateList=False)
        Processing.modeler.initializeSettings()

        # And initialize
        AlgorithmClassification.loadClassification()
        ProcessingConfig.initialize()
        ProcessingConfig.readSettings()
        RenderingStyles.loadStyles()
        Processing.loadFromProviders()
Beispiel #13
0
    def initialize():
        if "model" in [p.id() for p in QgsApplication.processingRegistry().providers()]:
            return

        with QgsRuntimeProfiler.profile('Initialize'):
            # Add the basic providers
            for c in [
                QgisAlgorithmProvider,
                Grass7AlgorithmProvider,
                GdalAlgorithmProvider,
                OtbAlgorithmProvider,
                SagaAlgorithmProvider,
                ScriptAlgorithmProvider,
                ModelerAlgorithmProvider,
                ProjectProvider
            ]:
                p = c()
                if QgsApplication.processingRegistry().addProvider(p):
                    Processing.BASIC_PROVIDERS.append(p)
            # And initialize
            ProcessingConfig.initialize()
            ProcessingConfig.readSettings()
            RenderingStyles.loadStyles()
Beispiel #14
0
    def initialize():
        # Add the basic providers
        Processing.addProvider(QGISAlgorithmProvider())
        Processing.addProvider(ModelerOnlyAlgorithmProvider())
        Processing.addProvider(GdalOgrAlgorithmProvider())
        Processing.addProvider(LidarToolsAlgorithmProvider())
        Processing.addProvider(OTBAlgorithmProvider())
        Processing.addProvider(RAlgorithmProvider())
        Processing.addProvider(SagaAlgorithmProvider())
        Processing.addProvider(GrassAlgorithmProvider())
        Processing.addProvider(Grass7AlgorithmProvider())
        Processing.addProvider(ScriptAlgorithmProvider())
        Processing.addProvider(TauDEMAlgorithmProvider())
        Processing.addProvider(Processing.modeler)
        Processing.modeler.initializeSettings()

        # And initialize
        AlgorithmDecorator.loadClassification()
        ProcessingLog.startLogging()
        ProcessingConfig.initialize()
        ProcessingConfig.readSettings()
        RenderingStyles.loadStyles()
        Processing.loadFromProviders()
Beispiel #15
0
    def testValues(self):
        ProcessingConfig.initialize()

        test_data = points2()
        test_layer = QgsVectorLayer(test_data, 'test', 'ogr')

        # field by index
        res = vector.values(test_layer, 0)
        self.assertEqual(res[0], [1, 2, 3, 4, 5, 6, 7, 8])

        # field by name
        res = vector.values(test_layer, 'id')
        self.assertEqual(res['id'], [1, 2, 3, 4, 5, 6, 7, 8])

        # two fields
        res = vector.values(test_layer, 0, 3)
        self.assertEqual(res[0], [1, 2, 3, 4, 5, 6, 7, 8])
        self.assertEqual(res[3], [2, 1, 0, 2, 1, 0, 0, 0])

        # two fields by name
        res = vector.values(test_layer, 'id', 'id_2')
        self.assertEqual(res['id'], [1, 2, 3, 4, 5, 6, 7, 8])
        self.assertEqual(res['id_2'], [2, 1, 0, 2, 1, 0, 0, 0])

        # two fields by name and index
        res = vector.values(test_layer, 'id', 3)
        self.assertEqual(res['id'], [1, 2, 3, 4, 5, 6, 7, 8])
        self.assertEqual(res[3], [2, 1, 0, 2, 1, 0, 0, 0])

        # test with selected features
        previous_value = ProcessingConfig.getSetting(ProcessingConfig.USE_SELECTED)
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.selectByIds([2, 4, 6])
        res = vector.values(test_layer, 0)
        self.assertEqual(set(res[0]), set([5, 7, 3]))

        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, previous_value)
Beispiel #16
0
    def testValues(self):
        ProcessingConfig.initialize()

        test_data = points2()
        test_layer = QgsVectorLayer(test_data, 'test', 'ogr')

        # field by index
        res = vector.values(test_layer, 0)
        self.assertEqual(res[0], [1, 2, 3, 4, 5, 6, 7, 8])

        # field by name
        res = vector.values(test_layer, 'id')
        self.assertEqual(res['id'], [1, 2, 3, 4, 5, 6, 7, 8])

        # two fields
        res = vector.values(test_layer, 0, 3)
        self.assertEqual(res[0], [1, 2, 3, 4, 5, 6, 7, 8])
        self.assertEqual(res[3], [2, 1, 0, 2, 1, 0, 0, 0])

        # two fields by name
        res = vector.values(test_layer, 'id', 'id_2')
        self.assertEqual(res['id'], [1, 2, 3, 4, 5, 6, 7, 8])
        self.assertEqual(res['id_2'], [2, 1, 0, 2, 1, 0, 0, 0])

        # two fields by name and index
        res = vector.values(test_layer, 'id', 3)
        self.assertEqual(res['id'], [1, 2, 3, 4, 5, 6, 7, 8])
        self.assertEqual(res[3], [2, 1, 0, 2, 1, 0, 0, 0])

        # test with selected features
        previous_value = ProcessingConfig.getSetting(ProcessingConfig.USE_SELECTED)
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.selectByIds([2, 4, 6])
        res = vector.values(test_layer, 0)
        self.assertEqual(set(res[0]), set([5, 7, 3]))

        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, previous_value)
Beispiel #17
0
    def initialize():
        # Add the basic providers
        Processing.addProvider(QGISAlgorithmProvider(), updateList=False)
        Processing.addProvider(ModelerOnlyAlgorithmProvider(), updateList=False)
        Processing.addProvider(GdalOgrAlgorithmProvider(), updateList=False)
        Processing.addProvider(LidarToolsAlgorithmProvider(), updateList=False)
        Processing.addProvider(OTBAlgorithmProvider(), updateList=False)
        Processing.addProvider(RAlgorithmProvider(), updateList=False)
        Processing.addProvider(SagaAlgorithmProvider(), updateList=False)
        Processing.addProvider(GrassAlgorithmProvider(), updateList=False)
        Processing.addProvider(Grass7AlgorithmProvider(), updateList=False)
        Processing.addProvider(ScriptAlgorithmProvider(), updateList=False)
        Processing.addProvider(TauDEMAlgorithmProvider(), updateList=False)
        Processing.addProvider(Processing.modeler, updateList=False)
        Processing.modeler.initializeSettings()

        # And initialize
        AlgorithmClassification.loadClassification()
        ProcessingConfig.initialize()
        ProcessingConfig.readSettings()
        RenderingStyles.loadStyles()
        Processing.loadFromProviders()
        # Inform registered listeners that all providers' algorithms have been loaded
        Processing.fireAlgsListHasChanged()
Beispiel #18
0
    def testFeatures(self):
        ProcessingConfig.initialize()

        test_data = points()
        test_layer = QgsVectorLayer(test_data, 'test', 'ogr')

        # disable check for geometry validity
        prevInvalidGeoms = ProcessingConfig.getSetting(
            ProcessingConfig.FILTER_INVALID_GEOMETRIES)
        ProcessingConfig.setSettingValue(
            ProcessingConfig.FILTER_INVALID_GEOMETRIES, 0)

        # test with all features
        features = vector.features(test_layer)
        self.assertEqual(len(features), 9)
        self.assertEqual(set([f.id() for f in features]),
                         set([0, 1, 2, 3, 4, 5, 6, 7, 8]))

        # test with selected features
        previous_value = ProcessingConfig.getSetting(
            ProcessingConfig.USE_SELECTED)
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.selectByIds([2, 4, 6])
        features = vector.features(test_layer)
        self.assertEqual(len(features), 3)
        self.assertEqual(set([f.id() for f in features]), set([2, 4, 6]))

        # selection, but not using selected features
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, False)
        test_layer.selectByIds([2, 4, 6])
        features = vector.features(test_layer)
        self.assertEqual(len(features), 9)
        self.assertEqual(set([f.id() for f in features]),
                         set([0, 1, 2, 3, 4, 5, 6, 7, 8]))

        # using selected features, but no selection
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.removeSelection()
        features = vector.features(test_layer)
        self.assertEqual(len(features), 9)
        self.assertEqual(set([f.id() for f in features]),
                         set([0, 1, 2, 3, 4, 5, 6, 7, 8]))

        # test that feature request is honored
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, False)
        features = vector.features(
            test_layer,
            QgsFeatureRequest().setFilterFids([1, 3, 5]))
        self.assertEqual(set([f.id() for f in features]), set([1, 3, 5]))

        # test that feature request is honored when using selections
        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED, True)
        test_layer.selectByIds([2, 4, 6])
        features = vector.features(
            test_layer,
            QgsFeatureRequest().setFlags(QgsFeatureRequest.NoGeometry))
        self.assertTrue(all([not f.hasGeometry() for f in features]))
        features = vector.features(
            test_layer,
            QgsFeatureRequest().setFlags(QgsFeatureRequest.NoGeometry))
        self.assertEqual(set([f.id() for f in features]), set([2, 4, 6]))

        ProcessingConfig.setSettingValue(ProcessingConfig.USE_SELECTED,
                                         previous_value)

        # test exception is raised when filtering invalid geoms
        #ProcessingConfig.setSettingValue(ProcessingConfig.FILTER_INVALID_GEOMETRIES, 2)
        #test_layer_invalid_geoms = QgsVectorLayer(invalid_geometries(), 'test', 'ogr')
        #with self.assertRaises(GeoAlgorithmExecutionException):
        #    features = vector.features(test_layer_invalid_geoms)
        #    feats = [f for f in features]

        ProcessingConfig.setSettingValue(
            ProcessingConfig.FILTER_INVALID_GEOMETRIES, prevInvalidGeoms)
Beispiel #19
0
    def initialize():
        if "model" in [p.id() for p in QgsApplication.processingRegistry().providers()]:
            return

        with QgsRuntimeProfiler.profile('Initialize'):

            # add native provider if not already added
            if "native" not in [p.id() for p in QgsApplication.processingRegistry().providers()]:
                QgsApplication.processingRegistry().addProvider(QgsNativeAlgorithms(QgsApplication.processingRegistry()))

            # add 3d provider if available and not already added
            if "3d" not in [p.id() for p in QgsApplication.processingRegistry().providers()]:
                try:
                    from qgis._3d import Qgs3DAlgorithms
                    QgsApplication.processingRegistry().addProvider(Qgs3DAlgorithms(QgsApplication.processingRegistry()))
                except ImportError:
                    # no 3d library available
                    pass

            # Add the basic providers
            for c in [
                QgisAlgorithmProvider,
                GdalAlgorithmProvider,
                ScriptAlgorithmProvider,
                ModelerAlgorithmProvider,
                ProjectProvider
            ]:
                p = c()
                if QgsApplication.processingRegistry().addProvider(p):
                    Processing.BASIC_PROVIDERS.append(p)

            if QgsApplication.platform() == 'external':
                # for external applications we must also load the builtin providers stored in separate plugins
                try:
                    from grassprovider.Grass7AlgorithmProvider import Grass7AlgorithmProvider
                    p = Grass7AlgorithmProvider()
                    if QgsApplication.processingRegistry().addProvider(p):
                        Processing.BASIC_PROVIDERS.append(p)
                except ImportError:
                    pass

                try:
                    from otbprovider.OtbAlgorithmProvider import OtbAlgorithmProvider
                    p = OtbAlgorithmProvider()
                    if QgsApplication.processingRegistry().addProvider(p):
                        Processing.BASIC_PROVIDERS.append(p)
                except ImportError:
                    pass

                try:
                    from sagaprovider.SagaAlgorithmProvider import SagaAlgorithmProvider
                    p = SagaAlgorithmProvider()
                    if QgsApplication.processingRegistry().addProvider(p):
                        Processing.BASIC_PROVIDERS.append(p)
                except ImportError:
                    pass

            # And initialize
            ProcessingConfig.initialize()
            ProcessingConfig.readSettings()
            RenderingStyles.loadStyles()