首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >资源共享符号没有出现在通过独立python脚本导出的地图集中

资源共享符号没有出现在通过独立python脚本导出的地图集中
EN

Stack Overflow用户
提问于 2020-06-25 14:07:54
回答 1查看 171关注 0票数 0

我创建了一个独立的python脚本来导出我的地图集布局。一切都很好,除了我从资源共享插件中使用的SVG符号只是问号,假设它们在定位上有问题。但是,如果我通过startup.py在QGIS3文件夹中运行脚本,所有操作都与预期的一样。我真的很想避免使用这个方法,因为它阻止您在脚本完成之前使用QGIS,这大约需要2个小时。我希望我只需要在我的.bat文件中添加一个简单的环境变量,这样它就可以定位资源共享插件了。提前感谢您的帮助!

.bat文件

代码语言:javascript
复制
@ECHO off

set OSGEO4W_ROOT=C:\OSGeo4W64

call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
call "%OSGEO4W_ROOT%\bin\qt5_env.bat"
call "%OSGEO4W_ROOT%\bin\py3_env.bat"

path %OSGEO4W_ROOT%\apps\qgis\bin;%PATH%
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT%\apps\qgis

set GDAL_FILENAME_IS_UTF8=YES

set VSI_CACHE=TRUE
set VSI_CACHE_SIZE=1000000
set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\qgis\qtplugins;%OSGEO4W_ROOT%\apps\qt5\plugins

SET PYCHARM="C:\Program Files\JetBrains\PyCharm 2019.2.3\bin\pycharm64.exe"

set PYTHONPATH=%OSGEO4W_ROOT%\apps\qgis\python
set PYTHONHOME=%OSGEO4W_ROOT%\apps\Python37
set PYTHONPATH=%OSGEO4W_ROOT%\apps\Python37\lib\site-packages;%PYTHONPATH%

set QT_QPA_PLATFORM_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\Qt5\plugins\platforms
set QGIS_PREFIX_PATH=%OSGEO4W_ROOT%\apps\qgis

start "PyCharm aware of QGIS" /B %PYCHARM% %*

Python脚本

代码语言:javascript
复制
from qgis.core import  QgsApplication, QgsProject, QgsLayoutExporter
import os
import sys

def export_atlas(qgs_project_path, layout_name, outputs_folder):

    # Open existing project
    project = QgsProject.instance()
    project.read(qgs_project_path)

    print(f'Project in "{project.fileName()} loaded successfully')

    # Open prepared layout that as atlas enabled and set
    layout = project.layoutManager().layoutByName(layout_name)

    # Export atlas
    exporter = QgsLayoutExporter(layout)
    settings = QgsLayoutExporter.PdfExportSettings()
    exporter.exportToPdfs(layout.atlas(), outputs_folder, settings)


def run():
    # Start a QGIS application without GUI
    QgsApplication.setPrefixPath(r"C:\\OSGeo4W64\\apps\\qgis", True)
    qgs = QgsApplication([], False)
    qgs.initQgis()
    sys.path.append(r'C:\OSGeo4W64\apps\qgis\python\plugins')

    project_path = [project_path]
    output_folder = [export_location]
    layout_name_portrait = [portrait layout name]
    layout_name_landscape = [landscape laytout name]

    export_atlas(project_path, layout_name_portrait, output_folder)
    export_atlas(project_path, layout_name_landscape, output_folder)

    # Close the QGIS application
    qgs.exitQgis()

run()
EN

回答 1

Stack Overflow用户

发布于 2020-08-04 22:54:44

我猜这可能与设置svg/searchPathsForSVG有关。

代码语言:javascript
复制
QgsSettings().setValue('svg/searchPathsForSVG', <your path>)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62577316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档