def test_print_impact_table(self): """Test print impact table to pdf.""" impact_layer_path = test_data_path( 'impact', 'population_affected_entire_area.shp') layer, _ = load_layer(impact_layer_path) # noinspection PyUnresolvedReferences QgsMapLayerRegistry.instance().addMapLayer(layer) # noinspection PyCallingNonCallable rect = QgsRectangle(106.8194, -6.2108, 106.8201, -6.1964) CANVAS.setExtent(rect) CANVAS.refresh() template = resources_path('qgis-composer-templates', 'inasafe-portrait-a4.qpt') report = ImpactReport(IFACE, template, layer) report.template = template # just to cover set template out_path = unique_filename(prefix='test_print_impact_table', suffix='.pdf', dir=temp_dir('test')) report.print_impact_table(out_path) # Check the file exists message = 'Rendered output does not exist: %s' % out_path self.assertTrue(os.path.exists(out_path), message) # Check the file is not corrupt message = 'The output file %s is corrupt' % out_path out_size = os.stat(out_path).st_size self.assertTrue(out_size > 0, message)
def Xtest_print_impact_table(self): """Test print impact table to pdf.""" impact_layer_path = test_data_path( 'impact', 'population_affected_entire_area.shp') layer, _ = load_layer(impact_layer_path) # noinspection PyUnresolvedReferences,PyArgumentList QgsMapLayerRegistry.instance().addMapLayer(layer) # noinspection PyCallingNonCallable rect = QgsRectangle(106.8194, -6.2108, 106.8201, -6.1964) CANVAS.setExtent(rect) CANVAS.refresh() template = resources_path( 'qgis-composer-templates', 'a4-portrait-blue.qpt') report = ImpactReport(IFACE, template, layer) report.template = template # just to cover set template out_path = unique_filename( prefix='test_print_impact_table', suffix='.pdf', dir=temp_dir('test')) report.print_impact_table(out_path) # Check the file exists message = 'Rendered output does not exist: %s' % out_path self.assertTrue(os.path.exists(out_path), message) # Check the file is not corrupt message = 'The output file %s is corrupt' % out_path out_size = os.stat(out_path).st_size self.assertTrue(out_size > 0, message)
def generate_report(self): # Generate pdf report from impact if not self.impact_exists: # Cannot generate report when no impact layer present return layer_registry = QgsMapLayerRegistry.instance() layer_registry.removeAllMapLayers() impact_qgis_layer = read_qgis_layer(self.impact_layer.filename) layer_registry.addMapLayer(impact_qgis_layer) CANVAS.setExtent(impact_qgis_layer.extent()) CANVAS.refresh() report = ImpactReport(IFACE, template=None, layer=impact_qgis_layer) report.print_map_to_pdf(self.map_report_path) report.print_impact_table(self.table_report_path) layer_registry.removeAllMapLayers()
def build_report(cli_arguments): """Produces pdf products. To be called after shapefile has been written into arguments.output_file. .. versionadded:: 3.2 :param cli_arguments: User inputs. :type cli_arguments: CommandLineArguments :raises: Exception """ try: LOGGER.info('Building a report') basename, ext = os.path.splitext(cli_arguments.output_file) if ext == '.shp': impact_layer = QgsVectorLayer(cli_arguments.output_file, 'Impact Layer', 'ogr') elif ext == '.tif': impact_layer = QgsRasterLayer(cli_arguments.output_file, 'Impact Layer') layer_registry = QgsMapLayerRegistry.instance() layer_registry.removeAllMapLayers() layer_registry.addMapLayer(impact_layer) CANVAS.setExtent(impact_layer.extent()) CANVAS.refresh() report = ImpactReport(IFACE, cli_arguments.report_template, impact_layer) LOGGER.debug(os.path.splitext(cli_arguments.output_file)[0] + '.pdf') map_path = report.print_map_to_pdf( os.path.splitext(cli_arguments.output_file)[0] + '.pdf') print "Impact Map : " + map_path table_path = report.print_impact_table( os.path.splitext(cli_arguments.output_file)[0] + '_table.pdf') print "Impact Summary Table : " + table_path layer_registry.removeAllMapLayers() except Exception as exception: print exception.message print exception.__doc__ raise RuntimeError
def build_report(cli_arguments): """Produces pdf products. To be called after shapefile has been written into arguments.output_file. .. versionadded:: 3.2 :param cli_arguments: User inputs. :type cli_arguments: CommandLineArguments :raises: Exception """ try: LOGGER.info('Building a report') impact_layer = get_layer(cli_arguments.output_file, 'Impact Layer') hazard_layer = get_layer(cli_arguments.hazard, 'Hazard Layer') layer_registry = QgsMapLayerRegistry.instance() layer_registry.removeAllMapLayers() extra_layers = [hazard_layer] layer_registry.addMapLayer(impact_layer) layer_registry.addMapLayers(extra_layers) CANVAS.setExtent(impact_layer.extent()) CANVAS.refresh() report = ImpactReport( IFACE, cli_arguments.report_template, impact_layer, extra_layers=extra_layers) report.extent = CANVAS.fullExtent() LOGGER.debug(os.path.splitext(cli_arguments.output_file)[0] + '.pdf') map_path = report.print_map_to_pdf( os.path.splitext(cli_arguments.output_file)[0] + '.pdf') print "Impact Map : " + map_path table_path = report.print_impact_table( os.path.splitext(cli_arguments.output_file)[0] + '_table.pdf') print "Impact Summary Table : " + table_path layer_registry.removeAllMapLayers() except Exception as exception: print exception.message print exception.__doc__ raise RuntimeError
def build_report(cli_arguments): """Produces pdf products. To be called after shapefile has been written into arguments.output_file. .. versionadded:: 3.2 :param cli_arguments: User inputs. :type cli_arguments: CommandLineArguments :raises: Exception """ try: LOGGER.info("Building a report") basename, ext = os.path.splitext(cli_arguments.output_file) if ext == ".shp": impact_layer = QgsVectorLayer(cli_arguments.output_file, "Impact Layer", "ogr") elif ext == ".tif": impact_layer = QgsRasterLayer(cli_arguments.output_file, "Impact Layer") layer_registry = QgsMapLayerRegistry.instance() layer_registry.removeAllMapLayers() layer_registry.addMapLayer(impact_layer) CANVAS.setExtent(impact_layer.extent()) CANVAS.refresh() report = ImpactReport(IFACE, cli_arguments.report_template, impact_layer) LOGGER.debug(os.path.splitext(cli_arguments.output_file)[0] + ".pdf") map_path = report.print_map_to_pdf(os.path.splitext(cli_arguments.output_file)[0] + ".pdf") print "Impact Map : " + map_path table_path = report.print_impact_table(os.path.splitext(cli_arguments.output_file)[0] + "_table.pdf") print "Impact Summary Table : " + table_path layer_registry.removeAllMapLayers() except Exception as exception: print exception.message print exception.__doc__ raise RuntimeError