inasafe/inasafe

inasafe 5 won't run in qgis3.x

husnimubarok opened this issue · 3 comments

Problem

inasafe run resulting error "TypeError"

In file "C:/Users/husnix/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\inasafe\safe\impact_function\impact_function.py", line 1449, in run self._run()
In file "C:/Users/husnix/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\inasafe\safe\utilities\profiling.py", line 126, in with_profiling ret = fn(*args, **kwargs)
In file "C:/Users/husnix/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\inasafe\safe\impact_function\impact_function.py", line 1626, in _run self.pre_process()
In file "C:/Users/husnix/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\inasafe\safe\utilities\profiling.py", line 126, in with_profiling ret = fn(*args, **kwargs)
In file "C:/Users/husnix/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\inasafe\safe\impact_function\impact_function.py", line 1889, in pre_process layer = pre_processor['process']['function'](self)
In file "C:/Users/husnix/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\inasafe\safe\processors\pre_processors.py", line 115, in earthquake_contour_preprocessor contour_path = create_smooth_contour(impact_function.hazard)
In file "C:/Users/husnix/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\inasafe\safe\gis\raster\contour.py", line 272, in create_smooth_contour active_band=active_band
In file "C:/Users/husnix/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\inasafe\safe\gis\raster\contour.py", line 426, in shakemap_contour set_contour_properties(output_file_path)
In file "C:/Users/husnix/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\inasafe\safe\gis\raster\contour.py", line 458, in set_contour_properties line = feature.geometry().asPolyline()

Expected Behaviour

With the same dataset, inasafe 4.3.4 and qgis 2.18 inasafe analysis working without problem

Environment

  • InaSAFE : 5

  • QGIS : 3.4 and 3.8

  • OS : Win 10 and Ubuntu 18.04

  • Data used : Pidi Jaya Earthquake

    • Exposure : Pidie_Jaya_population_inaRISK_WGS84.tif
    • Hazard : Pidie_Jaya_Earthquake_WGS84.tif
    • Aggregation :Pidie_Jaya_Subdistrict_BPS_WGS84.shp

Pidie Jaya.zip

I will look into it mas @husnimubarok

Problem with multiline geometry conversion.
Full stack trace:

              File "/Users/lucernae/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/inasafe/safe/gui/widgets/dock.py", line 1337, in accept
              status, message = self.impact_function.run()
              File "/Users/lucernae/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/inasafe/safe/impact_function/impact_function.py", line 1449, in run
              self._run()
              File "/Users/lucernae/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/inasafe/safe/utilities/profiling.py", line 126, in with_profiling
              ret = fn(*args, **kwargs)
              File "/Users/lucernae/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/inasafe/safe/impact_function/impact_function.py", line 1626, in _run
              self.pre_process()
              File "/Users/lucernae/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/inasafe/safe/utilities/profiling.py", line 126, in with_profiling
              ret = fn(*args, **kwargs)
              File "/Users/lucernae/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/inasafe/safe/impact_function/impact_function.py", line 1889, in pre_process
              layer = pre_processor['process']['function'](self)
              File "/Users/lucernae/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/inasafe/safe/processors/pre_processors.py", line 115, in earthquake_contour_preprocessor
              contour_path = create_smooth_contour(impact_function.hazard)
              File "/Users/lucernae/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/inasafe/safe/gis/raster/contour.py", line 272, in create_smooth_contour
              active_band=active_band
              File "/Users/lucernae/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/inasafe/safe/gis/raster/contour.py", line 426, in shakemap_contour
              set_contour_properties(output_file_path)
              File "/Users/lucernae/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/inasafe/safe/gis/raster/contour.py", line 458, in set_contour_properties
              line = feature.geometry().asPolyline()
             TypeError: MultiLineString geometry cannot be converted to a polyline. Only single line or curve types are permitted.
             
             During handling of the above exception, another exception occurred:
             
             Traceback (most recent call last):
              File "/Users/lucernae/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/inasafe/safe/gui/widgets/dock.py", line 1343, in accept
              add_debug_layers_to_canvas(self.impact_function)
              File "/Users/lucernae/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/inasafe/safe/gui/analysis_utilities.py", line 93, in add_debug_layers_to_canvas
              hazard_keywords = impact_function.provenance['hazard_keywords']
             KeyError: 'hazard_keywords'

I think we can call this fixed.