スタンドアロンの開発時に時々、(多くの場合)プラグインから既存のプロジェクトをロードする必要がありますか(参照:は:ref: pythonapplications)PythonアプリケーションをQGIS。
クラス:: QgsProject:FUNC:あなたが必要とする現在のQGISアプリケーションにプロジェクトをロードするには、インスタンス() `オブジェクトを、その呼び出し:FUNC:`読んで() `メソッドそれに渡す:クラス: QFileInfo`オブジェクトをそれは、プロジェクトがロードされる場所からのパスが含まれています:
# 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'
FUNC:プロジェクトインスタンスの `書き込み()`メソッドは、プロジェクトにいくつかの変更を加える(例えば、いくつかのレイヤーを追加または削除)して、変更を保存する必要がある場合は、あなたが呼び出すことができます。:FUNC:クラス:: `書き込みは()`メソッドは、オプションの受け入れプロジェクトを保存するパスを指定することができます `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'))
両方:FUNC: 読んで()`と:FUNC: `書き込み() funtionsは、操作が成功したかどうかをチェックするために使用できるブール値を返します。
ノート
クラス::あなたがインスタンス化する必要がキャンバスと、ロードされたプロジェクト同期させるために、QGISスタンドアロンアプリケーションを作成している場合は、以下の例のように `QgsLayerTreeMapCanvasBridge`を:
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'))