QGISに付属のPython環境でのエラーと対処

QGIS3.6をインストールした環境でPythonプログラミングにあたり、幾つかハマったエラーがありますので、対処法をメモしておきます。


pipを実行すると「unable to load the file system codec」とエラーが出力される

f:id:Chiakikun:20190502133352p:plain

pipを実行すると「unable to load the file system codec」とエラーが出力された場合は...

 

f:id:Chiakikun:20190502133547p:plain

pipコマンドをアップグレードします。powershellを管理者権限で起動して、次のコマンドを実行します。

python -m pip install --upgrade pip

 

f:id:Chiakikun:20190502133705p:plain

pipをアップグレードした後は、エラーが出力されなくなります。

 


matplotlibをインポートしようとすると「ModuleNotFoundError: No module named 'tkinter'」とエラーが出力される

f:id:Chiakikun:20190502180859p:plain

pythonで次のコマンドを実行すると「ModuleNotFoundError: No module named 'tkinter'」というエラーが出力されます。

import matplotlib.pyplot as plt

f:id:Chiakikun:20190502181110p:plain

Python3.7.0(インストールされているQGISに付属のPythonと同じバージョン)のインストーラーを実行します。オプションのチェックは外して、『Customize installation』を選択してください。

f:id:Chiakikun:20190502181408p:plain

『tcl/tk and IDLE』だけチェックしてNextボタンを押下してください。

f:id:Chiakikun:20190502181515p:plain

オプションは全部外してください。インストール先に指定するパスは、QGISPythonとは被らないようにして下さい。 インストールが完了したら、下記のファイルを取り出して、「C:\Program Files\QGIS 3.6\apps\Python37」にコピーして下さい。

------------------------------------------------------------------------------

DLLs\_tkinter.pyd → C:\Program Files\QGIS 3.6\apps\Python37\DLLs
DLLs\tcl86t.dll → C:\Program Files\QGIS 3.6\apps\Python37\DLLs
DLLs\tk86t.dll → C:\Program Files\QGIS 3.6\apps\Python37\DLLs
Lib\tkinter 全部 → C:\Program Files\QGIS 3.6\apps\Python37\Lib
libs\_tkinter.lib → C:\Program Files\QGIS 3.6\apps\Python37\libs
libs\libpython37.a → C:\Program Files\QGIS 3.6\apps\Python37\libs
libs\python3.lib → C:\Program Files\QGIS 3.6\apps\Python37\libs
libs\python37.lib → C:\Program Files\QGIS 3.6\apps\Python37\libs
tcl\ 全部 → C:\Program Files\QGIS 3.6\apps\Python37\
------------------------------------------------------------------------------

 作業が終わって、インポートが上手くいったら、インストールしたPythonはアンインストールしてください。

 


pipでインストールできなかったpythonのライブラリを入れたい

f:id:Chiakikun:20190926235518p:plain

pipコマンドでpythonのライブラリをインストールしようとしてエラーが発生してしまった場合、できることならエラーメッセージを読んで対処したいところですが、どうしても無理だった場合、

Python Extension Packages for Windows - Christoph Gohlke

からwhlファイルをダウンロードして、次のようにすればインストールできる可能性があります。

pip install 〇〇.whl

 


お疲れさまでした。

QGIS3で国土地理院の数値標高モデルを読み込む

 以前このページでは、国土地理院の数値標高モデルをAsciiGridに変換するプログラムを公開していましたが、最近はGeoTiffの扱いにも慣れてきたので、GeoTiffに変換してQGISにインポートするプラグインを作成してみました。QGIS3.6以前のバージョンでは動かないかもしれません。ご使用については、どうか自己責任でお願いします。

プラグイン作成にあたり、「PythonでJPGIS(GML)形式DEMをGeotiffファイルに変換(https://tm23forest.com/contents/python-jpgis-gml-dem-geotiff)」や、
GIS奮闘記(http://sanvarie.hatenablog.com/entry/2016/01/10/163027)」を参考に作成しました。有益な情報をありがとうございます。皆様に感謝いたします。


ダウンロードする

プラグインをダウンロードする

f:id:Chiakikun:20190904232031p:plain

https://github.com/Chiakikun/fg_gml_importerからプログラムをダウンロードして下さい。上の赤丸部分を押下した後に出てくる、下の赤丸部分からダウンロードできます。


インストール

プラグインをインストールするダイアログを表示する

f:id:Chiakikun:20190904232108p:plain

QGISのメニューから『プラグイン』→『プラグインの管理とインストール』を選択します。

 

インストールするプラグインファイルを選択する

f:id:Chiakikun:20190904232205p:plain

『ZIPからインストールする』を選択して、ダウンロードしたZIPファイルを選択してインストールを実行します。

 

f:id:Chiakikun:20190904232350p:plain

警告が出ますが、『はい』ボタンを押下して先に進みます。

 

アイコンが表示される

f:id:Chiakikun:20190904232436p:plain

インストールが完了すると、QGISのメニューにアイコンが追加されます。


プラグインを実行してみる

f:id:Chiakikun:20190904232539p:plain

f:id:Chiakikun:20190904232602p:plain

追加されたアイコンをクリックすると、ダイアログが表示されるので、ダウンロードした数値モデルのzipファイルの格納先フォルダを選択して、『実行』ボタンを押下します。

 

f:id:Chiakikun:20190904232821p:plain

選択したフォルダにGeoTiffを作成します。全て作成できたらQGISにインポートされます。

 

お疲れさまでした。

QGIS3のインストール手順

このページではQGIS3.2をインストールする手順を紹介しています。現在QGISは3.8.2ですので、もしかしたら、このページの内容はそのまま使えないかもしれません。


インストーラーからインストールする

インストーラーをダウンロードする

インストーラーを選択する

f:id:Chiakikun:20180901133427p:plain

https://www.qgis.org/ja/site/forusers/download.html にアクセスして、赤丸部分のインストーラーを選択します。このインストーラーは一度ダウンロードすれば、後はネットワークに接続しなくても、インストールすることができます。ネットワークインストーラーですと、インストールが終わるまでネットに接続していなければならない点が少し煩わしく感じたので、スタンドアロンインストーラを選択しました。

 

インストーラーを保存する

f:id:Chiakikun:20180901133638p:plain

インストーラーを保存するか聞いてくるので、ファイルを保存ボタンをクリックします。


インストールする

インストーラーを実行する

f:id:Chiakikun:20180901133714p:plain

ダウンロードしたインストーラーを実行します。

 

契約条件を読む

f:id:Chiakikun:20180901133738p:plain

契約条件を読んだら『同意する』ボタンを押下します。

 

データセットの選択

f:id:Chiakikun:20180901133810p:plain

使用したいデータがある場合は、ここで選択してください。何も選択しなくてもQGISの使用に全く問題はありません。『インストール』ボタンを押下します。

インストール開始

f:id:Chiakikun:20180901133928p:plain

QGISのインストールが始まります。

 

f:id:Chiakikun:20180901133955p:plain

このダイアログが出たら、インストール完了です。通常使用ならこれで以上です。


パスを設定する

QGISに付属のPythonやGDAL等便利なコマンドを使えるようにするために、以下のページではパスのの設定方法を紹介しています。ご興味があれば、ご覧ください。QGISを使うだけでしたら、パスは設定しなくても問題はありません。

chiakikun.hatenadiary.com


ソースからインストールする

基本的にはこちらQGIS公式の通りにするだけです。 

環境構築

f:id:Chiakikun:20210227133002p:plain

まずはいろいろダウンロードしていきます。

Visual Studio 2015

上の画像①からVisual Studio 2015 Communitiy Editionをダウンロードして実行します。

 

f:id:Chiakikun:20210227133249p:plain

f:id:Chiakikun:20210227133529p:plain

f:id:Chiakikun:20210227133545p:plain

インストールするパッケージは上の画像②で示されているように、"Common Tools for Visual C++ 2015"と"Tools (1.4.1) and Windows 10 SDK (10.0.14393)" under "Universal Windows App Development Tools"を選択してください。

CMake

上の画像③のリンクからCMakeをインストールします。

Cygwin

上の画像④のリンクからcygwinインストーラーをダウンロードします。インストールするパッケージは「bison」、「flex」、「git」です。

f:id:Chiakikun:20210227134123p:plain

f:id:Chiakikun:20210227134141p:plain

f:id:Chiakikun:20210227134158p:plain

osgeo4w

上の画像⑤のリンクからインストーラーをダウンロードします。インストールするパッケージは「qgis-dev-deps」を選択します。Searchで入力すると簡単に見つかります。

f:id:Chiakikun:20210227134423p:plain

ninja

 上の画像⑥のリンクからダウンロードします。ninja.exeを「C:\OSGeo4W64\bin\」にコピーしてください。

ソースダウンロード

デスクトップに出来ている(はず)の「Cygwin64 Terminal」を管理者権限で実行します。

f:id:Chiakikun:20210227135023p:plain

上の画像のコマンドをCygwin Terminalで実行していきます。

 

f:id:Chiakikun:20210227135237p:plain

実行している様子。

ソリューションファイル作成

C:\OSGeo4W64\OSGeo4W-dev.bat」を作成します。中身は下の通り。

    @echo off
    call C:\OSGeo4W64\QGIS\ms-windows\osgeo4w\msvc-env.bat x86_64
    @cmd

 このバッチを実行した後、「C:\OSGeo4W64\QGIS\ms-windows\osgeo4w」に移動して

「configonly.bat」を実行します。

f:id:Chiakikun:20210227143000p:plain

ソリューションファイルを作成している様子。

 

f:id:Chiakikun:20210227143152p:plain

もし「Could NOT find ZSTD (missing: ZSTD_LIBRARY ZSTD_INCLUDE_DIR)」とエラーが出たので、以下のようにしました。

https://github.com/facebook/zstd/releases」からソースとバイナリをダウンロードしてきます。

バイナリのzipファイルのincludeフォルダ内の中身を「C:\OSGeo4W64\include」にコピーしました。

ソースをMTオプションでコンパイルして、作成されたlibzstd_static.libをzstd.libにリネームして「C:\OSGeo4W64\lib」にコピーしました。

コンパイルする

ここまでで、ソリューションファイルが「C:\OSGeo4W64\QGIS\ms-windows\osgeo4w\build-qgis-test-x86_64\qgis.sln」に出来ていることと思います。ソリューションファイルを実行する前にOSGeo4W-dev.batと実行して、「call gdal-dev-env.bat」コマンドを実行します。

f:id:Chiakikun:20210227144108p:plain

バッチファイルを実行したら、「devenv」を実行します。Visual Studioが起動するので、作成したソリューションファイルを開きます。

 

f:id:Chiakikun:20210227144701p:plain

「ALL_BUILD」ターゲットを実行します。とても時間がかかるのでしばらくお待ちください。

無事ビルドできたら、デバッグができるかも確認しておきます。「qgis」ターゲットで右クリックの「デバッグ」メニューからデバッグを実行すると、qgisが起動して、Visual Studioデバッグモードになります。

f:id:Chiakikun:20210227145219p:plain

デバッグしている様子。

 

インストール

f:id:Chiakikun:20210227145303p:plain

インストールは「インストール」ターゲットをビルドすると、「C:\OSGeo4W64\apps\qgis-test\bin」にqgis.exeが作成されます。実行してみると、色々エラーが出ることと思います。最終的にqgis.exeと同じフォルダ階層に以下の内容のqgis.envを置くことでエラーが出なくなりました。バイナリインストールしてあるPCから抜いてきて少し編集したものなので、無駄なところがあるかもしれません。

PATH=C:\OSGeo4W64\apps\gdal-dev\bin;C:\OSGeo4W64\apps\proj-dev\bin;C:\OSGeo4W64\apps\qgis-test\bin;C:\OSGeo4W64\apps\Python37;C:\OSGeo4W64\apps\Python37\Scripts;C:\OSGeo4W64\apps\qt5\bin;C:\OSGeo4W64\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBem
GDAL_DATA=C:\OSGeo4W64\share\gdal
GDAL_DRIVER_PATH=C:\OSGeo4W64\bin\gdalplugins
GDAL_FILENAME_IS_UTF8=YES
GEOTIFF_CSV=C:\OSGeo4W64\share\epsg_csv
JPEGMEM=1000000
OSGEO4W_ROOT=C:\OSGeo4W64
PROJ_LIB=C:\OSGeo4W64\share\proj
PYTHONHOME=C:\OSGeo4W64\apps\Python37
PYTHONPATH=C:\OSGeo4W64\apps\Python37;C:\OSGeo4W64\apps\Python37\Scripts;C:\OSGeo4W64\apps\qgis-test\python;C:\OSGeo4W64\apps\qgis-test\python\plugins
QGIS_PREFIX_PATH=C:\OSGeo4W64\apps\qgis-test\
QT_PLUGIN_PATH=C:\OSGeo4W64\apps\qgis-ltr\qtplugins;C:\OSGeo4W64\apps\qt5\plugins
VSI_CACHE=TRUE
VSI_CACHE_SIZE=1000000
O4W_QT_PREFIX=C:/OSGeo4W64/apps/Qt5
O4W_QT_BINARIES=C:/OSGeo4W64/apps/Qt5/bin
O4W_QT_PLUGINS=C:/OSGeo4W64/apps/Qt5/plugins
O4W_QT_LIBRARIES=C:/OSGeo4W64/apps/Qt5/lib
O4W_QT_TRANSLATIONS=C:/OSGeo4W64/apps/Qt5/translations
O4W_QT_HEADERS=C:/OSGeo4W64/apps/Qt5/include

f:id:Chiakikun:20210227150259p:plain

実行している様子。国土地理院が提供している地理院タイルを表示させています。

 

最後までご覧頂き、ありがとうございました