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

PythonPythonBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、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() を使ってグラフを表示しました。