때때로 플러그인에서, 그리고 (더 자주) 독립 설치형 QGIS 파이썬 응용 프로그램을 개발할 때, 기존 프로젝트를 불러와야 할 경우가 있습니다. ( 파이썬 응용 프로그램 참조)
To load a project into the current QGIS application you need a QgsProject instance() object and call its read() method passing to it a QFileInfo object that contains the path from where the project will be loaded:
# If you are not inside a QGIS console you first need to import
# qgis and PyQt4 classes you will use in this script as shown below:
from qgis.core import QgsProject
from PyQt4.QtCore import QFileInfo
# Get the project instance
project = QgsProject.instance()
# Print the current project file name (might be empty in case no projects have been loaded)
print project.fileName
u'/home/user/projects/my_qgis_project.qgs'
# Load another project
project.read(QFileInfo('/home/user/projects/my_other_qgis_project.qgs'))
print project.fileName
u'/home/user/projects/my_other_qgis_project.qgs'
프로젝트에 몇 가지 수정을 (예를 들어 레이어를 추가하거나 삭제) 하고 변경한 내용을 저장해야 할 경우, 프로젝트 인스턴트의 write() 메소드를 호출할 수 있습니다. write() 메소드는 사용자가 프로젝트를 저장할 경로를 설정할 수 있게 해주는 선택적인 QFileInfo 클래스도 받을 수 있습니다.
# Save the project to the same
project.write()
# ... or to a new file
project.write(QFileInfo('/home/user/projects/my_new_qgis_project.qgs'))
read() 및 write() 두 함수 모두 작업 수행이 성공적이었는지 확인할 수 있는 불(boolean) 값을 반환합니다.
주석
If you are writing a QGIS standalone application, in order to synchronise the loaded project with the canvas you need to instanciate a QgsLayerTreeMapCanvasBridge as in the example below:
bridge = QgsLayerTreeMapCanvasBridge( \
QgsProject.instance().layerTreeRoot(), canvas)
# Now you can safely load your project and see it in the canvas
project.read(QFileInfo('/home/user/projects/my_other_qgis_project.qgs'))