def export_atlas(qgs_project_path, layout_name, outputs_folder): # Open existing project project = QgsProject.instance() project.read(qgs_project_path) print('Project in ' + project.fileName() + ' loaded successfully') # Open prepared layout that as atlas enabled and set layout = project.layoutManager().layoutByName(layout_name) myAtlas = layout.atlas() myAtlasMap = myAtlas.layout() # Export atlas exporter = QgsLayoutExporter(layout) settings = QgsLayoutExporter.ImageExportSettings() image_settings = QgsLayoutExporter(myAtlasMap).ImageExportSettings() image_settings.dpi = 300 image_settings.generateWorldFile = 1 #source : https://stackoverflow.com/questions/51161361/how-to-disable-anti-aliasing-in-qgis-export-pyqgis context = QgsLayoutRenderContext(layout) context.setFlag(context.FlagAntialiasing, True) image_settings.flags = context.flags() exporter.exportToImage(myAtlas,outputs_folder, 'tiff', image_settings)
def export_atlas(qgs_project_path, layout_name, filepath): imageExtension = os.path.splitext(filepath)[1] imageExtension = imageExtension.lower() # Open existing project project = QgsProject.instance() print(os.path.abspath(os.path.dirname(qgs_project_path))) os.chdir(os.path.abspath(os.path.dirname(qgs_project_path))) project.read(os.path.abspath(qgs_project_path)) project.readPath(os.path.abspath(os.path.dirname(qgs_project_path))) #print(f'Project in "{project.fileName()} loaded successfully') print('Project in "{fn} loaded successfully'.format(fn=project.fileName())) # Open prepared layout that as atlas enabled and set layout = project.layoutManager().layoutByName(layout_name) # Export atlas exporter = QgsLayoutExporter(layout) settings = QgsLayoutExporter.ImageExportSettings() img_path = os.path.dirname(filepath) filename = os.path.basename(filepath) myAtlas = layout.atlas() myAtlasMap = myAtlas.layout() myAtlas.setFilenameExpression(img_path) pdf_settings = QgsLayoutExporter(myAtlasMap).PdfExportSettings() image_settings = QgsLayoutExporter(myAtlasMap).ImageExportSettings() image_settings.dpi = 96 svg_settings = QgsLayoutExporter(myAtlasMap).SvgExportSettings( ) #https://qgis.org/api/structQgsLayoutExporter_1_1SvgExportSettings.html print('layout_name= {layout_name} '.format(layout_name=layout_name)) print('try export to {img_path} '.format(img_path=img_path)) if imageExtension == '.jpg': if os.path.isfile(os.path.join(img_path, 'output_0.jpg')): os.unlink(os.path.join(img_path, 'output_0.jpg')) for layout in QgsProject.instance().layoutManager().printLayouts(): if myAtlas.enabled(): print('signal') result, error = QgsLayoutExporter.exportToImage( myAtlas, baseFilePath=img_path + '//', extension=imageExtension, settings=image_settings) if not result == QgsLayoutExporter.Success: print(error) os.rename(os.path.join(img_path, 'output_0.jpg'), os.path.join(img_path, filename)) if imageExtension == '.png': if os.path.isfile(os.path.join(img_path, 'output_0.png')): os.unlink(os.path.join(img_path, 'output_0.png')) for layout in QgsProject.instance().layoutManager().printLayouts(): if myAtlas.enabled(): print('signal') result, error = QgsLayoutExporter.exportToImage( myAtlas, baseFilePath=img_path + '//', extension=imageExtension, settings=image_settings) if not result == QgsLayoutExporter.Success: print(error) os.rename(os.path.join(img_path, 'output_0.png'), os.path.join(img_path, filename)) if imageExtension == '.pdf': #if os.path.isfile(os.path.join(img_path,'output_0.jpg')): # os.unlink(os.path.join(img_path,'output_0.jpg')) for layout in QgsProject.instance().layoutManager().printLayouts(): if myAtlas.enabled(): result, error = QgsLayoutExporter.exportToPdf( myAtlas, img_path + '//output_0.pdf', settings=pdf_settings) if not result == QgsLayoutExporter.Success: print(error) os.rename(os.path.join(img_path, 'output_0.pdf'), os.path.join(img_path, filename)) if imageExtension == '.svg': for layout in QgsProject.instance().layoutManager().printLayouts(): if myAtlas.enabled(): result, error = QgsLayoutExporter.exportToSvg( myAtlas, img_path + '//output_0.svg', settings=svg_settings) if not result == QgsLayoutExporter.Success: print(error) os.rename(os.path.join(img_path, 'output_0.svg'), os.path.join(img_path, filename))