Browse Source

update Processing

tags/1.1
Etienne Trimaille 4 years ago
parent
commit
03552a692d

+ 11
- 0
CoreQuickOSM/ExceptionQuickOSM.py View File

@@ -56,6 +56,17 @@ class NetWorkErrorException(QuickOsmException):
msg = msg + " with " + suffix
QuickOsmException.__init__(self,msg)

'''
QueryFactory
'''
class QueryFactoryException(QuickOsmException):
def __init__(self, msg=None, suffix=None):
if not msg:
msg = QApplication.translate("Exception", u"Error while building the query")
if suffix:
msg = msg + " : " + suffix
QuickOsmException.__init__(self,msg)

'''
Nominatim
'''

+ 3
- 3
CoreQuickOSM/QueryFactory.py View File

@@ -70,7 +70,7 @@ class QueryFactory():
#Check if is ok ?
if self.__nominatim and self.__bbox:
return False, "Nominatim OR bbox, not both"
raise QueryFactoryException(suffix="nominatim OR bbox, not both")
if self.__nominatim == '{{nominatim}}' or self.__nominatim == True:
self.__nominatim = '{{nominatim}}'
@@ -79,11 +79,11 @@ class QueryFactory():
self.__bbox = '{{bbox}}'
if not self.__key:
return False, "Key required"
raise QueryFactoryException(suffix="key required")
for osmObject in self.__osmObjects:
if osmObject not in QueryFactory.OSM_TYPES:
return False, "Wrong OSM object"
raise QueryFactoryException(suffix="wrong OSM object")
#TEST OK, so continue and build the query
TAB = ' '

+ 2
- 2
ProcessingQuickOSM/API/OverpassQueryGeoAlgorithm.py View File

@@ -48,7 +48,7 @@ class OverpassQueryGeoAlgorithm(GeoAlgorithm):

self.addParameter(ParameterString(self.SERVER, 'Overpass API','http://overpass-api.de/api/', False, False))
self.addParameter(ParameterString(self.QUERY_STRING,'Query (XML or OQL)', '', True,False))
self.addParameter(ParameterExtent(self.EXTENT, 'If {{bbox}} in the query, extent (999,999,999,999 is a wrong value)', default="999,999,999,999"))
self.addParameter(ParameterExtent(self.EXTENT, 'If {{bbox}} in the query, extent (0,0,0,0 is a wrong value)', default="0,0,0,0"))
self.addParameter(ParameterString(self.NOMINATIM, 'If {{nominatim}} in the query, place','', False, True))
self.addOutput(OutputFile(self.OUTPUT_FILE, 'OSM file'))
@@ -86,7 +86,7 @@ class OverpassQueryGeoAlgorithm(GeoAlgorithm):
#Extent of the layer
extent = self.getParameterValue(self.EXTENT)
if extent != "999,999,999,999":
if extent != "0,0,0,0":
#xmin,xmax,ymin,ymax
extent = [float(i) for i in extent.split(',')]
geomExtent = QgsGeometry.fromRect(QgsRectangle(extent[0],extent[2],extent[1],extent[3]))

+ 2
- 2
ProcessingQuickOSM/Tools/QueryFactoryGeoAlgorithm.py View File

@@ -49,7 +49,7 @@ class QueryFactoryGeoAlgorithm(GeoAlgorithm):
self.addParameter(ParameterString(self.FIELD_KEY, 'Key','',optional=False))
self.addParameter(ParameterString(self.FIELD_VALUE, 'Value','',optional=True))
self.addParameter(ParameterExtent(self.FIELD_EXTENT, 'Extent (999,999,999,999 is wrong value)', default="999,999,999,999"))
self.addParameter(ParameterExtent(self.FIELD_EXTENT, 'Extent (0,0,0,0 is wrong value)', default="0,0,0,0"))
self.addParameter(ParameterString(self.FIELD_NOMINATIM, 'Nominatim',optional=True))
#osm_objects = ['node','way','relation','all']
@@ -93,7 +93,7 @@ class QueryFactoryGeoAlgorithm(GeoAlgorithm):
if value == '':
value = None
if extent == "999,999,999,999":
if extent == "0,0,0,0":
extent = None
#osmObjects = self.getParameterValue(self.FIELD_OSM_OBJECTS)

+ 1
- 1
doc/QueryFactoryGeoAlgorithm.py.html View File

@@ -8,7 +8,7 @@
<h3>Value</h3>
<p>The OSM's value. This can be empty</p>
<h3>Extent</h3>
<p>An extent</p>
<p>An extent. Be carefull, the query factory will generate only {{bbox}} if the extent is different than 0,0,0,0. You should send the extent to "Query overpass API" too.</p>
<h3>Nominatim</h3>
<p>A place where you are looking for.</p>
<h3>Timeout</h3>

+ 1
- 1
doc/main.fr.html View File

@@ -10,7 +10,7 @@
<body>
<h2>QuickOSM</h2>
<p>
QuickOSM permet de d'obtenir rapidement des données OSM grâce à l'Overpass API.
QuickOSM permet d'obtenir rapidement des données OSM grâce à l'Overpass API.
<ul>
<li>Générer des requêtes en fournissant une clé/valeur</li>
<li>Choisir d'exécuter sur un espace ou une emprise</li>

+ 2
- 0
doc/main.html View File

@@ -170,6 +170,8 @@
<p>
QuickOSM brings a lot of new processing algorithms. You should have a look to these algos. Some models are available in the models's folder of the plugin.
<br />
Be carefull, Processing has some bugs, particularly with version 2.2.0-2.
<br />
In processing, it's required to <strong>parse all layers</strong> (points, lines, multilinestrings and multipolygons). To improve performance on layers you don't want, you can put a single comma in the field about columns. This comma avoids a loop in the parser.
<br />
For each algorithm, some helps are provided.

+ 0
- 38
models/ecoles-mtp.model View File

@@ -1,38 +0,0 @@
NAME:ecoles-MTP
GROUP:quickOSM
VALUE:HARDCODEDPARAMVALUE_EXTENT_2===0,1,0,1
VALUE:HARDCODEDPARAMVALUE_SERVER_2===http://overpass-api.de/api/
VALUE:HARDCODEDPARAMVALUE_NAME_0===1
ALGORITHM:quickosm:queriesavailable
120.0,160.0
None
-1|HARDCODEDPARAMVALUE_NAME_0
None
ALGORITHM:quickosm:readaninifilefromstring
340.0,260.0
None
0|INI
None
None
None
None
None
ALGORITHM:quickosm:queryoverpassapiwithastring
241.0,403.0
None
-1|HARDCODEDPARAMVALUE_SERVER_2
1|QUERY_STRING
-1|HARDCODEDPARAMVALUE_EXTENT_2
None
ALGORITHM:quickosm:ogrdefault
665.0,389.0
None
2|OUTPUT_FILE
1|WHITE_LIST_multipolygons
1|WHITE_LIST_multilinestrings
1|WHITE_LIST_lines
1|WHITE_LIST_points
ou|980.0,550.0
ou|980.0,520.0
ou|980.0,460.0
ou|980.0,490.0

+ 456
- 128
models/voirie_insee.model View File

@@ -1,128 +1,456 @@
NAME:voirie_insee
GROUP:quickosm
PARAMETER:ParameterString|STRING_INSEE|INSEE|25047
120.0,60.0
PARAMETER:ParameterString|STRING_KEY|key|highway
150.0,527.0
PARAMETER:ParameterString|STRING_VALUE|value|
146.0,456.0
PARAMETER:ParameterNumber|NUMBER_BUFFER|buffer|0.0|None|500.0
1306.0,78.0
VALUE:HARDCODEDPARAMVALUE_FIELD_KEY_0===ref:INSEE
VALUE:HARDCODEDPARAMVALUE_WHITE_LIST_lines_2===None
VALUE:HARDCODEDPARAMVALUE_FIELD_KEY_4===highway
VALUE:HARDCODEDPARAMVALUE_WHITE_LIST_lines_6===None
VALUE:HARDCODEDPARAMVALUE_DISSOLVE_7===True
VALUE:HARDCODEDPARAMVALUE_DISTANCE_7===500
VALUE:HARDCODEDPARAMVALUE_WHITE_LIST_multipolygons_6===None
VALUE:HARDCODEDPARAMVALUE_SERVER_1===http://overpass-api.de/api/
VALUE:HARDCODEDPARAMVALUE_EXTENT_1===0,1,0,1
VALUE:HARDCODEDPARAMVALUE_SERVER_5===http://overpass-api.de/api/
VALUE:HARDCODEDPARAMVALUE_EXTENT_5===0,1,0,1
VALUE:HARDCODEDPARAMVALUE_FIELD_VALUE_0===25047
VALUE:HARDCODEDPARAMVALUE_TARGET_CRS_10===EPSG:2154
VALUE:HARDCODEDPARAMVALUE_FIELD_VALUE_4===None
VALUE:HARDCODEDPARAMVALUE_SEGMENTS_7===5
VALUE:HARDCODEDPARAMVALUE_WHITE_LIST_multipolygons_2===None
VALUE:HARDCODEDPARAMVALUE_FIELD_3===osm_id
VALUE:HARDCODEDPARAMVALUE_FIELD_EXTENT_4===0,1,0,1
VALUE:HARDCODEDPARAMVALUE_WHITE_LIST_points_6===None
VALUE:HARDCODEDPARAMVALUE_WHITE_LIST_points_2===None
VALUE:HARDCODEDPARAMVALUE_FIELD_TIMEOUT_0===25
VALUE:HARDCODEDPARAMVALUE_FIELD_OSM_OBJECTS_4===0
VALUE:HARDCODEDPARAMVALUE_FIELD_TIMEOUT_4===25
VALUE:HARDCODEDPARAMVALUE_FIELD_OSM_OBJECTS_0===0
VALUE:HARDCODEDPARAMVALUE_WHITE_LIST_multilinestrings_6===None
VALUE:HARDCODEDPARAMVALUE_WHITE_LIST_multilinestrings_2===None
VALUE:HARDCODEDPARAMVALUE_FIELD_EXTENT_0===0,1,0,1
VALUE:HARDCODEDPARAMVALUE_NOMINATIM_5===Montpellier
VALUE:HARDCODEDPARAMVALUE_NOMINATIM_1===Montpellier
VALUE:HARDCODEDPARAMVALUE_TARGET_CRS_9===EPSG:2154
VALUE:HARDCODEDPARAMVALUE_FIELD_NOMINATIM_0===None
ALGORITHM:quickosm:queryfactory
149.0,140.0
None
-1|HARDCODEDPARAMVALUE_FIELD_KEY_0
-1|STRING_INSEE
-1|HARDCODEDPARAMVALUE_FIELD_EXTENT_0
-1|HARDCODEDPARAMVALUE_FIELD_NOMINATIM_0
-1|HARDCODEDPARAMVALUE_FIELD_TIMEOUT_0
ALGORITHM:quickosm:queryoverpassapiwithastring
332.0,198.0
None
-1|HARDCODEDPARAMVALUE_SERVER_1
0|OUTPUT_QUERY
-1|HARDCODEDPARAMVALUE_EXTENT_1
-1|HARDCODEDPARAMVALUE_NOMINATIM_1
None
ALGORITHM:quickosm:ogrdefault
515.0,257.0
None
1|OUTPUT_FILE
-1|HARDCODEDPARAMVALUE_WHITE_LIST_multipolygons_2
-1|HARDCODEDPARAMVALUE_WHITE_LIST_multilinestrings_2
-1|HARDCODEDPARAMVALUE_WHITE_LIST_lines_2
-1|HARDCODEDPARAMVALUE_WHITE_LIST_points_2
commune|886.0,286.0
None
None
None
ALGORITHM:quickosm:getfirstfieldofanattribute
642.0,387.0
None
2|multipolygons_LAYER
-1|HARDCODEDPARAMVALUE_FIELD_3
ALGORITHM:quickosm:queryfactory
805.0,446.0
None
-1|STRING_KEY
-1|STRING_VALUE
-1|HARDCODEDPARAMVALUE_FIELD_EXTENT_4
3|OUTPUT_VALUE
-1|HARDCODEDPARAMVALUE_FIELD_TIMEOUT_4
ALGORITHM:quickosm:queryoverpassapiwithastring
972.0,504.0
None
-1|HARDCODEDPARAMVALUE_SERVER_5
4|OUTPUT_QUERY
-1|HARDCODEDPARAMVALUE_EXTENT_5
-1|HARDCODEDPARAMVALUE_NOMINATIM_5
None
ALGORITHM:quickosm:ogrdefault
1135.0,562.0
None
5|OUTPUT_FILE
-1|HARDCODEDPARAMVALUE_WHITE_LIST_multipolygons_6
-1|HARDCODEDPARAMVALUE_WHITE_LIST_multilinestrings_6
-1|HARDCODEDPARAMVALUE_WHITE_LIST_lines_6
-1|HARDCODEDPARAMVALUE_WHITE_LIST_points_6
None
None
None
None
ALGORITHM:qgis:fixeddistancebuffer
1410.0,502.0
None
9|OUTPUT
-1|NUMBER_BUFFER
-1|HARDCODEDPARAMVALUE_SEGMENTS_7
-1|HARDCODEDPARAMVALUE_DISSOLVE_7
None
ALGORITHM:qgis:clip
1563.0,691.0
None
10|OUTPUT
7|OUTPUT
voirie|1808.0,725.0
ALGORITHM:qgis:reprojectlayer
1164.0,400.0
None
2|multipolygons_LAYER
-1|HARDCODEDPARAMVALUE_TARGET_CRS_9
None
ALGORITHM:qgis:reprojectlayer
1324.0,630.0
None
6|lines_LAYER
-1|HARDCODEDPARAMVALUE_TARGET_CRS_10
None
{
"values": {
"inputs": {
"NUMBER_BUFFER": {
"values": {
"pos": {
"values": {
"y": 40.0,
"x": 759.0
},
"class": "point"
},
"param": {
"values": {
"isAdvanced": false,
"name": "NUMBER_BUFFER",
"min": 0.0,
"default": 500.0,
"max": null,
"value": null,
"hidden": false,
"isInteger": false,
"description": "buffer"
},
"class": "processing.core.parameters.ParameterNumber"
}
},
"class": "processing.modeler.ModelerAlgorithm.ModelerParameter"
},
"STRING_INSEE": {
"values": {
"pos": {
"values": {
"y": 25.0,
"x": 111.0
},
"class": "point"
},
"param": {
"values": {
"isAdvanced": false,
"name": "STRING_INSEE",
"default": "25047",
"value": null,
"multiline": false,
"hidden": false,
"optional": false,
"description": "INSEE"
},
"class": "processing.core.parameters.ParameterString"
}
},
"class": "processing.modeler.ModelerAlgorithm.ModelerParameter"
}
},
"group": "quickosm",
"name": "voirie_insee",
"algs": {
"QUICKOSMOGRDEFAULT_2": {
"values": {
"name": "QUICKOSMOGRDEFAULT_2",
"paramsFolded": true,
"outputs": {},
"pos": {
"values": {
"y": 489.0,
"x": 955.0
},
"class": "point"
},
"outputsFolded": true,
"dependencies": [],
"params": {
"WHITE_LIST_lines": null,
"WHITE_LIST_multilinestrings": null,
"WHITE_LIST_multipolygons": null,
"FILE": {
"values": {
"alg": "QUICKOSMQUERYOVERPASSAPIWITHASTRING_2",
"output": "OUTPUT_FILE"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromOutput"
},
"WHITE_LIST_points": null
},
"active": true,
"consoleName": "quickosm:ogrdefault",
"description": "OGR default"
},
"class": "processing.modeler.ModelerAlgorithm.Algorithm"
},
"QUICKOSMOGRDEFAULT_1": {
"values": {
"name": "QUICKOSMOGRDEFAULT_1",
"paramsFolded": true,
"outputs": {
"multipolygons_LAYER": {
"values": {
"description": "commune",
"pos": {
"values": {
"y": 198.0,
"x": 687.0
},
"class": "point"
}
},
"class": "processing.modeler.ModelerAlgorithm.ModelerOutput"
}
},
"pos": {
"values": {
"y": 208.0,
"x": 385.0
},
"class": "point"
},
"outputsFolded": true,
"dependencies": [],
"params": {
"WHITE_LIST_lines": null,
"WHITE_LIST_multilinestrings": null,
"WHITE_LIST_multipolygons": null,
"FILE": {
"values": {
"alg": "QUICKOSMQUERYOVERPASSAPIWITHASTRING_1",
"output": "OUTPUT_FILE"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromOutput"
},
"WHITE_LIST_points": null
},
"active": true,
"consoleName": "quickosm:ogrdefault",
"description": "OGR default"
},
"class": "processing.modeler.ModelerAlgorithm.Algorithm"
},
"QUICKOSMQUERYFACTORY_1": {
"values": {
"name": "QUICKOSMQUERYFACTORY_1",
"paramsFolded": true,
"outputs": {},
"pos": {
"values": {
"y": 92.0,
"x": 124.0
},
"class": "point"
},
"outputsFolded": true,
"dependencies": [],
"params": {
"FIELD_NOMINATIM": null,
"FIELD_KEY": "ref:INSEE",
"FIELD_TIMEOUT": 25.0,
"FIELD_EXTENT": [
"0,0,0,0"
],
"FIELD_VALUE": {
"values": {
"name": "STRING_INSEE"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromInput"
}
},
"active": true,
"consoleName": "quickosm:queryfactory",
"description": "Query factory"
},
"class": "processing.modeler.ModelerAlgorithm.Algorithm"
},
"QUICKOSMQUERYFACTORY_2": {
"values": {
"name": "QUICKOSMQUERYFACTORY_2",
"paramsFolded": true,
"outputs": {},
"outputsFolded": true,
"pos": {
"values": {
"y": 373.0,
"x": 691.0
},
"class": "point"
},
"dependencies": [],
"params": {
"FIELD_NOMINATIM": {
"values": {
"alg": "QUICKOSMGETFIRSTFIELDOFANATTRIBUTE_1",
"output": "OUTPUT_VALUE"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromOutput"
},
"FIELD_KEY": "highway",
"FIELD_TIMEOUT": 25.0,
"FIELD_EXTENT": [
"0,0,0,0"
],
"FIELD_VALUE": null
},
"active": true,
"consoleName": "quickosm:queryfactory",
"description": "Query factory"
},
"class": "processing.modeler.ModelerAlgorithm.Algorithm"
},
"QUICKOSMGETFIRSTFIELDOFANATTRIBUTE_1": {
"values": {
"name": "QUICKOSMGETFIRSTFIELDOFANATTRIBUTE_1",
"paramsFolded": true,
"outputs": {},
"pos": {
"values": {
"y": 295.0,
"x": 547.0
},
"class": "point"
},
"outputsFolded": true,
"dependencies": [],
"params": {
"FIELD": "osm_id",
"VECTOR_LAYER": {
"values": {
"alg": "QUICKOSMOGRDEFAULT_1",
"output": "multipolygons_LAYER"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromOutput"
}
},
"active": true,
"consoleName": "quickosm:getfirstfieldofanattribute",
"description": "Get first field of an attribute"
},
"class": "processing.modeler.ModelerAlgorithm.Algorithm"
},
"QUICKOSMQUERYOVERPASSAPIWITHASTRING_2": {
"values": {
"name": "QUICKOSMQUERYOVERPASSAPIWITHASTRING_2",
"paramsFolded": true,
"outputs": {},
"pos": {
"values": {
"y": 431.0,
"x": 823.0
},
"class": "point"
},
"outputsFolded": true,
"dependencies": [],
"params": {
"QUERY_STRING": {
"values": {
"alg": "QUICKOSMQUERYFACTORY_2",
"output": "OUTPUT_QUERY"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromOutput"
},
"NOMINATIM": null,
"EXTENT": [
"0,0,0,0"
],
"SERVER": "http://overpass-api.de/api/"
},
"active": true,
"consoleName": "quickosm:queryoverpassapiwithastring",
"description": "Query overpass API with a string"
},
"class": "processing.modeler.ModelerAlgorithm.Algorithm"
},
"QUICKOSMQUERYOVERPASSAPIWITHASTRING_1": {
"values": {
"name": "QUICKOSMQUERYOVERPASSAPIWITHASTRING_1",
"paramsFolded": true,
"outputs": {},
"pos": {
"values": {
"y": 154.0,
"x": 233.0
},
"class": "point"
},
"outputsFolded": true,
"dependencies": [],
"params": {
"QUERY_STRING": {
"values": {
"alg": "QUICKOSMQUERYFACTORY_1",
"output": "OUTPUT_QUERY"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromOutput"
},
"NOMINATIM": null,
"EXTENT": [
"0,0,0,0"
],
"SERVER": "http://overpass-api.de/api/"
},
"active": true,
"consoleName": "quickosm:queryoverpassapiwithastring",
"description": "Query overpass API with a string"
},
"class": "processing.modeler.ModelerAlgorithm.Algorithm"
},
"QGISCLIP_1": {
"values": {
"name": "QGISCLIP_1",
"paramsFolded": true,
"outputs": {
"OUTPUT": {
"values": {
"description": "voirie",
"pos": {
"values": {
"y": 632.0,
"x": 1531.0
},
"class": "point"
}
},
"class": "processing.modeler.ModelerAlgorithm.ModelerOutput"
}
},
"pos": {
"values": {
"y": 605.0,
"x": 1319.0
},
"class": "point"
},
"outputsFolded": true,
"dependencies": [],
"params": {
"INPUT": {
"values": {
"alg": "QGISREPROJECTLAYER_2",
"output": "OUTPUT"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromOutput"
},
"OVERLAY": {
"values": {
"alg": "QGISFIXEDDISTANCEBUFFER_1",
"output": "OUTPUT"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromOutput"
}
},
"active": true,
"consoleName": "qgis:clip",
"description": "Clip"
},
"class": "processing.modeler.ModelerAlgorithm.Algorithm"
},
"QGISREPROJECTLAYER_1": {
"values": {
"name": "QGISREPROJECTLAYER_1",
"paramsFolded": true,
"outputs": {},
"pos": {
"values": {
"y": 276.0,
"x": 818.0
},
"class": "point"
},
"outputsFolded": true,
"dependencies": [],
"params": {
"INPUT": {
"values": {
"alg": "QUICKOSMOGRDEFAULT_1",
"output": "multipolygons_LAYER"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromOutput"
},
"TARGET_CRS": "EPSG:2154"
},
"active": true,
"consoleName": "qgis:reprojectlayer",
"description": "Reproject layer"
},
"class": "processing.modeler.ModelerAlgorithm.Algorithm"
},
"QGISREPROJECTLAYER_2": {
"values": {
"name": "QGISREPROJECTLAYER_2",
"paramsFolded": true,
"outputs": {},
"pos": {
"values": {
"y": 547.0,
"x": 1082.0
},
"class": "point"
},
"outputsFolded": true,
"dependencies": [],
"params": {
"INPUT": {
"values": {
"alg": "QUICKOSMOGRDEFAULT_2",
"output": "lines_LAYER"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromOutput"
},
"TARGET_CRS": "EPSG:2154"
},
"active": true,
"consoleName": "qgis:reprojectlayer",
"description": "Reproject layer"
},
"class": "processing.modeler.ModelerAlgorithm.Algorithm"
},
"QGISFIXEDDISTANCEBUFFER_1": {
"values": {
"name": "QGISFIXEDDISTANCEBUFFER_1",
"paramsFolded": true,
"outputs": {},
"pos": {
"values": {
"y": 431.0,
"x": 1162.0
},
"class": "point"
},
"outputsFolded": true,
"dependencies": [],
"params": {
"INPUT": {
"values": {
"alg": "QGISREPROJECTLAYER_1",
"output": "OUTPUT"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromOutput"
},
"SEGMENTS": "5",
"DISSOLVE": "True",
"DISTANCE": {
"values": {
"name": "NUMBER_BUFFER"
},
"class": "processing.modeler.ModelerAlgorithm.ValueFromInput"
}
},
"active": true,
"consoleName": "qgis:fixeddistancebuffer",
"description": "Fixed distance buffer"
},
"class": "processing.modeler.ModelerAlgorithm.Algorithm"
}
}
},
"class": "processing.modeler.ModelerAlgorithm.ModelerAlgorithm"
}

Loading…
Cancel
Save