Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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))