Skip to the content.

はじめに

QGISの使い方についてまとめたページです.内容については整理されておらず雑多である点をご承知おきください…

環境例

VSCodeによるQGISにバンドルされたPythonを使用する方法

Pythonインタープリターの設定

  1. QGISにバンドルされたPythonのパスを確認
    • 自分の場合はC:\Program Files\QGIS 3.40.3\apps\Python312\python3.exeでした
    • QGISのバージョンによって異なるので,適宜変更してください
    • QGISのフォルダの中には複数のPythonがありますが、binフォルダの中にあるものは使わないでください
  2. 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の設定

  1. Ctrl + Shift + Pでコマンドパレットを開きます
  2. Preferences: Open Settings (JSON)と入力し、クリックします
  3. 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.exeC:/Program Files/QGIS 3.40.3/apps/Python312/python3.exeと書き換える必要があります
  4. settings.jsonを保存します

初期化用モジュール (‘qgis_env.py’) の作成

qgis関連のモジュールをインポートするための初期化用モジュールを作成します.ここでは環境変数の設定を行います.

  1. 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のインストールパスを指定します。必要に応じて変更してください。
  2. qgis_env.pyを保存します
  3. これが終わったら自分が書いた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の処理
     # ...