LoginSignup
5
2

昨今の Google Colab 事情

Posted at

FOSS4G Advent Calendar 2023

世界で一番で使われている FOSS4G は何でしょうか?

そう Python ですね。

:thinking:

Google Colab

そんな Python 環境をパソコン内で作らなくても気軽に実行することができる Google Colaboratory というサービスがあります。 Google アカウントを持っている人であれば利用することができます。

そんな Google Colab ですが、少し前までは一部のジオなモジュールでエラーが出たり、それを避けるため面倒な対応をしなければいけないものもありました。

それから遥かなる時空が流れ、今では問題ないように見える状態になっていたので整理してみたいと思います。もっとも、いずれ Colab の環境が更に変化するとどうなるかわからないのですが。

インストールされているモジュールの確認

2023年12月時点の情報です。

Python のバージョン

code
!python -V
output
Python 3.10.12

numpy などの Geospatial 以外でも使われたりするやーつ

code
# インストールされているモジュールの確認
!pip list | grep -iE "^(Package|-+|numpy|pandas|matplotlib|plotly)\s"
output
Package                          Version
-------------------------------- ---------------------
matplotlib                       3.7.1
numpy                            1.23.5
pandas                           1.5.3
plotly                           5.15.0

ジオなやつ

code
# インストールされているモジュールの確認
!pip list | grep -iE "^(Package|-+|shapely|fiona|pyproj|gdal|geopandas|geemap)\s"
output
Package                          Version
-------------------------------- ---------------------
fiona                            1.9.5
GDAL                             3.4.3
geemap                           0.28.2
geopandas                        0.13.2
pyproj                           3.6.1
shapely                          2.0.2

pyproj / fiona / shapely / gdal (osgeo) なんかは最初から入っていますし geopandas もあります。

使ったことないのですが Google Earth Engine 用の geemap もありました。

別途インストールが必要なやつ

cartopy

地図作成やデータプロットが簡単にできるモジュールです。

インストール

code
!pip install -U pip
!pip install cartopy
output
(略)
code
# インストールされているモジュールの確認
!pip list | grep -iE "^(Package|-+|cartopy)\s"
output
Package                          Version
-------------------------------- ---------------------
Cartopy                          0.22.0

サンプル

code
import matplotlib.pyplot as plt

import cartopy.crs as ccrs
import cartopy.feature as cfeature


def main():
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
    ax.set_extent([-20, 60, -40, 45], crs=ccrs.PlateCarree())

    ax.add_feature(cfeature.LAND)
    ax.add_feature(cfeature.OCEAN)
    ax.add_feature(cfeature.COASTLINE)
    ax.add_feature(cfeature.BORDERS, linestyle=':')
    ax.add_feature(cfeature.LAKES, alpha=0.5)
    ax.add_feature(cfeature.RIVERS)

    plt.show()


if __name__ == '__main__':
    main()

出力

image.png

サンプルの出典

PyGMT

地球科学や海洋科学などでよく使われている(らしい)地図描画ツール GMT (The Generic Mapping Tool) の Python ラッパです。

インストール

code
!pip install pygmt
output
(略)
code
# インストールされているモジュールの確認
!pip list | grep -iE "^(Package|-+|pygmt)\s"
output
Package                          Version
-------------------------------- ---------------------
pygmt                            0.10.0

PyGMT を使うには、追加ライブラリ(大本のツール)が必要なのでインストールします。

code
# 追加ライブラリのインストール
!apt install gmt libgmt-dev ghostscript
output
(略)

サンプル

code
import pygmt

fig = pygmt.Figure()
fig.coast(
    # Expand the region setting outside the range of Japan by 3 degrees in all
    # directions, without rounding to the nearest increment.
    region="JP+R3",
    projection="M12c",
    land="lightgray",
    water="white",
    borders="1/0.5p",
    shorelines="1/0.5p",
    frame="ag",
)
fig.show()

出力

image.png

サンプルの出典

OSMnx

OpenStreetMap からデータをダウンロードしたりグラフ構造を作ったり、ネットワーク分析したりできるやつ(らしい)。

インストール

code
!pip install osmnx
output
(略)
code
# インストールされているモジュールの確認
!pip list | grep -iE "^(Package|-+|osmnx)\s"
output
Package                          Version
-------------------------------- ---------------------
osmnx                            1.8.0

サンプル

code
import osmnx as ox
import matplotlib.pyplot as plt

graph = ox.graph_from_place("飛島村", network_type="drive")
fig, ax = ox.plot_graph(graph, bgcolor="white", node_color="black", node_size=0)

出力

image.png

サンプルの出典

『Python による地理空間データ分析』より地名等を一部変更。

今日のまとめ

それぞれのモジュールについてちゃんと動作テストを行ったわけではありませんが、一時期にくらべると安定した実行環境を比較的ラクに構築することができる感じです。

とはいえ、まとめるきっかけは以前作成したノートがうまく動かなかったことなので、いいのか悪いのか難しいところですね。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2