本文整理汇总了Python中qgis.core.QgsProcessingContext.setProject方法的典型用法代码示例。如果您正苦于以下问题:Python QgsProcessingContext.setProject方法的具体用法?Python QgsProcessingContext.setProject怎么用?Python QgsProcessingContext.setProject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsProcessingContext
的用法示例。
在下文中一共展示了QgsProcessingContext.setProject方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testGdalScripts
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def testGdalScripts(self):
'''Test GDAL scripts2'''
layer = QgsRasterLayer(os.path.join(os.path.dirname(__file__), "data","dem25.tif"),
"dem")
QgsProject.instance().addMapLayer(layer)
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
alg = QgsApplication.processingRegistry().createAlgorithmById('gdal:rastercalculator')
self.assertIsNotNone(alg)
parameters = {'INPUT_A':'dem',
'BAND_A':1,'INPUT_B':None,'BAND_B':-1,
'INPUT_C':None,'BAND_C':-1,'INPUT_D':None,
'BAND_D':-1,'INPUT_E':None,'BAND_E':-1,
'INPUT_F':None,'BAND_F':-1,'FORMULA':'A*2',
'NO_DATA':None,'RTYPE':5,'OPTIONS':'',
'OUTPUT':'TEMPORARY_OUTPUT'}
feedback = QgsProcessingFeedback()
results, ok = alg.run(parameters, context, feedback)
self.assertTrue(ok)
self.assertTrue(os.path.exists(results["OUTPUT"]))
QgsProject.instance().removeMapLayer(layer)
示例2: _alg_tester
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def _alg_tester(self, alg_name, input_layer, parameters):
alg = self.registry.createAlgorithmById(alg_name)
self.assertIsNotNone(alg)
parameters['INPUT'] = input_layer
parameters['OUTPUT'] = 'memory:'
old_features = [f for f in input_layer.getFeatures()]
input_layer.selectByIds([old_features[0].id()])
# Check selected
self.assertEqual(input_layer.selectedFeatureIds(), [old_features[0].id()], alg_name)
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
feedback = ConsoleFeedBack()
input_layer.rollBack()
ok = False
ok, _ = execute_in_place_run(
alg, parameters, context=context, feedback=feedback, raise_exceptions=True)
new_features = [f for f in input_layer.getFeatures()]
# Check ret values
self.assertTrue(ok, alg_name)
# Check geometry types (drop Z or M)
self.assertEqual(new_features[0].geometry().wkbType(), old_features[0].geometry().wkbType())
return old_features, new_features
示例3: createContext
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def createContext(feedback=None):
"""
Creates a default processing context
:param feedback: Optional existing QgsProcessingFeedback object, or None to use a default feedback object
:type feedback: Optional[QgsProcessingFeedback]
:returns: New QgsProcessingContext object
:rtype: QgsProcessingContext
"""
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
context.setFeedback(feedback)
invalid_features_method = ProcessingConfig.getSetting(ProcessingConfig.FILTER_INVALID_GEOMETRIES)
if invalid_features_method is None:
invalid_features_method = QgsFeatureRequest.GeometryAbortOnInvalid
context.setInvalidGeometryCheck(invalid_features_method)
settings = QgsSettings()
context.setDefaultEncoding(settings.value("/Processing/encoding", "System"))
context.setExpressionContext(createExpressionContext())
return context
示例4: test_select_all_features
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def test_select_all_features(self):
"""Check that if there is no selection, the alg will run on all features"""
self.vl.rollBack()
self.vl.removeSelection()
old_count = self.vl.featureCount()
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
feedback = ConsoleFeedBack()
alg = self.registry.createAlgorithmById('native:translategeometry')
self.assertIsNotNone(alg)
parameters = {
'DELTA_X': 1.1,
'DELTA_Y': 1.1,
}
parameters['INPUT'] = self.vl
parameters['OUTPUT'] = 'memory:'
old_features = [f for f in self.vl.getFeatures()]
ok, _ = execute_in_place_run(
alg, parameters, context=context, feedback=feedback, raise_exceptions=True)
new_features = [f for f in self.vl.getFeatures()]
self.assertEqual(len(new_features), old_count)
# Check all are selected
self.assertEqual(len(self.vl.selectedFeatureIds()), old_count)
示例5: test_parameterAs_ScriptMode
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def test_parameterAs_ScriptMode(self):
"""
This test will pass an instance of QgsCoordinateReferenceSystem for 'epsg' parameter
of otb::Rasterization. There is same test in otb_algorithm_tests.yaml which passes
an instance of str for epsg parameter.
"""
outdir = tempfile.mkdtemp()
self.cleanup_paths.append(outdir)
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
feedback = QgsProcessingFeedback()
vectorFile = os.path.join(AlgorithmsTestBase.processingTestDataPath(), 'polys.gml')
vectorLayer = QgsProcessingUtils.mapLayerFromString(vectorFile, context)
parameters = {
'in': vectorLayer,
'epsg': QgsCoordinateReferenceSystem('EPSG:4326'),
'spx': 1.0,
'spy': 1.0,
'outputpixeltype': 1,
'out': os.path.join(outdir, 'raster.tif')
}
results = processing.run('otb:Rasterization', parameters, None, feedback)
result_lyr = QgsProcessingUtils.mapLayerFromString(results['out'], context)
self.assertTrue(result_lyr.isValid())
示例6: test_check_validity
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def test_check_validity(self):
"""Test that the output invalid contains the error reason"""
polygon_layer = self._make_layer('Polygon')
self.assertTrue(polygon_layer.startEditing())
f = QgsFeature(polygon_layer.fields())
f.setAttributes([1])
# Flake!
f.setGeometry(QgsGeometry.fromWkt(
'POLYGON ((0 0, 2 2, 0 2, 2 0, 0 0))'))
self.assertTrue(f.isValid())
f2 = QgsFeature(polygon_layer.fields())
f2.setAttributes([1])
f2.setGeometry(QgsGeometry.fromWkt(
'POLYGON((1.1 1.1, 1.1 2.1, 2.1 2.1, 2.1 1.1, 1.1 1.1))'))
self.assertTrue(f2.isValid())
self.assertTrue(polygon_layer.addFeatures([f, f2]))
polygon_layer.commitChanges()
polygon_layer.rollBack()
self.assertEqual(polygon_layer.featureCount(), 2)
QgsProject.instance().addMapLayers([polygon_layer])
alg = self.registry.createAlgorithmById('qgis:checkvalidity')
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
feedback = ConsoleFeedBack()
self.assertIsNotNone(alg)
parameters = {}
parameters['INPUT_LAYER'] = polygon_layer.id()
parameters['VALID_OUTPUT'] = 'memory:'
parameters['INVALID_OUTPUT'] = 'memory:'
parameters['ERROR_OUTPUT'] = 'memory:'
# QGIS method
parameters['METHOD'] = 1
ok, results = execute(
alg, parameters, context=context, feedback=feedback)
self.assertTrue(ok)
invalid_layer = QgsProcessingUtils.mapLayerFromString(
results['INVALID_OUTPUT'], context)
self.assertEqual(invalid_layer.fields().names()[-1], '_errors')
self.assertEqual(invalid_layer.featureCount(), 1)
f = next(invalid_layer.getFeatures())
self.assertEqual(f.attributes(), [
1, 'segments 0 and 2 of line 0 intersect at 1, 1'])
# GEOS method
parameters['METHOD'] = 2
ok, results = execute(
alg, parameters, context=context, feedback=feedback)
self.assertTrue(ok)
invalid_layer = QgsProcessingUtils.mapLayerFromString(
results['INVALID_OUTPUT'], context)
self.assertEqual(invalid_layer.fields().names()[-1], '_errors')
self.assertEqual(invalid_layer.featureCount(), 1)
f = next(invalid_layer.getFeatures())
self.assertEqual(f.attributes(), [1, 'Self-intersection'])
示例7: createContext
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def createContext():
"""
Creates a default processing context
"""
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
invalid_features_method = ProcessingConfig.getSetting(ProcessingConfig.FILTER_INVALID_GEOMETRIES)
if invalid_features_method is None:
invalid_features_method = QgsFeatureRequest.GeometryAbortOnInvalid
context.setInvalidGeometryCheck(invalid_features_method)
def raise_error(f):
raise GeoAlgorithmExecutionException(QCoreApplication.translate("FeatureIterator",
'Features with invalid geometries found. Please fix these geometries or specify the "Ignore invalid input features" flag'))
context.setInvalidGeometryCallback(raise_error)
def raise_transform_error(f):
raise GeoAlgorithmExecutionException(QCoreApplication.translate("FeatureIterator",
'Encountered a transform error when reprojecting feature with id {}.'.format(f.id())))
context.setTransformErrorCallback(raise_transform_error)
settings = QgsSettings()
context.setDefaultEncoding(settings.value("/Processing/encoding", "System"))
return context
示例8: testFeatureSourceInput
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def testFeatureSourceInput(self):
# create a memory layer and add to project and context
layer = QgsVectorLayer("Point?crs=epsg:3857&field=fldtxt:string&field=fldint:integer",
"testmem", "memory")
self.assertTrue(layer.isValid())
pr = layer.dataProvider()
f = QgsFeature()
f.setAttributes(["test", 123])
f.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(100, 200)))
f2 = QgsFeature()
f2.setAttributes(["test2", 457])
f2.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(110, 200)))
self.assertTrue(pr.addFeatures([f, f2]))
self.assertEqual(layer.featureCount(), 2)
# select first feature
layer.selectByIds([next(layer.getFeatures()).id()])
self.assertEqual(len(layer.selectedFeatureIds()), 1)
QgsProject.instance().addMapLayer(layer)
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
alg = QgsApplication.processingRegistry().createAlgorithmById('grass7:v.buffer')
self.assertIsNotNone(alg)
temp_file = os.path.join(self.temp_dir, 'grass_output_sel.shp')
parameters = {'input': QgsProcessingFeatureSourceDefinition('testmem', True),
'cats': '',
'where': '',
'type': [0, 1, 4],
'distance': 1,
'minordistance': None,
'angle': 0,
'column': None,
'scale': 1,
'tolerance': 0.01,
'-s': False,
'-c': False,
'-t': False,
'output': temp_file,
'GRASS_REGION_PARAMETER': None,
'GRASS_SNAP_TOLERANCE_PARAMETER': -1,
'GRASS_MIN_AREA_PARAMETER': 0.0001,
'GRASS_OUTPUT_TYPE_PARAMETER': 0,
'GRASS_VECTOR_DSCO': '',
'GRASS_VECTOR_LCO': ''}
feedback = QgsProcessingFeedback()
results, ok = alg.run(parameters, context, feedback)
self.assertTrue(ok)
self.assertTrue(os.path.exists(temp_file))
# make sure that layer has correct features
res = QgsVectorLayer(temp_file, 'res')
self.assertTrue(res.isValid())
self.assertEqual(res.featureCount(), 1)
QgsProject.instance().removeMapLayer(layer)
示例9: check_algorithm
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def check_algorithm(self, name, defs):
"""
Will run an algorithm definition and check if it generates the expected result
:param name: The identifier name used in the test output heading
:param defs: A python dict containing a test algorithm definition
"""
self.vector_layer_params = {}
QgsProject.instance().removeAllMapLayers()
params = self.load_params(defs['params'])
print('Running alg: "{}"'.format(defs['algorithm']))
alg = QgsApplication.processingRegistry().createAlgorithmById(defs['algorithm'])
parameters = {}
if isinstance(params, list):
for param in zip(alg.parameterDefinitions(), params):
parameters[param[0].name()] = param[1]
else:
for k, p in list(params.items()):
parameters[k] = p
for r, p in list(defs['results'].items()):
if not 'in_place_result' in p or not p['in_place_result']:
parameters[r] = self.load_result_param(p)
expectFailure = False
if 'expectedFailure' in defs:
exec(('\n'.join(defs['expectedFailure'][:-1])), globals(), locals())
expectFailure = eval(defs['expectedFailure'][-1])
# ignore user setting for invalid geometry handling
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
if 'skipInvalid' in defs and defs['skipInvalid']:
context.setInvalidGeometryCheck(QgsFeatureRequest.GeometrySkipInvalid)
feedback = QgsProcessingFeedback()
print('Algorithm parameters are {}'.format(parameters))
# first check that algorithm accepts the parameters we pass...
ok, msg = alg.checkParameterValues(parameters, context)
self.assertTrue(ok, 'Algorithm failed checkParameterValues with result {}'.format(msg))
if expectFailure:
try:
results, ok = alg.run(parameters, context, feedback)
self.check_results(results, context, parameters, defs['results'])
if ok:
raise _UnexpectedSuccess
except Exception:
pass
else:
results, ok = alg.run(parameters, context, feedback)
self.assertTrue(ok, 'params: {}, results: {}'.format(parameters, results))
self.check_results(results, context, parameters, defs['results'])
示例10: test_bad_script_dont_crash
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def test_bad_script_dont_crash(self): # spellok
"""Test regression #21270 (segfault)"""
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
feedback = ConsoleFeedBack()
task = QgsProcessingAlgRunnerTask(CrashingProcessingAlgorithm(), {}, context=context, feedback=feedback)
self.assertTrue(task.isCanceled())
self.assertIn('name \'ExampleProcessingAlgorithm\' is not defined', feedback._error)
示例11: check_algorithm
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def check_algorithm(self, name, defs):
"""
Will run an algorithm definition and check if it generates the expected result
:param name: The identifier name used in the test output heading
:param defs: A python dict containing a test algorithm definition
"""
self.vector_layer_params = {}
QgsProject.instance().removeAllMapLayers()
params = self.load_params(defs['params'])
if defs['algorithm'].startswith('script:'):
filePath = os.path.join(processingTestDataPath(), 'scripts', '{}.py'.format(defs['algorithm'][len('script:'):]))
alg = ScriptAlgorithm(filePath)
alg.initAlgorithm()
else:
alg = QgsApplication.processingRegistry().createAlgorithmById(defs['algorithm'])
parameters = {}
if isinstance(params, list):
for param in zip(alg.parameterDefinitions(), params):
parameters[param[0].name()] = param[1]
else:
for k, p in list(params.items()):
parameters[k] = p
for r, p in list(defs['results'].items()):
if not 'in_place_result' in p or not p['in_place_result']:
parameters[r] = self.load_result_param(p)
expectFailure = False
if 'expectedFailure' in defs:
exec(('\n'.join(defs['expectedFailure'][:-1])), globals(), locals())
expectFailure = eval(defs['expectedFailure'][-1])
# ignore user setting for invalid geometry handling
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
feedback = QgsProcessingFeedback()
if expectFailure:
try:
results, ok = alg.run(parameters, context, feedback)
self.check_results(results, context, defs['params'], defs['results'])
if ok:
raise _UnexpectedSuccess
except Exception:
pass
else:
results, ok = alg.run(parameters, context, feedback)
self.assertTrue(ok, 'params: {}, results: {}'.format(parameters, results))
self.check_results(results, context, defs['params'], defs['results'])
示例12: test_bug21373_mode_raster
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def test_bug21373_mode_raster(self):
"""
This issue is reported on qgis bug tracker: #21373
"""
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
feedback = QgsProcessingFeedback()
parameters = {
'in': TestOtbAlgorithms.__input_raster_layer(),
'filter': 'meanshift',
'mode': 'raster',
'mode.raster.out': 'raster.tif'
}
alg = OtbAlgorithm('Segmentation', 'Segmentation', os.path.join(self.descrFolder, 'Segmentation.txt'))
results = alg.processAlgorithm(parameters, context, feedback)
self.assertDictEqual(results, {'mode.raster.out': 'raster.tif'})
示例13: test_bug21374_Fail
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def test_bug21374_Fail(self):
"""
This issue is reported on qgis bug tracker: #21374
"""
outdir = tempfile.mkdtemp()
self.cleanup_paths.append(outdir)
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
feedback = QgsProcessingFeedback()
parameters = {
'in': TestOtbAlgorithms.__input_raster_layer(),
'filter': 'cc',
'mode.vector.out': os.path.join(outdir, 'vector.shp')
}
alg = OtbAlgorithm('Segmentation', 'Segmentation', os.path.join(self.descrFolder, 'Segmentation.txt'))
ok, msg = alg.checkParameterValues(parameters, context)
self.assertFalse(ok, 'Algorithm failed checkParameterValues with result {}'.format(msg))
示例14: createContext
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def createContext(feedback=None):
"""
Creates a default processing context
"""
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
context.setFeedback(feedback)
invalid_features_method = ProcessingConfig.getSetting(ProcessingConfig.FILTER_INVALID_GEOMETRIES)
if invalid_features_method is None:
invalid_features_method = QgsFeatureRequest.GeometryAbortOnInvalid
context.setInvalidGeometryCheck(invalid_features_method)
settings = QgsSettings()
context.setDefaultEncoding(settings.value("/Processing/encoding", "System"))
context.setExpressionContext(createExpressionContext())
return context
示例15: _make_compatible_tester
# 需要导入模块: from qgis.core import QgsProcessingContext [as 别名]
# 或者: from qgis.core.QgsProcessingContext import setProject [as 别名]
def _make_compatible_tester(self, feature_wkt, layer_wkb_name, attrs=[1]):
layer = self._make_layer(layer_wkb_name)
layer.startEditing()
f = QgsFeature(layer.fields())
f.setAttributes(attrs)
f.setGeometry(QgsGeometry.fromWkt(feature_wkt))
self.assertTrue(f.isValid())
context = QgsProcessingContext()
context.setProject(QgsProject.instance())
# Fix it!
new_features = make_features_compatible([f], layer)
for new_f in new_features:
self.assertEqual(new_f.geometry().wkbType(), layer.wkbType())
self.assertTrue(layer.addFeatures(new_features), "Fail: %s - %s - %s" % (feature_wkt, attrs, layer_wkb_name))
return layer, new_features