はじめに
QGISの使い方についてまとめたページです.内容については整理されておらず雑多である点をご承知おきください…
環境例
- OS: Windows 11 24H2 26100.4061
- QGIS: 3.40.3
- Python: 3.12.0
VSCodeによるQGISにバンドルされたPythonを使用する方法
Pythonインタープリターの設定
- QGISにバンドルされたPythonのパスを確認
- 自分の場合は
C:\Program Files\QGIS 3.40.3\apps\Python312\python3.exeでした - QGISのバージョンによって異なるので,適宜変更してください
- QGISのフォルダの中には複数のPythonがありますが、
binフォルダの中にあるものは使わないでください
- 自分の場合は
- VSCodeを開きます。
Ctrl + Shift + Pでコマンドパレットを開きますPython: Select Interpreterと入力し、クリックしますEnter interpreter path...を選択します- 先ほど確認したQGISにバンドルされたPythonのパスを指定します
Enterを押しますPython 3.12.0 64-bit ('QGIS 3.40.3': venv)のようなものが表示されるので,それを選択します
settings.jsonの設定
Ctrl + Shift + Pでコマンドパレットを開きますPreferences: Open Settings (JSON)と入力し、クリックしますsettings.jsonが開かれるので,以下のように編集します{ "python.analysis.extraPaths": [ "C:/Program Files/QGIS 3.40.3/apps/qgis/python", "C:/Program Files/QGIS 3.40.3/apps/qgis/python/plugins", "C:/Program Files/QGIS 3.40.3/apps/Python312/Lib/site-packages" ], "python.defaultInterpreterPath": "C:/Program Files/QGIS 3.40.3/apps/Python312/python3.exe" }python.analysis.extraPathsの部分は,QGISのバージョンによって異なるので,適宜変更してくださいpython.defaultInterpreterPathの部分は,QGISにバンドルされたPythonのパスを指定してください- 今回であれば上記で確認した
C:\Program Files\QGIS 3.40.3\apps\Python312\python3.exeを指定します
- 今回であれば上記で確認した
- また,
/でパスを区切る必要があります\で区切るとエラーが出ます- 例:
C:\Program Files\QGIS 3.40.3\apps\Python312\python3.exeはC:/Program Files/QGIS 3.40.3/apps/Python312/python3.exeと書き換える必要があります
settings.jsonを保存します
初期化用モジュール (‘qgis_env.py’) の作成
qgis関連のモジュールをインポートするための初期化用モジュールを作成します.ここでは環境変数の設定を行います.
-
qgis_env.pyという名前のファイルを作成し、以下のように記述します。import os import sys # QGISインストールルート(必要に応じて変更) QGIS_ROOT = r"C:\Program Files\QGIS 3.40.3" # パス構成 (適宜変更) qgis_python = os.path.join(QGIS_ROOT, 'apps', 'qgis', 'python') qgis_plugins = os.path.join(qgis_python, 'plugins') qgis_prefix = os.path.join(QGIS_ROOT, 'apps', 'qgis') qt_plugins = os.path.join(QGIS_ROOT, 'apps', 'Qt6', 'plugins') qgis_bin = os.path.join(QGIS_ROOT, 'apps', 'qgis', 'bin') # sys.pathに追加 sys.path.insert(0, qgis_python) sys.path.insert(0, qgis_plugins) # DLLパスを環境変数PATHに追加 os.environ['PATH'] = qgis_bin + os.pathsep + os.environ['PATH'] # QGISランタイムのための環境変数 os.environ['QGIS_PREFIX_PATH'] = qgis_prefix os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = qt_plugins # QGISのimport(この時点でDLLが読めるようになっている必要がある) from qgis.core import QgsApplication def setup_qgis(): qgs = QgsApplication([], False) qgs.initQgis() return qgs- 各パス (
qgis_python,qgis_plugins,qgis_prefix,qt_plugins,qgis_bin) はQGISのインストールパスに基づいています。必要に応じて変更してください。 QGIS_ROOTはQGISのインストールパスを指定します。必要に応じて変更してください。
- 各パス (
qgis_env.pyを保存します-
これが終わったら自分が書いたpythonスクリプトの最初に以下のように書きます
import qgis_env qgs = qgis_env.setup_qgis()例えば以下のように書きます
import qgis_env qgs = qgis_env.setup_qgis() from osgeo import gdal from qgis.core import QgsRasterLayer, QgsProject # 以下はQGISの処理 # ...