はじめてのGeoPandas~Docker環境構築~
概要
GeoPandasをローカル環境で実行するためのDocker環境構築方法を紹介します。
「環境構築とか面倒!実行環境だけ欲しい!」という場合は、GoogleColabを使うのが一番手っ取り早いです。
Google Colabを使ったサンプルコードはこちらです。
GeoPandasとFoliumで地図表示.ipynb
GeoPandasとは
GeoPandasは、地理空間データを扱うためのオープンソースです。PandasとShapelyを拡張し、地理空間データの分析や可視化を可能にします。
jupyter notebookの環境構築
次のDockerfileとcompose.ymlを同階層に配置します。
Dockerfile
FROM continuumio/miniconda3
RUN set -x
RUN apt update -y && apt upgrade -y \
&& apt install -y wget sudo vim libpoppler-dev \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN conda update -y conda && \
conda install geopandas
RUN conda config --append channels conda-forge && \
conda install -y \
geodatasets \
jupyter
このDockerfileでは、condaを使用してgeopandas
とconda-forgeチャンネル
(地理空間Pythonパッケージが含まれるcondaのパッケージ群)をインストールします。GeoPandas公式が推奨しているため、パッケージ管理にpipではなく、condaを使用しています。
# geopandasをインストール
RUN conda update -y conda && \
conda install geopandas
RUN conda config --append channels conda-forge && \
conda install -y \
geodatasets \# サンプルデータ
jupyter# jupyter notebook
compose.yml
services:
gis:
build:
context: .
container_name: gis_container
volumes:
- .:/workdir
ports:
- "8888:8888"
working_dir: /workdir
command: jupyter notebook --allow-root --no-browser --port=8888 --ip=0.0.0.0
tty: true
コンテナ起動時にjupyter notebookを起動させます。
jupyter notebook --allow-root --no-browser --port=8888 --ip=0.0.0.0
jupyter notebookコマンドのオプション内訳です。
-
--allow-root
: rootユーザーでの実行を許可(セキュリティリスクがあるため、本番環境では設定しないでください) -
--no-browser
: ブラウザを自動起動しない(コンテナにはブラウザを入れていないため) -
--port=8888
: ポート8888を使用 -
--ip=0.0.0.0
: すべてのIPアドレスからのアクセスを許可
実行手順
以下のコマンドを実行し、Dockerログに表示されるリンクにアクセスします。
docker compose build
docker compose up -d
Docker Desktopのログ内にあるリンクをクリックします。
Jupyterコンソールが表示されるので、 File > View > Notebook
を選択し、ノートブックを新規作成してください。
JjupyterNotebookの実行画面が表示されます。
ログ上のトークンが見つからない場合
以下の手順でJupyterコンソールにアクセスします。
- ターミナルで、コンテナ内に入り
?token=
以下のトークンをコピー
$ docker compose exec gis bash
# トークンは毎回変わる
(base) root@xxx:/workdir# jupyter server list
Currently running servers:
http://690629e959da:8888/?token=2f48c1e64cd6d24520b7f754fdd8852139883350058b2ef5 :: /workdir
- http://127.0.0.1:8888にアクセス
- ”Password or token:”の入力欄にコピーしたトークンを貼り付けてログイン
Chromeブラウザ使用時に画面が真っ白になる場合
Chromeでlocalhostにアクセスしても、画面が真っ白で表示され、302エラーになる場合があります。この場合、キャッシュの消去とハード再読み込みを行なってください。
サンプルコード
GeoPandas公式の「Introduction to GeoPandas」にあるサンプルコードを実行してみます。
import geopandas
from geodatasets import get_path
path_to_data = get_path("nybb")
gdf = geopandas.read_file(path_to_data)
# データの内容を確認
print("カラム一覧:")
print(gdf.columns)
print("\nニューヨークの行政区表:")
gdf
ニューヨークの行政区のポリゴンデータが表示されました。
PROJエラーが出た場合
次のようなGeoPandasの依存パッケージであるPROJパスが見つからないというエラーが出ることがあります。
ERROR 1: PROJ: proj_create_from_database: Open of /opt/conda/share/proj failed
その場合、コンソール先頭にPROJのパスを指定すると解消されます。
import os
#座標変換ライブラリPROJのデータベースパスを指定する
os.environ["PROJ_LIB"]='/opt/conda/share/proj'
参考
終わりに
Dockerを使ったGeoPandasの環境構築方法を紹介しました。
参考になれば幸いです。
参考リンク
GeoPandas公式 Getting Started>Installation
Discussion