def analysis_setup(command_line_arguments, hazard, exposure, aggregation=None): """Sets up an analysis object. .. versionadded:: 3.2 :param command_line_arguments: User inputs. :type command_line_arguments: CommandLineArguments :param hazard: Hazard layer :type hazard: QgsLayer :param exposure: Exposure Layer :type exposure: QgsLayer :param aggregation: Aggregation Layer :type aggregation: QgsLayer :raises: Exception """ # IF impact_function_manager = ImpactFunctionManager() impact_function = impact_function_manager.get(command_line_arguments.impact_function) keyword_io = KeywordIO() try: from safe.utilities.analysis import Analysis except ImportError as ie: LOGGER.debug("Import error for Analysis module") print ie.message raise ImportError analysis = Analysis() analysis.impact_function = impact_function analysis.hazard = hazard analysis.exposure = exposure analysis.aggregation = aggregation # analysis.hazard_keyword = keyword_io.read_keywords(hazard) # analysis.exposure_keyword = keyword_io.read_keywords(exposure) analysis.clip_hard = False analysis.show_intermediate_layers = False analysis.run_in_thread_flag = False analysis.map_canvas = CANVAS # QSetting context settings = QSettings() crs = settings.value("inasafe/analysis_extent_crs", "", type=str) analysis.user_extent_crs = QgsCoordinateReferenceSystem(crs) try: analysis.user_extent = QgsRectangle( float(command_line_arguments.extent[0]), float(command_line_arguments.extent[1]), float(command_line_arguments.extent[2]), float(command_line_arguments.extent[3]), ) except AttributeError: print "No extents" pass analysis.setup_analysis() return analysis
def analysis_setup(command_line_arguments, hazard, exposure, aggregation=None): """Sets up an analysis object. .. versionadded:: 3.2 :param command_line_arguments: User inputs. :type command_line_arguments: CommandLineArguments :param hazard: Hazard layer :type hazard: QgsLayer :param exposure: Exposure Layer :type exposure: QgsLayer :param aggregation: Aggregation Layer :type aggregation: QgsLayer :raises: Exception """ # IF impact_function_manager = ImpactFunctionManager() impact_function = impact_function_manager.get( command_line_arguments.impact_function) keyword_io = KeywordIO() try: from safe.utilities.analysis import Analysis except ImportError as ie: LOGGER.debug('Import error for Analysis module') print ie.message raise ImportError analysis = Analysis() analysis.impact_function = impact_function analysis.hazard = hazard analysis.exposure = exposure analysis.aggregation = aggregation # analysis.hazard_keyword = keyword_io.read_keywords(hazard) # analysis.exposure_keyword = keyword_io.read_keywords(exposure) analysis.clip_hard = False analysis.show_intermediate_layers = False analysis.run_in_thread_flag = False analysis.map_canvas = CANVAS # QSetting context settings = QSettings() crs = settings.value('inasafe/analysis_extent_crs', '', type=str) analysis.user_extent_crs = QgsCoordinateReferenceSystem(crs) try: analysis.user_extent = QgsRectangle( float(command_line_arguments.extent[0]), float(command_line_arguments.extent[1]), float(command_line_arguments.extent[2]), float(command_line_arguments.extent[3])) except AttributeError: print "No extents" pass analysis.setup_analysis() return analysis
def analysis_execution(): from safe.test.utilities import get_qgis_app # get_qgis_app must be called before importing Analysis QGIS_APP, CANVAS, IFACE, PARENT = get_qgis_app() from safe.utilities.analysis import Analysis from safe.utilities.keyword_io import KeywordIO analysis = Analysis() arg = AnalysisArguments.read_arguments() register_impact_functions() registry = ImpactFunctionManager().registry function = registry.get_instance(arg.impact_function_name) hazard_layer = safe_to_qgis_layer(read_layer(arg.hazard_filename)) exposure_layer = safe_to_qgis_layer(read_layer(arg.exposure_filename)) if arg.aggregation_filename: aggregation_layer = safe_to_qgis_layer( read_layer(arg.aggregation_filename)) keywords_io = KeywordIO() try: analysis.map_canvas = IFACE.mapCanvas() analysis.hazard_layer = hazard_layer analysis.hazard_keyword = keywords_io.read_keywords(hazard_layer) analysis.exposure_layer = exposure_layer analysis.exposure_keyword = keywords_io.read_keywords(exposure_layer) if aggregation_layer: analysis.aggregation_layer = aggregation_layer analysis.aggregation_keyword = keywords_io.read_keywords( aggregation_layer) analysis.impact_function = function analysis.setup_analysis() print 'Setup analysis done' analysis.run_analysis() print 'Analysis done' except Exception as e: print e.message impact = analysis.impact_layer qgis_impact = safe_to_qgis_layer(impact) generate_styles(impact, qgis_impact) copy_impact_layer(impact, arg.impact_filename)
def analysis_execution(): from safe.test.utilities import get_qgis_app # get_qgis_app must be called before importing Analysis QGIS_APP, CANVAS, IFACE, PARENT = get_qgis_app() from safe.utilities.analysis import Analysis from safe.utilities.keyword_io import KeywordIO analysis = Analysis() arg = AnalysisArguments.read_arguments() register_impact_functions() registry = ImpactFunctionManager().registry function = registry.get_instance(arg.impact_function_name) hazard_layer = safe_to_qgis_layer(read_layer(arg.hazard_filename)) exposure_layer = safe_to_qgis_layer(read_layer(arg.exposure_filename)) if arg.aggregation_filename: aggregation_layer = safe_to_qgis_layer(read_layer( arg.aggregation_filename)) keywords_io = KeywordIO() try: analysis.map_canvas = IFACE.mapCanvas() analysis.hazard_layer = hazard_layer analysis.hazard_keyword = keywords_io.read_keywords(hazard_layer) analysis.exposure_layer = exposure_layer analysis.exposure_keyword = keywords_io.read_keywords(exposure_layer) if aggregation_layer: analysis.aggregation_layer = aggregation_layer analysis.aggregation_keyword = keywords_io.read_keywords( aggregation_layer) analysis.impact_function = function analysis.setup_analysis() print 'Setup analysis done' analysis.run_analysis() print 'Analysis done' except Exception as e: print e.message impact = analysis.impact_layer qgis_impact = safe_to_qgis_layer(impact) generate_styles(impact, qgis_impact) copy_impact_layer(impact, arg.impact_filename)