Python を使った陰影起伏図の作成

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、Python の Matplotlib を使って陰影起伏図を作成する方法を学びます。陰影起伏図は、標高の変化を陰影で表すため、地形データの可視化に役立ちます。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。

時々、Jupyter Notebook が読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題が発生した場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

ライブラリのインポート

必要なライブラリをインポートして始めましょう。

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import cbook
from matplotlib.colors import LightSource

データの読み込み

次に、このチュートリアルで使用するサンプルデータを読み込みます。標高データが含まれる jacksboro_fault_dem.npz ファイルを使用します。

dem = cbook.get_sample_data('jacksboro_fault_dem.npz')
elev = dem['elevation']

陰影起伏図の作成

ここでは、LightSource クラスを使って陰影起伏図を作成します。2 つのサブプロットを作成します。1 つはカラーマップ付きのデータで、もう 1 つは照明強度です。

## シーンを北西から照明する
ls = LightSource(azdeg=315, altdeg=45)

fig, axs = plt.subplots(ncols=2, nrows=2)
for ax in axs.flat:
    ax.set(xticks=[], yticks=[])

axs[0, 0].imshow(z, cmap=cmap)
axs[0, 0].set(xlabel='Colormapped Data')

axs[0, 1].imshow(ls.hillshade(z, vert_exag=ve), cmap='gray')
axs[0, 1].set(xlabel='Illumination Intensity')

さらに 2 つのサブプロットを作成します。1 つは blend_mode を "hsv" に設定し、もう 1 つは "overlay" に設定します。

rgb = ls.shade(z, cmap=cmap, vert_exag=ve, blend_mode='hsv')
axs[1, 0].imshow(rgb)
axs[1, 0].set(xlabel='Blend Mode: "hsv" (default)')

rgb = ls.shade(z, cmap=cmap, vert_exag=ve, blend_mode='overlay')
axs[1, 1].imshow(rgb)
axs[1, 1].set(xlabel='Blend Mode: "overlay"')

グラフの表示

最後に、plt.show() を使ってグラフを表示します。

plt.show()

まとめ

この実験では、Python の Matplotlib を使って陰影起伏図を作成する方法を学びました。サンプルデータを読み込み、LightSource クラスを使って異なる陰影付け手法で 4 つのサブプロットを作成しました。その後、plt.show() を使ってグラフを表示しました。