みなさんこんにちは、佐々木です。
M5Stack Core2にいろいろ表示する方法の第3弾(第1弾、第2弾)!今回は地理院タイルをM5Stack Core2に表示する方法をご紹介します。
仕組み
地理院タイルは国土地理院が配信するタイル状の地図データです。タイルのサイズは256x256ピクセル、下記URLからタイル状の地図データをダウンロードし、それらを組み合わせて地図を表示しています。ダウンロードした地図データはSDカードに保存し、繰り返しダウンロードしないようにしています。
https://cyberjapandata.gsi.go.jp/xyz/{t}/{z}/{x}/{y}.{ext}
{t}
:データID。標準地図std
や全国最新写真seamlessphoto
など。{z}
:ズームレベル。0~18
。{x}
:タイル座標X。{y}
:タイル座標Y。{ext}
:画像の拡張子。png
やjpg
など。
地理院タイルの詳細はこちら。
スケッチ
PNG画像の描画にM5GFX
ライブラリを使いました。M5GFX
ライブラリはファイルメニューからスケッチ > ライブラリのインクルード > ライブラリの管理
を選択、M5GFX
を検索しバージョン0.0.3
をインストールしてください(0.0.5
だとタッチ操作がうまく動かない様子)。
スケッチはここからダウンロードしてください。解凍したらフォルダ名をm5_gsitiles
に変更しm5_gsitiles.ino
を開き以下のWiFi設定を書き換えてM5Stack Core2に書き込んでください。
const char *ssid = ""; //Enter SSID
const char *password = ""; //Enter Password
標準地図std
以外の地図を表示したい場合、下記URL・拡張子を書き換えてください。
TileImage::XYZImageSource gsiImage(1, 18, 256, "https://cyberjapandata.gsi.go.jp/xyz/std", "png");
地図の初期位置(緯度経度)とズームレベルを変更したい場合は下記行を変更してください。
latLonToTile(&default_x, &default_y, 35.689440, 139.691670, 0); // 東京都庁
default_z = 7;
地理院タイルの一括ダウンロード
地図データは地理院タイルダウンロードツールを使って一括ダウンロードできます。使い方を簡単に説明します。まずは導入手順書に従ってRuby
をインストールしてください。次に地理院タイルダウンロードツールをダウンロードしてください。
git clone https://github.com/gsi-cyberjapan/tdlmn.git
設定ファイル(tdlmn/src/program.ini
)を開いて地図データのダウンロード先、ダウンロードするレベルをカンマ区切りで指定します。ZOOM_LEVEL
は18
まで指定できますが、レベルが1つ上がる毎にファイル数が4倍に増加します。ダウンロード時間が非常に長くなるので注意してください。
TILE_FOLDER = cyberjapandata.gsi.go.jp/xyz
TILE_ID = std
ZOOM_LEVEL = 1,2,3,4,5,6,7,8,9,10
PROXY =
PROXY_USER =
PROXY_PASSWORD =
次のコマンドで地図データのダウンロードが始まります。
cd tdlmn/src
ruby tdlmn.rb -mn -dt -merge
ダウンロードが終わったら地図データをSDカードに次のディレクトリ構造になるようにコピーしてください。
/cyberjapandata.gsi.go.jp/xyz/std
レベル毎のファイル数とタイル座標
地図データの地域はレベル0~8
までは世界全体、レベル9~18
は日本地域に限定されます。レベル12
以降はファイル数が10万を超えてきます。レベル18
となるとファイル数は5億枚にもなります。すべてのファイルをダウンロードするのは現実的ではないので、地域を絞ってダウンロードすることを検討してください。
レベル | ファイル数 | タイル座標X | タイル座標Y |
---|---|---|---|
0 | 1 | 0 | 0 |
1 | 4 | 0-1 | 0-1 |
2 | 16 | 0-3 | 0-3 |
3 | 64 | 0-7 | 0-7 |
4 | 256 | 0-15 | 0-15 |
5 | 1024 | 0-31 | 0-31 |
6 | 4096 | 0-63 | 0-63 |
7 | 16384 | 0-127 | 0-127 |
8 | 65536 | 0-255 | 0-255 |
9 | 2070 | 430-475 | 182-226 |
10 | 7920 | 861-950 | 365-452 |
11 | 約3万 | ||
12 | 約12万 | ||
13 | 約50万 | ||
14 | 約200万 | ||
15 | 約800万 | ||
16 | 約3200万 | ||
17 | 約1億2000万 | ||
18 | 約5億 |
以上です、ぜひご活用ください!
参考
地理院タイルについて
地理院タイル一覧
正方形タイルによる地図の表現
座標の変換(世界座標、ピクセル座標、タイル座標、緯度・経度)
Pythonでタイル座標⇔緯度経度の変換