Created
August 8, 2023 21:25
-
-
Save kauevestena/8094a17abf511eb7cea4493db431dfa8 to your computer and use it in GitHub Desktop.
QGIS Model Builder - Python Conversion not generating unique dict keys, version 3.32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE model> | |
<Option type="Map"> | |
<Option type="Map" name="children"> | |
<Option type="Map" name="native:creategrid_1"> | |
<Option type="bool" value="true" name="active"/> | |
<Option name="alg_config"/> | |
<Option type="QString" value="native:creategrid" name="alg_id"/> | |
<Option type="QString" value="" name="color"/> | |
<Option type="Map" name="comment"> | |
<Option type="QString" value="" name="color"/> | |
<Option type="QString" value="" name="component_description"/> | |
<Option type="double" value="60" name="component_height"/> | |
<Option type="double" value="320" name="component_pos_x"/> | |
<Option type="double" value="115" name="component_pos_y"/> | |
<Option type="double" value="100" name="component_width"/> | |
<Option type="bool" value="true" name="outputs_collapsed"/> | |
<Option type="bool" value="true" name="parameters_collapsed"/> | |
</Option> | |
<Option type="QString" value="Create grid" name="component_description"/> | |
<Option type="double" value="30" name="component_height"/> | |
<Option type="double" value="191" name="component_pos_x"/> | |
<Option type="double" value="165" name="component_pos_y"/> | |
<Option type="double" value="200" name="component_width"/> | |
<Option name="dependencies"/> | |
<Option type="QString" value="native:creategrid_1" name="id"/> | |
<Option name="outputs"/> | |
<Option type="bool" value="true" name="outputs_collapsed"/> | |
<Option type="bool" value="true" name="parameters_collapsed"/> | |
<Option type="Map" name="params"> | |
<Option type="List" name="CRS"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="QgsCoordinateReferenceSystem" name="static_value"> | |
<spatialrefsys nativeFormat="Wkt"> | |
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt> | |
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4> | |
<srsid>3857</srsid> | |
<srid>3857</srid> | |
<authid>EPSG:3857</authid> | |
<description>WGS 84 / Pseudo-Mercator</description> | |
<projectionacronym>merc</projectionacronym> | |
<ellipsoidacronym>EPSG:7030</ellipsoidacronym> | |
<geographicflag>false</geographicflag> | |
</spatialrefsys> | |
</Option> | |
</Option> | |
</Option> | |
<Option type="List" name="EXTENT"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="QString" value="-5480642.350500000,-5480470.144600000,-2931638.432600000,-2931487.092100000 [EPSG:3857]" name="static_value"/> | |
</Option> | |
</Option> | |
<Option type="List" name="HOVERLAY"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="double" value="0" name="static_value"/> | |
</Option> | |
</Option> | |
<Option type="List" name="HSPACING"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="double" value="5" name="static_value"/> | |
</Option> | |
</Option> | |
<Option type="List" name="TYPE"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="int" value="0" name="static_value"/> | |
</Option> | |
</Option> | |
<Option type="List" name="VOVERLAY"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="double" value="0" name="static_value"/> | |
</Option> | |
</Option> | |
<Option type="List" name="VSPACING"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="double" value="5" name="static_value"/> | |
</Option> | |
</Option> | |
</Option> | |
</Option> | |
<Option type="Map" name="native:creategrid_2"> | |
<Option type="bool" value="true" name="active"/> | |
<Option name="alg_config"/> | |
<Option type="QString" value="native:creategrid" name="alg_id"/> | |
<Option type="QString" value="" name="color"/> | |
<Option type="Map" name="comment"> | |
<Option type="QString" value="" name="color"/> | |
<Option type="QString" value="" name="component_description"/> | |
<Option type="double" value="60" name="component_height"/> | |
<Option type="double" value="439" name="component_pos_x"/> | |
<Option type="double" value="145" name="component_pos_y"/> | |
<Option type="double" value="100" name="component_width"/> | |
<Option type="bool" value="true" name="outputs_collapsed"/> | |
<Option type="bool" value="true" name="parameters_collapsed"/> | |
</Option> | |
<Option type="QString" value="Create grid" name="component_description"/> | |
<Option type="double" value="30" name="component_height"/> | |
<Option type="double" value="511" name="component_pos_x"/> | |
<Option type="double" value="168" name="component_pos_y"/> | |
<Option type="double" value="200" name="component_width"/> | |
<Option name="dependencies"/> | |
<Option type="QString" value="native:creategrid_2" name="id"/> | |
<Option name="outputs"/> | |
<Option type="bool" value="true" name="outputs_collapsed"/> | |
<Option type="bool" value="true" name="parameters_collapsed"/> | |
<Option type="Map" name="params"> | |
<Option type="List" name="CRS"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="QgsCoordinateReferenceSystem" name="static_value"> | |
<spatialrefsys nativeFormat="Wkt"> | |
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt> | |
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4> | |
<srsid>3857</srsid> | |
<srid>3857</srid> | |
<authid>EPSG:3857</authid> | |
<description>WGS 84 / Pseudo-Mercator</description> | |
<projectionacronym>merc</projectionacronym> | |
<ellipsoidacronym>EPSG:7030</ellipsoidacronym> | |
<geographicflag>false</geographicflag> | |
</spatialrefsys> | |
</Option> | |
</Option> | |
</Option> | |
<Option type="List" name="EXTENT"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="QString" value="-5480642.350500000,-5480470.144600000,-2931638.432600000,-2931487.092100000 [EPSG:3857]" name="static_value"/> | |
</Option> | |
</Option> | |
<Option type="List" name="HOVERLAY"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="double" value="0" name="static_value"/> | |
</Option> | |
</Option> | |
<Option type="List" name="HSPACING"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="double" value="17" name="static_value"/> | |
</Option> | |
</Option> | |
<Option type="List" name="TYPE"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="int" value="0" name="static_value"/> | |
</Option> | |
</Option> | |
<Option type="List" name="VOVERLAY"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="double" value="0" name="static_value"/> | |
</Option> | |
</Option> | |
<Option type="List" name="VSPACING"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="double" value="2" name="static_value"/> | |
</Option> | |
</Option> | |
</Option> | |
</Option> | |
<Option type="Map" name="native:mergevectorlayers_1"> | |
<Option type="bool" value="true" name="active"/> | |
<Option name="alg_config"/> | |
<Option type="QString" value="native:mergevectorlayers" name="alg_id"/> | |
<Option type="QString" value="" name="color"/> | |
<Option type="Map" name="comment"> | |
<Option type="QString" value="" name="color"/> | |
<Option type="QString" value="" name="component_description"/> | |
<Option type="double" value="60" name="component_height"/> | |
<Option type="double" value="931" name="component_pos_x"/> | |
<Option type="double" value="223" name="component_pos_y"/> | |
<Option type="double" value="100" name="component_width"/> | |
<Option type="bool" value="true" name="outputs_collapsed"/> | |
<Option type="bool" value="true" name="parameters_collapsed"/> | |
</Option> | |
<Option type="QString" value="Merge vector layers" name="component_description"/> | |
<Option type="double" value="30" name="component_height"/> | |
<Option type="double" value="345" name="component_pos_x"/> | |
<Option type="double" value="275" name="component_pos_y"/> | |
<Option type="double" value="200" name="component_width"/> | |
<Option name="dependencies"/> | |
<Option type="QString" value="native:mergevectorlayers_1" name="id"/> | |
<Option type="Map" name="outputs"> | |
<Option type="Map" name="MERGED"> | |
<Option type="QString" value="native:mergevectorlayers_1" name="child_id"/> | |
<Option type="QString" value="" name="color"/> | |
<Option type="Map" name="comment"> | |
<Option type="QString" value="" name="color"/> | |
<Option type="QString" value="" name="component_description"/> | |
<Option type="double" value="60" name="component_height"/> | |
<Option type="double" value="0" name="component_pos_x"/> | |
<Option type="double" value="0" name="component_pos_y"/> | |
<Option type="double" value="100" name="component_width"/> | |
<Option type="bool" value="true" name="outputs_collapsed"/> | |
<Option type="bool" value="true" name="parameters_collapsed"/> | |
</Option> | |
<Option type="QString" value="MERGED" name="component_description"/> | |
<Option type="double" value="30" name="component_height"/> | |
<Option type="double" value="350" name="component_pos_x"/> | |
<Option type="double" value="378" name="component_pos_y"/> | |
<Option type="double" value="200" name="component_width"/> | |
<Option type="invalid" name="default_value"/> | |
<Option type="bool" value="false" name="mandatory"/> | |
<Option type="QString" value="MERGED" name="name"/> | |
<Option type="QString" value="OUTPUT" name="output_name"/> | |
<Option type="bool" value="true" name="outputs_collapsed"/> | |
<Option type="bool" value="true" name="parameters_collapsed"/> | |
</Option> | |
</Option> | |
<Option type="bool" value="true" name="outputs_collapsed"/> | |
<Option type="bool" value="true" name="parameters_collapsed"/> | |
<Option type="Map" name="params"> | |
<Option type="List" name="CRS"> | |
<Option type="Map"> | |
<Option type="int" value="2" name="source"/> | |
<Option type="QgsCoordinateReferenceSystem" name="static_value"> | |
<spatialrefsys nativeFormat="Wkt"> | |
<wkt>PROJCRS["WGS 84 / Pseudo-Mercator",BASEGEOGCRS["WGS 84",ENSEMBLE["World Geodetic System 1984 ensemble",MEMBER["World Geodetic System 1984 (Transit)"],MEMBER["World Geodetic System 1984 (G730)"],MEMBER["World Geodetic System 1984 (G873)"],MEMBER["World Geodetic System 1984 (G1150)"],MEMBER["World Geodetic System 1984 (G1674)"],MEMBER["World Geodetic System 1984 (G1762)"],MEMBER["World Geodetic System 1984 (G2139)"],ELLIPSOID["WGS 84",6378137,298.257223563,LENGTHUNIT["metre",1]],ENSEMBLEACCURACY[2.0]],PRIMEM["Greenwich",0,ANGLEUNIT["degree",0.0174532925199433]],ID["EPSG",4326]],CONVERSION["Popular Visualisation Pseudo-Mercator",METHOD["Popular Visualisation Pseudo Mercator",ID["EPSG",1024]],PARAMETER["Latitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8801]],PARAMETER["Longitude of natural origin",0,ANGLEUNIT["degree",0.0174532925199433],ID["EPSG",8802]],PARAMETER["False easting",0,LENGTHUNIT["metre",1],ID["EPSG",8806]],PARAMETER["False northing",0,LENGTHUNIT["metre",1],ID["EPSG",8807]]],CS[Cartesian,2],AXIS["easting (X)",east,ORDER[1],LENGTHUNIT["metre",1]],AXIS["northing (Y)",north,ORDER[2],LENGTHUNIT["metre",1]],USAGE[SCOPE["Web mapping and visualisation."],AREA["World between 85.06°S and 85.06°N."],BBOX[-85.06,-180,85.06,180]],ID["EPSG",3857]]</wkt> | |
<proj4>+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs</proj4> | |
<srsid>3857</srsid> | |
<srid>3857</srid> | |
<authid>EPSG:3857</authid> | |
<description>WGS 84 / Pseudo-Mercator</description> | |
<projectionacronym>merc</projectionacronym> | |
<ellipsoidacronym>EPSG:7030</ellipsoidacronym> | |
<geographicflag>false</geographicflag> | |
</spatialrefsys> | |
</Option> | |
</Option> | |
</Option> | |
<Option type="List" name="LAYERS"> | |
<Option type="Map"> | |
<Option type="QString" value="native:creategrid_1" name="child_id"/> | |
<Option type="QString" value="OUTPUT" name="output_name"/> | |
<Option type="int" value="1" name="source"/> | |
</Option> | |
<Option type="Map"> | |
<Option type="QString" value="native:creategrid_2" name="child_id"/> | |
<Option type="QString" value="OUTPUT" name="output_name"/> | |
<Option type="int" value="1" name="source"/> | |
</Option> | |
</Option> | |
</Option> | |
</Option> | |
</Option> | |
<Option type="Map" name="designerParameterValues"> | |
<Option type="QgsProcessingOutputLayerDefinition" name="merged"> | |
<Option type="Map"> | |
<Option type="Map" name="create_options"> | |
<Option type="QString" value="UTF-8" name="fileEncoding"/> | |
</Option> | |
<Option type="Map" name="sink"> | |
<Option type="bool" value="true" name="active"/> | |
<Option type="int" value="1" name="type"/> | |
<Option type="QString" value="TEMPORARY_OUTPUT" name="val"/> | |
</Option> | |
</Option> | |
</Option> | |
</Option> | |
<Option name="groupBoxes"/> | |
<Option name="help"/> | |
<Option type="QString" value="Version2" name="internal_version"/> | |
<Option name="modelVariables"/> | |
<Option type="QString" value="" name="model_group"/> | |
<Option type="QString" value="model" name="model_name"/> | |
<Option type="QString" value="" name="outputGroup"/> | |
<Option name="outputOrder"/> | |
<Option type="Map" name="parameterDefinitions"> | |
<Option type="Map" name="merged"> | |
<Option type="bool" value="true" name="create_by_default"/> | |
<Option type="int" value="-1" name="data_type"/> | |
<Option type="invalid" name="default"/> | |
<Option type="invalid" name="defaultGui"/> | |
<Option type="QString" value="MERGED" name="description"/> | |
<Option type="int" value="0" name="flags"/> | |
<Option type="QString" value="" name="help"/> | |
<Option type="Map" name="metadata"> | |
<Option type="QString" value="native:mergevectorlayers_1" name="_modelChildId"/> | |
<Option type="QString" value="MERGED" name="_modelChildOutputName"/> | |
<Option type="QString" value="native" name="_modelChildProvider"/> | |
</Option> | |
<Option type="QString" value="merged" name="name"/> | |
<Option type="QString" value="sink" name="parameter_type"/> | |
<Option type="bool" value="false" name="supports_append"/> | |
<Option type="bool" value="true" name="supports_non_file_outputs"/> | |
</Option> | |
</Option> | |
<Option name="parameterOrder"/> | |
<Option name="parameters"/> | |
</Option> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Model exported as python. | |
Name : model | |
Group : | |
With QGIS : 33201 | |
""" | |
from qgis.core import QgsProcessing | |
from qgis.core import QgsProcessingAlgorithm | |
from qgis.core import QgsProcessingMultiStepFeedback | |
from qgis.core import QgsProcessingParameterFeatureSink | |
from qgis.core import QgsCoordinateReferenceSystem | |
import processing | |
class Model(QgsProcessingAlgorithm): | |
def initAlgorithm(self, config=None): | |
self.addParameter(QgsProcessingParameterFeatureSink('Merged', 'MERGED', type=QgsProcessing.TypeVectorAnyGeometry, createByDefault=True, defaultValue=None)) | |
def processAlgorithm(self, parameters, context, model_feedback): | |
# Use a multi-step feedback, so that individual child algorithm progress reports are adjusted for the | |
# overall progress through the model | |
feedback = QgsProcessingMultiStepFeedback(3, model_feedback) | |
results = {} | |
outputs = {} | |
# Create grid | |
alg_params = { | |
'CRS': QgsCoordinateReferenceSystem('EPSG:3857'), | |
'EXTENT': '-5480642.350500000,-5480470.144600000,-2931638.432600000,-2931487.092100000 [EPSG:3857]', | |
'HOVERLAY': 0, | |
'HSPACING': 17, | |
'TYPE': 0, # Point | |
'VOVERLAY': 0, | |
'VSPACING': 2, | |
'OUTPUT': QgsProcessing.TEMPORARY_OUTPUT | |
} | |
outputs['CreateGrid'] = processing.run('native:creategrid', alg_params, context=context, feedback=feedback, is_child_algorithm=True) | |
feedback.setCurrentStep(1) | |
if feedback.isCanceled(): | |
return {} | |
# Create grid | |
alg_params = { | |
'CRS': QgsCoordinateReferenceSystem('EPSG:3857'), | |
'EXTENT': '-5480642.350500000,-5480470.144600000,-2931638.432600000,-2931487.092100000 [EPSG:3857]', | |
'HOVERLAY': 0, | |
'HSPACING': 5, | |
'TYPE': 0, # Point | |
'VOVERLAY': 0, | |
'VSPACING': 5, | |
'OUTPUT': QgsProcessing.TEMPORARY_OUTPUT | |
} | |
outputs['CreateGrid'] = processing.run('native:creategrid', alg_params, context=context, feedback=feedback, is_child_algorithm=True) | |
feedback.setCurrentStep(2) | |
if feedback.isCanceled(): | |
return {} | |
# Merge vector layers | |
alg_params = { | |
'CRS': QgsCoordinateReferenceSystem('EPSG:3857'), | |
'LAYERS': [outputs['CreateGrid']['OUTPUT'],outputs['CreateGrid']['OUTPUT']], | |
'OUTPUT': parameters['Merged'] | |
} | |
outputs['MergeVectorLayers'] = processing.run('native:mergevectorlayers', alg_params, context=context, feedback=feedback, is_child_algorithm=True) | |
results['Merged'] = outputs['MergeVectorLayers']['OUTPUT'] | |
return results | |
def name(self): | |
return 'model' | |
def displayName(self): | |
return 'model' | |
def group(self): | |
return '' | |
def groupId(self): | |
return '' | |
def createInstance(self): | |
return Model() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment