From 5b0895e13514b1af056d4fcbe99faf68b94cdf44 Mon Sep 17 00:00:00 2001 From: Emanuele Gissi Date: Thu, 17 Aug 2023 17:07:52 +0200 Subject: [PATCH] Adding back fire_layer param, fix WindFile param --- qgis2fds_export_algo.py | 6 ++++-- qgis2fds_params.py | 47 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/qgis2fds_export_algo.py b/qgis2fds_export_algo.py index c714d53..b964945 100644 --- a/qgis2fds_export_algo.py +++ b/qgis2fds_export_algo.py @@ -56,6 +56,7 @@ def initAlgorithm(self, config=None): DEMLayerParam.set(**kwargs) LanduseLayerParam.set(**kwargs) LanduseTypeFilepathParam.set(**kwargs) + FireLayer.set(**kwargs) TextFilepathParam.set(**kwargs) TexLayerParam.set(**kwargs) TexPixelSizeParam.set(**kwargs) @@ -64,7 +65,7 @@ def initAlgorithm(self, config=None): ExportOBSTParam.set(**kwargs) StartTimeParam.set(**kwargs) EndTimeParam.set(**kwargs) - wind_filepath = WindFilepathParam.set(**kwargs) + WindFilepathParam.set(**kwargs) # Define destination layers @@ -123,6 +124,7 @@ def processAlgorithm(self, parameters, context, model_feedback): dem_layer = DEMLayerParam.get(**kwargs) landuse_layer = LanduseLayerParam.get(**kwargs) landuse_type_filepath = LanduseTypeFilepathParam.get(**kwargs) + fire_layer = FireLayer.get(**kwargs) text_filepath = TextFilepathParam.get(**kwargs) tex_layer = TexLayerParam.get(**kwargs) tex_pixel_size = TexPixelSizeParam.get(**kwargs) @@ -514,7 +516,7 @@ def processAlgorithm(self, parameters, context, model_feedback): utm_origin=utm_origin, landuse_layer=landuse_layer, landuse_type=landuse_type, - fire_layer=None, + fire_layer=fire_layer, path=fds_path, name=chid, ) diff --git a/qgis2fds_params.py b/qgis2fds_params.py index 9fd36be..abcdce8 100644 --- a/qgis2fds_params.py +++ b/qgis2fds_params.py @@ -287,6 +287,45 @@ def get(cls, algo, parameters, context, feedback, project): return value +class FireLayer: + label = "fire_layer" + desc = "Fire layer (if not set, fire is not exported)" + default = None + optional = True + + @classmethod + def set(cls, algo, config, project): + defaultValue, _ = project.readEntry("qgis2fds", cls.label, cls.default) + param = QgsProcessingParameterVectorLayer( + cls.label, + cls.desc, + defaultValue=defaultValue, + optional=cls.optional, + ) + algo.addParameter(param) + + @classmethod + def get(cls, algo, parameters, context, feedback, project): + value = None + if parameters.get(cls.label): + value = algo.parameterAsVectorLayer(parameters, cls.label, context) + if value: + # Check local + url = value.source() + if not os.path.isfile(url): + raise QgsProcessingException( + "Fire layer data is not saved locally, cannot proceed." + ) + # Check valid + if not value.crs().isValid(): + raise QgsProcessingException( + f"Fire layer CRS <{value.crs().description()}> not valid, cannot proceed." + ) + project.writeEntry("qgis2fds", cls.label, parameters.get(cls.label)) # protect + feedback.setProgressText(f"{cls.desc}: <{value}>") + return value + + class TextFilepathParam: label = "text_filepath" desc = "Free text file" @@ -477,7 +516,7 @@ def get(cls, algo, parameters, context, feedback, project): class StartTimeParam: label = "t_begin" - desc = "FDS start time" + desc = "FDS start time" # FIXME default = 0.0 optional = True @@ -499,10 +538,11 @@ def get(cls, algo, parameters, context, feedback, project): project.writeEntry("qgis2fds", cls.label, value) feedback.setProgressText(f"{cls.desc}: <{value}>") return value - + + class EndTimeParam: label = "t_end" - desc = "FDS end time" + desc = "FDS end time" # FIXME default = 0.0 optional = True @@ -525,6 +565,7 @@ def get(cls, algo, parameters, context, feedback, project): feedback.setProgressText(f"{cls.desc}: <{value}>") return value + class WindFilepathParam: label = "wind_filepath" desc = "Wind text file"