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

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

* 著作権は,国土地理院にあります.特に,他の人に配ったり,インターネットで公開したい 合などは,念入りに,利用条件http://www.gsi.go.jp/LAW/2930-index.html#sec5 をよく確認すること.

* この資料では,学習目的に,国土地理院タイルデータを使用する.

キーワード: 地図タイル,標高タイル,国土地理院タイル地図,国土地理院標高タイル,高さマップ(Height map),ダウンロード

タイル座標確認ページ

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

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

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

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

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

  3. あとで国土地理院標高タイルの数値データをダウンロードする.あとでダウンロードしたいタイルの「レイヤ番号/X/Y」の値をメモしておく
    (例)14/14255/6519
    
    • レイヤ番号は14くらいが扱いやすい.
    • レイヤ番号やXやYの値によっては,あとでダウンロードできない場合がある.

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

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

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

    2. 256×256個の数値が表示されるので確認する.
    3. Web ブラウザの機能を使って,ファイルを保存ファイル名を覚えておく
    4. 保存したファイルを分かりやすいディレクトリ(例えば E:\ の直下)にコピー

    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 の範囲の数字.

    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

    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()