👋

Automating GIS Processes 2023 を読む その5

2024/07/03に公開

概要

ヘルシンキ大学地球科学・地理学科の GIS コースの教材であるAutomating GIS Processes 203を読んでいきます。

Lesson5

講義動画

https://www.youtube.com/watch?v=WK4FVQxGDOk

Static maps

この数週間の間に、レッスン 2、3、4 などで、geopandas.GeoDataFrame.plot() を使った基本的な静的マップのプロットに慣れました。また、geopandas.GeoDataFrame.plot()はmatplotlib.pyplotライブラリを使用し、その引数とオプションのほとんどはgeopandas.GeoDataFrame.plot()で受け入れられることも学びました。

地図をプロットする基本について記憶を呼び覚ますために、道路と地下鉄の路線も表示するヘルシンキ都市圏の静的アクセシビリティ地図を作成してみましょう(3つのレイヤーを重ね合わせたもの)。入力データセットは同じ座標系である必要があることを覚えておいてください!

Plotting a multi-layer map

plot()に渡すことができる以下のオプションを覚えておいてください:

ポリゴンレイヤーを指定します:

scheme パラメータを使用して分類スキームを定義します。

cmapを使ってカラーマップを変更する

alphaパラメータでレイヤーの透明度をコントロールします。

線レイヤーのスタイルを設定します:

カラーパラメータで線の色を調整します。

必要に応じて線幅を変更する

レイヤーは異なる広がりを持つ(道路はより広い範囲をカバーする)。軸 (ax) のメソッド set_xlim() と set_ylim() を使って、マップの水平方向と垂直方向の範囲を設定できます(例えば、ジオデータフレームの total_bounds に)。

Adding Legend

マップに凡例を描くには、legend=True パラメータを追加します。

分類スキームのない図では、凡例はカラーグラデーションバーで構成されます。凡例はmatplotlib.pyplot.colorbar.Colorbarのインスタンスで、凡例_kwdsで定義された全ての引数が渡されます。凡例のタイトルを設定するためにlabelプロパティを使用する方法は以下を参照してください:

Adding a Base Map

よりよい方向付けのために、地図プロットにベースマップを追加することはしばしば役に立つ。例えば、OpenStreetMapやStamenのような地図プロバイダーが提供するベースマップは、通り、地名、その他の文脈情報を追加する。

Pythonのcontextilyパッケージは、必要な地図タイルをダウンロードし、ジオパンダプロットでそれらをレンダリングします。

Interactive maps

事実上すべてのオンライン地図は、拡大・縮小、地図の範囲のパン、地図の特徴の選択、またはそれらに関する情報の照会が可能である。

ここではFolium Pythonパッケージを利用します。geopandas.GeoDataFramesに格納されたデータからインタラクティブなリーフレットマップを作成するのに役立ちます。

Create a simple interactive web map

まず、ベースマップ以外何もないシンプルなインタラクティブウェブマップを作成することから始めます。これは、Foliumの構文がどのように動くか、どのステップを踏まなければならないかに慣れるためです。

Add a point marker

Foliumマップに1つのマーカーを追加するには、folium.Markerを作成します。マーカーがどのようにスタイリングされるかに影響を与えるために、パラメータアイコンとしてfolium.Iconを提供し、マウスポインタがマーカーにカーソルを合わせたときにテキストを表示するツールチップを設定します。

Add a layer of points

Foliumは、例えばgeopandas.GeoDataFramesとしてレイヤー全体を追加することもサポートしています。FoliumはリーフレットのジオJSONレイヤーをfolium.features.GeoJsonクラスで実装しています。このようなクラス(とレイヤー)をジオデータフレームで初期化し、マップに追加することができます。

Add a polygon layer

次のセクションでは、以前に扱ったことのある別のデータセット、レッスン2で学んだヘルシンキ地方の人口グリッド、そして練習3でも使ったヘルシンキ地方の人口グリッドを再確認します。このレイヤーはHSYのオープンデータWFSエンドポイントから直接ロードできます:

Add a tooltip to a choropleth map

このようなインタラクティブ・マップでは、各グリッドセルのポリゴンの上にマウスを置くと、その値が表示されるようにしたいものです。Foliumはこの機能をサポートしていませんが、簡単なトリックで機能を拡張することができます: 基本的な'folium.features.GeoJsonを使って透明なポリゴンレイヤーを追加し、ツールチップを表示するように設定します。

上で作成したマップはそのままで、別のレイヤーを追加するだけです。

Codes

lesson5 のコードを実行した結果は以下に置きました。

https://github.com/mopinfish/auto-gis-notebooks/tree/main/lessons/lesson-5

Discussion