FOSS4G Advent Calendar 2023
世界で一番で使われている FOSS4G は何でしょうか?
そう Python ですね。
Google Colab
そんな Python 環境をパソコン内で作らなくても気軽に実行することができる Google Colaboratory というサービスがあります。 Google アカウントを持っている人であれば利用することができます。
そんな Google Colab ですが、少し前までは一部のジオなモジュールでエラーが出たり、それを避けるため面倒な対応をしなければいけないものもありました。
それから遥かなる時空が流れ、今では問題ないように見える状態になっていたので整理してみたいと思います。もっとも、いずれ Colab の環境が更に変化するとどうなるかわからないのですが。
インストールされているモジュールの確認
2023年12月時点の情報です。
Python のバージョン
!python -V
Python 3.10.12
numpy などの Geospatial 以外でも使われたりするやーつ
# インストールされているモジュールの確認
!pip list | grep -iE "^(Package|-+|numpy|pandas|matplotlib|plotly)\s"
Package Version
-------------------------------- ---------------------
matplotlib 3.7.1
numpy 1.23.5
pandas 1.5.3
plotly 5.15.0
ジオなやつ
# インストールされているモジュールの確認
!pip list | grep -iE "^(Package|-+|shapely|fiona|pyproj|gdal|geopandas|geemap)\s"
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
地図作成やデータプロットが簡単にできるモジュールです。
インストール
!pip install -U pip
!pip install cartopy
(略)
# インストールされているモジュールの確認
!pip list | grep -iE "^(Package|-+|cartopy)\s"
Package Version
-------------------------------- ---------------------
Cartopy 0.22.0
サンプル
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()
出力
サンプルの出典
PyGMT
地球科学や海洋科学などでよく使われている(らしい)地図描画ツール GMT (The Generic Mapping Tool) の Python ラッパです。
インストール
!pip install pygmt
(略)
# インストールされているモジュールの確認
!pip list | grep -iE "^(Package|-+|pygmt)\s"
Package Version
-------------------------------- ---------------------
pygmt 0.10.0
PyGMT を使うには、追加ライブラリ(大本のツール)が必要なのでインストールします。
# 追加ライブラリのインストール
!apt install gmt libgmt-dev ghostscript
(略)
サンプル
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()
出力
サンプルの出典
OSMnx
OpenStreetMap からデータをダウンロードしたりグラフ構造を作ったり、ネットワーク分析したりできるやつ(らしい)。
インストール
!pip install osmnx
(略)
# インストールされているモジュールの確認
!pip list | grep -iE "^(Package|-+|osmnx)\s"
Package Version
-------------------------------- ---------------------
osmnx 1.8.0
サンプル
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)
出力
サンプルの出典
『Python による地理空間データ分析』より地名等を一部変更。
今日のまとめ
それぞれのモジュールについてちゃんと動作テストを行ったわけではありませんが、一時期にくらべると安定した実行環境を比較的ラクに構築することができる感じです。
とはいえ、まとめるきっかけは以前作成したノートがうまく動かなかったことなので、いいのか悪いのか難しいところですね。