金子邦彦研究室3次元,地図インタラクティブ,ダイナミックな地図(OpenStreetMap を利用)国土地理院標高タイルの数値データのダウンロードと画像表示

国土地理院標高タイルの数値データのダウンロードと画像表示

国土地理院標高タイルの数値データのダウンロードと画像表示の手順を説明する.

タイル座標確認ページ

  1. Webブラウザでタイル座標確認ページを開く

    http://maps.gsi.go.jp/development/tileCoordCheck.html

    [image]
  2. 好きな場所に狙いを定めながら,画面の「レイヤ番号/X/Y」の変化を見る.

    ズームイン,ズームアウトの操作は,Webブラウザの画面の左上の「+」, 「-」ボタンを利用するか,マウスのホイールを使う.

    ※ 「好きな場所」は,自宅に近くなど,慣れている場所を選んでみる.ある程度起伏がある場所を選ぶのが楽しい.

    [image]
  3. あとで国土地理院標高タイルの数値データをダウンロードする.あとでダウンロードしたいタイルの「レイヤ番号/X/Y」の値をメモしておく
    (例)14/14255/6519
    

    国土地理院標高タイルの数値データのダウンロード

    1. 国土地理院標高タイルの数値データをダウンロードするために,Web ブラウザで,次のようなURLを打ち込む.「14/14255/6519」のところは,先ほどメモした数値に読み替える.

      http://cyberjapandata.gsi.go.jp/xyz/dem/14/14255/6519.txt

    2. 256×256個の数値が表示されるので確認する.

      [image]
    3. Web ブラウザの機能を使って,ファイルを保存ファイル名を覚えておく
    4. 保存したファイルを分かりやすいディレクトリ(例えば E:\ の直下)にコピー

      [image]

      Python で,国土地理院標高タイルのデータを表示する

      Python でプロットを行いたい.

      ※ そのためには, PyCharmなどにある Python コンソールが便利である.

      1. 次の Python プログラムを実行

        E:/6519.txt」のところは,先ほどのファイル名に読み替える

        import pandas as pd
        %matplotlib inline
        import matplotlib.pyplot as plt
        import warnings
        warnings.filterwarnings('ignore')   # Suppress Matplotlib warnings
        Z = pd.read_csv("E:/6519.txt", header=None)
        plt.imshow(Z)
        

        次のように表示されたら OK. 標高が高いところが赤,低いところが青. になるように、自動的に色がつく.

        ※ 元データは 0 から 255 の範囲の数字だけど、表示されるときに、赤から青の色が勝手に付く、という意味です.元データはあくまでも 0 から 255 の範囲の数字.

        [image]
      2. 画像サイズの表示

        Python でプロットを行いたい.

        ※ そのためには, PyCharmなどにある Python コンソールが便利である.

        E:/6519.txt」のところは,先ほどのファイル名に読み替える

        import pandas as pd
        %matplotlib inline
        import matplotlib.pyplot as plt
        import warnings
        warnings.filterwarnings('ignore')   # Suppress Matplotlib warnings
        Z = pd.read_csv("E:/6519.txt", header=None)
        Z.shape
        

        下の実行結果では,サイズは 256 x 256

        [image]
      3. 3次元プロットしてみる.

        上のプログラムに続いて,次の Python プログラムを実行

        from mpl_toolkits.mplot3d.axes3d import *
        fig = plt.figure()
        ax = Axes3D(fig)
        X, Y = np.meshgrid(np.linspace(0,1,256), np.linspace(0,1,256))
        ax.plot_surface(X, Y, Z)
        plt.show()
        

        [image]