🔨

Tilesets CLIでラスターMTS

2024/08/30に公開

はじめに

前回の記事ではAPIを直接呼び出す形でMTSを試しました。今回はTilesets CLIを用いて試してみます。

https://zenn.dev/ottylab/articles/9fc83e9a211d35/

Tilesets CLI

Tilesets CLIはMTSでデータをアップロード・タイルセット作成等を行うためのCLIツールです。Pythonで実装されています。

インストール

Python 3.6以上の環境で以下のコマンドによりインストールします。

% pip install mapbox-tilesets

また、追加機能のestimate-areaを使用する際は、GitHubのREADMEを参考にインストールしてください。

シークレットトークンの設定

Tilesets CLIが使用するため、前回作成したシークレットトークンを以下のように環境変数として設定します。

% export MAPBOX_ACCESS_TOKEN=sk....

Vector MTS

データの準備

Tilesets CLIはGeoJSONファイルをline-delimited GeoJSONに変換してくれます。そこで、今回は通常のGeoJSONファイルを準備します。

bus.geojson
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "id": 1,
      "properties": {
        "name": "JR東京駅 八重洲南口"
      },
      "geometry": {
        "coordinates": [
          139.7681965,
          35.6796462
        ],
        "type": "Point"
      }
    },
    {
      "type": "Feature",
      "id": 1,
      "properties": {
        "name": "バスタ新宿"
      },
      "geometry": {
        "coordinates": [
          139.7007717,
          35.6884839
        ],
        "type": "Point"
      }
    },
    {
      "type": "Feature",
      "id": 1,
      "properties": {
        "name": "サンシャインシティ プリンスホテル"
      },
      "geometry": {
        "coordinates": [
          139.719704,
          35.7298991
        ],
        "type": "Point"
      }
    }
  ]
}

レシピの準備

前回と同様のものを準備します。ただし、APIを使用する際のレシピファイルは厳密にはレシピ+メタデータでした。

前回のbus.geojson
{
  "recipe": {
    //レシピの中身
  },
  //メタデータ
}

今回は「レシピの中身」の部分だけをファイルとして準備します。

bus.geojson
{
  "version": 1,
  "layers": {
    "layer0": {
      "source": "mapbox://tileset-source/yochi/bus-tilesets-cli",
      "minzoom": 0,
      "maxzoom": 18
    }
  }
}

タイルソース作成

upload-sourceコマンドでタイルソースを作成します。パラメータは<username> <source_id> <file>です。

% tilesets upload-source yochi bus-tilesets-cli bus.geojson

タイルソース一覧

list-sourcesコマンドでタイルソース一覧を取得できます。パラメータは<username>です。

% tilesets list-sources yochi
mapbox://tileset-source/yochi/bus-tilesets-cli
mapbox://tileset-source/yochi/fuji
mapbox://tileset-source/yochi/bus

タイルセット作成

createコマンドでタイルセットを作成します。パラメータは<tileset_id> --recipe <file> --name <name>です。前回はメタデータとして指定していたnameおよびdescriptionをここで指定します (descriptionはオプション)。

% tilesets create yochi.bus-tilesets-cli --recipe recipe.json --name "Bus Tilesets CLI" --description "Bus stops"
{"message": "Successfully created empty tileset yochi.bus-tilesets-cli. Publish your tileset to begin processing your data into tiles."}

前回同様、Studio上でタイルセットが表示されます。

before_publish

パブリッシュ

publishコマンドで使用可能となります。パラメータは<tileset_id>です。

% tilesets publish yochi.bus-tilesets-cli
{"message": "Processing yochi.bus-tilesets-cli", "jobId": "cm09ddr7l003308l3foyba482"}

✔ Tileset job received. Visit https://studio.mapbox.com/tilesets/yochi.bus-tilesets-cli or run tilesets job yochi.bus-tilesets-cli cm09ddr7l003308l3foyba482 to view the status of your tileset.

進捗確認

statusコマンドで進捗が確認できます。パラメータは<tileset_id>です。変換中のstatusprocessingです。

% tilesets status yochi.bus-tilesets-cli
{"id": "yochi.bus-tilesets-cli", "latest_job": "cm09ddr7l003308l3foyba482", "status": "processing"}

変換が完了するとstatussuccessになります。

% tilesets status yochi.bus-tilesets-cli
{"id": "yochi.bus-tilesets-cli", "latest_job": "cm09ddr7l003308l3foyba482", "status": "success"}

完成

Studio上でも以下のようにタイルセットが確認できるようになりました。
published

Raster MTS

GeoTIFFを準備する

前回作成したGeoTIFFを使用します。

レシピの準備

Vector MTSと同様に、レシピ本体のみのファイルを準備します。

bus.geojson
{
  "type": "raster",
  "version": 1,
  "sources": [
    {
      "uri": "mapbox://tileset-source/yochi/fuji-tilesets-cli"
    }
  ],
  "minzoom": 0,
  "maxzoom": 16,
  "layers": {
    "fuji": {
      "tilesize": 512,
      "buffer": 1
    }
  }
}

タイルソース作成

upload-raster-sourceコマンドでタイルソースを作成します。パラメータは<username> <source_id> <file>です。

% tilesets upload-raster-source yochi fuji-tilesets-cli fuji.tiff
upload progress  [-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------]    0%
{"id": "mapbox://tileset-source/yochi/fuji-tilesets-cli", "files": 1, "source_size": 1533817, "file_size": 1533817}

タイルソース一覧

list-sourcesコマンドでタイルソース一覧を取得できます。パラメータは<username>です。

% tilesets list-sources yochi
mapbox://tileset-source/yochi/fuji-tilesets-cli
mapbox://tileset-source/yochi/bus-tilesets-cli
mapbox://tileset-source/yochi/fuji
mapbox://tileset-source/yochi/bus

タイルセット作成

タイルセットの作成方法はベクターMTSと同じです。

% tilesets create yochi.fuji-tilesets-cli --recipe recipe_fuji.json --name "Mt.Fuji Tilesets CLI" --description "Mt.Fuji image"
{"message": "Successfully created empty tileset yochi.fuji-tilesets-cli. Publish your tileset to begin processing your data into tiles."}

パブリッシュ

パブリッシュ方法もベクターMTSと同じです。

% tilesets publish yochi.fuji-tilesets-cli
{"message": "Processing yochi.fuji-tilesets-cli", "jobId": "cm09drb4l008008mfa74lcew8"}

✔ Tileset job received. Visit https://studio.mapbox.com/tilesets/yochi.fuji-tilesets-cli or run tilesets job yochi.fuji-tilesets-cli cm09drb4l008008mfa74lcew8 to view the status of your tileset.

完成

Studio上でも以下のようにタイルセットが確認できるようになりました。
published_fuji

使ってみる

前回と同様(addSourceurlのみ変更)、作成したタイルを使用した結果は以下のとおりです。

まとめ

Tilesets CLIでより簡単にMTSが利用できることがわかりました。

GitHubで編集を提案
マップボックス・ジャパン合同会社

Discussion