MapboxのVectorDataを利用する
Mapboxはエンジニア向けにAPIを通して常に最新の地図データを提供できるプラットフォームです。
Vector Tiles APIを利用して、.mvtもしくは.pbfのデータを取得し利用することができます。
公式の手順はこちら
手順
-
Access Tokenを取得
-
下記のAPIリクエストでデータを取得する
https://api.mapbox.com/v4/{tileset_id}/{zoom}/{x}/{y}.{format}?access_token
-
{tileset_id} : Mapboxが用意している地図データを使いたい場合はstereet-v8などデフォルトで用意されたものを指定すれば良いです。一方自分で作成した独自のタイルセットを利用することもできます。
-
{zoom} : Slippy map tilename の仕様に沿って利用したいzoom levelを指定します。
-
{x y} : Slippy map tilename の仕様に沿って利用したいエリアを指定します。このx,yを取得するには計算が必要なのですが、こちらで緯度経度を変換するスクリプトが公開されていますので、利用して取得できます。
-
{format} : 2種類のフォーマット(.mvt or .pbf)が指定できます。いずれもスタンダードで利用できるフォーマットですので、取り扱いやすい方をリクエストしましょう。
サンプル
試しにmapbox-street-v8より、東京駅周辺のデータを取得してみます。
$curl --output test.pbf "https://api.mapbox.com/v4/mapbox.mapbox-streets-v8/15/29105/12903.vector.pbf?access_token=YOUR ACCESS TOKEN"
※オプション--outputでファイルを作成しています。
これでディレクトリに、test.pbfデータが取得されました。
QGISで表示
データ形式とMBTilesについて
Vector tiles APIでは二つの形式(.mvtと.pbf)を指定できますが、基本的にはどちらも同じデータで、拡張子が異なっているだけですので、拡張子の取り扱い、利用するアプリケーションに合わせて取得する形式を指定してください。
そして、複数のpbf(あるいはmvt) tileをパッケージしたような形で保持できる形式として、MBTilesがあります。
データについての詳細は今回省略しますが、気になる方はTippecanoeなどを使って、GeoJsonからMBTiles変換ができますので、元のGeoJsonと比較してみると良いかと思います。
最後に(重要)
上記でVectorTilesデータをキャッシュされる場合にMapbox ToSやService Termのキャッシュに関する条文に違反しないようにご利用ください。
MapboxのMappingAPIを利用する場合、キャッシュデータの利用に30日の制限があります。
また、利用価格についても事前にご確認ください。
Discussion