国土地理院標高タイルの数値データのダウンロードと画像表示
国土地理院標高タイルの数値データのダウンロードと画像表示の手順を説明する.
- 地図タイルとは
「レイヤ番号/X/Y」
最も荒いものがレベル0.レベルが増えることに,範囲は狭く,情報は精密になる. レイヤ番号=0のときは全世界,レイヤ番号が1増えると,面積は 1/4
* 画像の地図の場合には,1個の地図タイル = 256×256の画像が標準
- なぜ地図タイルは大切なのか?
オンラインの地図システムでは,ダウンロードを早くするために,地図データは地図タイル化
*ゲームの「マップ」でもタイル地図と同じ技術が使われていることも
- 標高タイル
タイル地図形式になっているような標高データのこと
- 国土地理院タイル地図
国土地理院が公開しているタイル形式の地図.種類はたくさんあり,次のWebページで確認できる.
- 国土地理院標高タイル
標高データ(単位はm)が入った 256 × 256 サイズの数値データ.国土地理院が公開.
* 著作権は,国土地理院にあります.特に,他の人に配ったり,インターネットで公開したい 合などは,念入りに,利用条件http://www.gsi.go.jp/LAW/2930-index.html#sec5 をよく確認すること.
* この資料では,学習目的に,国土地理院タイルデータを使用する.
キーワード: 地図タイル,標高タイル,国土地理院タイル地図,国土地理院標高タイル,高さマップ(Height map),ダウンロード
タイル座標確認ページ
- Webブラウザでタイル座標確認ページを開く
http://maps.gsi.go.jp/development/tileCoordCheck.html
- 好きな場所に狙いを定めながら,画面の「レイヤ番号/X/Y」の変化を見る.
ズームイン,ズームアウトの操作は,Webブラウザの画面の左上の「+」, 「-」ボタンを利用するか,マウスのホイールを使う.
* 「好きな場所」は,自宅に近くなど,慣れている場所を選んでみる.ある程度起伏がある場所を選ぶのが楽しい.
- あとで国土地理院標高タイルの数値データをダウンロードする.あとでダウンロードしたいタイルの「レイヤ番号/X/Y」の値をメモしておく
(例)14/14255/6519
- レイヤ番号は14くらいが扱いやすい.
- レイヤ番号やXやYの値によっては,あとでダウンロードできない場合がある.
国土地理院標高タイルの数値データのダウンロード
- 国土地理院標高タイルの数値データをダウンロードするために,Web ブラウザで,次のようなURLを打ち込む.「14/14255/6519」のところは,先ほどメモした数値に読み替える.
- 256×256個の数値が表示されるので確認する.
- Web ブラウザの機能を使って,ファイルを保存. ファイル名を覚えておく.
- 保存したファイルを分かりやすいディレクトリ(例えば E:\ の直下)にコピー
Python で,国土地理院標高タイルのデータを表示する
* Python でプロットを行いたい.
* そのためには, PyCharmなどにある Python コンソールが便利である.
- 次の 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 の範囲の数字.
- 画像サイズの表示
* 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次元プロットしてみる.
上のプログラムに続いて,次の 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()