#はじめに
Pandas(GeoPandas)は便利ですね。
しかしQGISのPythonコンソールからは使えないので使えるようにします。
本当はGeoPandasを入れようとしたのですが、ちょっと解決困難な問題が発生したのでまずはPandasで我慢する。
参考にしたサイトはこちら(というか殆どそのまま)
https://umar-yusuf.blogspot.com/2018/12/install-third-party-python-modules-in.html
#モジュールの追加
##環境確認
今回はWindows7にQGIS3.4の環境で行ってます。
まずは動作環境を確認します。
QGISを立ち上げて、Pythonコンソールを開きましょう。
そしたら以下のコマンドを投げてPandasを読み込めるかどうか試します。
>>> import pandas
Traceback (most recent call last):
File "C:\PROGRA~1\QGIS3~1.4\apps\Python37\lib\code.py", line 90, in runcode
exec(code, self.locals)
File "<input>", line 1, in <module>
File "C:/PROGRA~1/QGIS3~1.4/apps/qgis-ltr/./python\qgis\utils.py", line 672, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
ModuleNotFoundError: No module named 'pandas'
はい、モジュールがないよってエラーがでましたね。
出なかったら既に使えるようになっていますので以下の手順は不要です。
次にPythonコンソールが使用しているPythonのバージョンを確認します。
以下のようなコマンドを流してください。
>>> import sys
>>> sys.version
'3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]'
Pythonの3.7.0が使われていることが判りました。
では次にスタートメニューからQGISのフォルダ内にあるOSGeo4W Shell
を管理者として実行します。
Windows10の場合はコンテキストメニューの[その他]-「ファイルの場所を開く」してからファイルを選んで管理者として実行ですね。
管理者で実行しないとこの後のインストールでパーミッションが無いって怒られますので注意。
OSGeo4W Shellが開いたらpython -V
を投げましょう
C:\Windows\System32>python -V
Python 2.7.14
こちらのPythonは2.7.14が参照されていますね。
##pipのインストール
モジュールの追加にはpipをつかいます。
先ほど開いたOSGeo4W Shellを使ってpipをインストールしましょう。
インストールコマンドはpython -m ensurepip --default-pip
です。
C:\Windows\System32>python -m ensurepip --default-pip
Collecting setuptools
Requirement already satisfied: pip in c:\progra~1\qgis3~1.4\apps\python27\lib\site-packages
Installing collected packages: setuptools
Successfully installed setuptools-28.8.0
問題なく入りました。
(私の環境にはpipは入ってたようですね)
最新版でないと怒られることがありますのでアップデートも流しておきます。
C:\Windows\System32>python -m pip install --upgrade pip setuptools
Collecting pip
Downloading https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl (1.4MB)
100% |################################| 1.4MB 1.6MB/s
Collecting setuptools
Downloading https://files.pythonhosted.org/packages/ec/51/f45cea425fd5cb0b0380f5b0f048ebc1da5b417e48d304838c02d6288a1e/setuptools-41.0.1-py2.py3-none-any.whl (575kB)
100% |################################| 583kB 2.1MB/s
Installing collected packages: pip, setuptools
Found existing installation: pip 19.0.3
Uninstalling pip-19.0.3:
Successfully uninstalled pip-19.0.3
Found existing installation: setuptools 28.8.0
Uninstalling setuptools-28.8.0:
Successfully uninstalled setuptools-28.8.0
Successfully installed pip-19.1.1 setuptools-41.0.1
##Pythonバージョンの切り替え
OSGeo4W ShellのPythonバージョンが2系でしたので3系に切り替えます。
3系だったら不要だと思います。
OSGeo4W Shellでpy3_env
を投げます。
自動的にいくつかSETコマンドが流れます。
C:\Windows\System32>py3_env
C:\Windows\System32>SET PYTHONPATH=
C:\Windows\System32>SET PYTHONHOME=C:\PROGRA~1\QGIS3~1.4\apps\Python37
C:\Windows\System32>PATH C:\PROGRA~1\QGIS3~1.4\apps\Python37;C:\PROGRA~1\QGIS3~1.4\apps\Python37\Scripts;C:\PROGRA~1\QGIS3~1.4\apps\Python27\Scripts;C:\PROGRA~1\QGIS3~1.4\bin;C:\windows\system32;C:\windows;C:\windows\system32\WBem
変わったことを確認しましょう。
C:\Windows\System32>python -V
Python 3.7.0
Pythonコンソールと同じバージョンに変わりました。
##Pandasモジュールの追加
pipを使ってPandasを追加しましょう。
OSGeo4W Shellでpython -m pip install pandas
と投げます。
C:\Windows\System32>python -m pip install pandas
Collecting pandas
Downloading https://files.pythonhosted.org/packages/61/c7/f943fceb712579bc538700e2c157dc4972e16abfe29bd4969149bad98c74/pandas-0.24.2-cp37-cp37m-win_amd64.whl (9.0MB)
100% |████████████████████████████████| 9.0MB 24kB/s
Requirement already satisfied: python-dateutil>=2.5.0 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from pandas) (2.7.5)
Requirement already satisfied: numpy>=1.12.0 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from pandas) (1.16.3)
Requirement already satisfied: pytz>=2011k in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from pandas) (2018.7)
Requirement already satisfied: six>=1.5 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from python-dateutil>=2.5.0->pandas) (1.12.0)
Installing collected packages: pandas
Successfully installed pandas-0.24.2
成功しました。
##動作確認
では確認してみましょう。
QGISを再起動してから再度Pythonコンソールを開きます。
そしたら先ほどエラーが出たimport pandas
を実行してみます。
エラーなくインポートできましたので適当なエクセルファイルでも読み込んでみましょう。
>>> import pandas
>>> pandas.read_excel('c:/work/test.xlsx')
a b c
0 50351610 12.25218 -10.13777
1 50351611 12.25274 -10.14224
2 50351612 12.24903 -10.14193
読み込めました。
#GeoPandasに挑戦
OSGeo4W Shellでpython -m pip install geopandas
と投げます。
C:\Windows\System32>python -m pip install geopandas
Collecting geopandas
Downloading https://files.pythonhosted.org/packages/74/42/f4b147fc7920998a42046d0c2e65e61000bc5d104f1f8aec719612cb2fc8/geopandas-0.5.0-py2.py3-none-any.whl (893kB)
100% |████████████████████████████████| 901kB 6.5MB/s
Requirement already satisfied: pyproj in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from geopandas) (1.9.6)
Requirement already satisfied: shapely in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from geopandas) (1.6.4.post2)
Requirement already satisfied: pandas in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from geopandas) (0.24.2)
Collecting fiona (from geopandas)
Downloading https://files.pythonhosted.org/packages/41/9d/63696e7b1de42aad294d4781199a408bec593d8fdb80a2b4a788c911a33b/Fiona-1.8.6.tar.gz (1.7MB)
100% |████████████████████████████████| 1.7MB 3.1MB/s
Complete output from command python setup.py egg_info:
A GDAL API version must be specified. Provide a path to gdal-config using a GDAL_CONFIG environment variable or use a GDAL_VERSION environment variable.
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\hoge\AppData\Local\Temp\pip-install-p0dr78y4\fiona\
おっと、エラーがでましたね。
fionaというライブラリがgdal-configへのパスが指定されていないと怒っているようです。
同じ問題に困っている人は見つかりますが、簡単には解決しなそうなので一旦あきらめます。
こちらを参考にやってみたら成功しました。
https://gis.stackexchange.com/questions/82200/how-to-install-fiona-to-read-shapefile-attributes-with-osgeo4w/82206
まずはPythonコンソールからGDALのバージョンを調べます。
>>> import osgeo
>>> osgeo.gdal.VersionInfo("RELEASE_NAME")
'2.3.2'
環境変数に変数GDAL_VERSION
で値2.3.2
を追加します。
設定ができたら念のため再起動しておきましょう。
以下のURLからFiona‑1.8.6‑cp37‑cp37m‑win_amd64.whlをダウンロードする。
(バージョンはさておきcp37‑cp37m‑winだとインストールできた。ここはよくわからん。)
https://www.lfd.uci.edu/~gohlke/pythonlibs/#fiona
ダウンロードファイルを適当な場所に移動したら
OSGeo4W Shellでインストールを実行
C:\Windows\System32>python -m pip install c:/work/Fiona-1.8.6-cp37-cp37m-win_amd64.whl
Processing c:/work/fiona-1.8.6-cp37-cp37m-win_amd64.whl
Collecting click>=4.0 (from Fiona==1.8.6)
Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)
|████████████████████████████████| 81kB 2.6MB/s
Collecting munch (from Fiona==1.8.6)
Downloading https://files.pythonhosted.org/packages/68/f4/260ec98ea840757a0da09e0ed8135333d59b8dfebe9752a365b04857660a/munch-2.3.2.tar.gz
Collecting click-plugins>=1.0 (from Fiona==1.8.6)
Downloading https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.wh
l
Collecting cligj>=0.5 (from Fiona==1.8.6)
Downloading https://files.pythonhosted.org/packages/e4/be/30a58b4b0733850280d01f8bd132591b4668ed5c7046761098d665ac2174/cligj-0.5.0-py3-none-any.whl
Collecting attrs>=17 (from Fiona==1.8.6)
Downloading https://files.pythonhosted.org/packages/23/96/d828354fa2dbdf216eaa7b7de0db692f12c234f7ef888cc14980ef40d1d2/attrs-19.1.0-py2.py3-none-any.whl
Requirement already satisfied: six>=1.7 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from Fiona==1.8.6) (1.12.0)
Installing collected packages: click, munch, click-plugins, cligj, attrs, Fiona
Running setup.py install for munch ... done
Successfully installed Fiona-1.8.6 attrs-19.1.0 click-7.0 click-plugins-1.1.1 cligj-0.5.0 munch-2.3.2
先ほど失敗したfionaがインストールできましたのでもう一度GeoPandasを追加してみましょう。
C:\Windows\System32>python -m pip install geopandas
Collecting geopandas
Using cached https://files.pythonhosted.org/packages/74/42/f4b147fc7920998a42046d0c2e65e61000bc5d104f1f8aec719612cb2fc8/geopandas-0.5.0-py2.py3-none-any.whl
Collecting pyproj (from geopandas)
Using cached https://files.pythonhosted.org/packages/ce/36/2d8f1fe6bf32eebc0e880d9f27b394b97dd5119303986de691d7e91e1a51/pyproj-2.2.1-cp37-cp37m-win_amd64.whl
Requirement already satisfied: fiona in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from geopandas) (1.8.6)
Collecting shapely (from geopandas)
Using cached https://files.pythonhosted.org/packages/a2/fb/7a7af9ef7a35d16fa23b127abee272cfc483ca89029b73e92e93cdf36e6b/Shapely-1.6.4.post2.tar.gz
Requirement already satisfied: pandas in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from geopandas) (0.24.2)
Requirement already satisfied: click>=4.0 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from fiona->geopandas) (7.0)
Requirement already satisfied: attrs>=17 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from fiona->geopandas) (19.1.0)
Requirement already satisfied: cligj>=0.5 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from fiona->geopandas) (0.5.0)
Requirement already satisfied: six>=1.7 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from fiona->geopandas) (1.12.0)
Requirement already satisfied: munch in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from fiona->geopandas) (2.3.2)
Requirement already satisfied: click-plugins>=1.0 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from fiona->geopandas) (1.1.1)
Requirement already satisfied: numpy>=1.12.0 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from pandas->geopandas) (1.15.4)
Requirement already satisfied: pytz>=2011k in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from pandas->geopandas) (2018.7)
Requirement already satisfied: python-dateutil>=2.5.0 in c:\progra~1\qgis3~1.4\apps\python37\lib\site-packages (from pandas->geopandas) (2.7.5)
Installing collected packages: pyproj, shapely, geopandas
Running setup.py install for shapely ... done
Successfully installed geopandas-0.5.0 pyproj-2.2.1 shapely-1.6.4.post2
今度は成功したようです。
##動作確認
QGISを再起動してからPythonコンソールを開きます。
import geopandas
を実行してみます。
エラーなくインポートできましたので適当なシェープファイルでも読み込んでみましょう。
>>> import geopandas
>>> geopandas.read_file('c:/work/test_pl.shp')
gid geometry
0 1845193 LINESTRING (-34287.477 -89755.997, -34283.604 ...
1 1847175 LINESTRING (-30711.356 -90881.484, -30712.981 ...
2 1847176 LINESTRING (-33770.897 -91487.429, -33769.417 ...
3 1847177 LINESTRING (-34019.315 -87829.27899999999, -34...
・
・省略
・
13548 1661930 LINESTRING (-32960.024 -87385.46400000001, -32...
13549 1661931 LINESTRING (-36652.435 -88311.53999999999, -36...
13550 1661932 LINESTRING (-33645.849 -89185.613, -33619.816 ...
[13551 rows x 5 columns]
成功ですね。
#さいごに
今回はPandasを対象としましたが、もちろん他のモジュール追加も可能です。
(GeoPandasは失敗しましたけど)
そして、これでプラグインからもPandasが使えるようになります。
個人的にはQGISプラグインなどで演算パフォーマンスが必要な場合に馬鹿にならない効果があるんじゃないかと思います。
ただし、使えるようにするには上記のような手順が必要になってしまうので、公開プラグインには向かないですね。
何かいい方法があれば教えてもらえたら嬉しいです。
本記事のライセンス
この記事は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。