地図

MTSを使用したカスタム水深地形タイルセット

見出し

これはレイアウト確認用のダミーテキストです。

海洋レイヤーを詳細な景観に変え、海上ナビゲーション、海洋科学などに不可欠なコンテキストを提供するのに役立つ、新しい水深測量スタイルとタイルセットをリリースしました。 

別の水深測量データソースを使用する必要がありますか?あるいは、ズームレベルを調整したり、データフィールドを追加したりする必要がありますか?Mapbox Tiling Service (MTS)を使用すると、あらゆる水深測量データ(NOAAのグローバルリリーフデータセットBlue Earth Bathymetryの海底マッピングなど)をカスタムタイルセットに処理できます。

"広大で特徴のない海に見えるものが、突然、水深測量によって活気づき、地球の70%以上を占める信じられないほどの地形を明らかにします。"
アンソニー・ゴダード、Zero Six Zero

MTSを使用すると、大量のデータセットをカスタムベクタータイルセットに処理し、データの変更に応じて地図を継続的に更新できます。MTSは、Mapboxのすべての開発者が、‘レシピ’と呼ばれる変換ルールを使用してソースデータをアップロードするためのサービスとして利用できます。

MTSを使用して生成されたTilesetは、Studioでスタイルを設定し、他のベクターTilesetと合成できます。MTSは、自動スケーリング、分散、並列化された処理インフラストラクチャを使用してデータを作成および更新します。つまり、単一のサーバーセットアップよりもはるかに迅速にデータを処理できます。これらのTilesetはデフォルトでプライベートですが、公開することもできます。

MTSでカスタム水深測量タイルセットを作成する

1. データの選択と準備

水深測量データのソースによっては、地図作成者は最初にデータを単一のGeoJSONファイルに変換する必要がある場合があります。Natural Earthの1:1000万データセット(1,000メートル間隔で深度値を含む)の場合、このスクリプトを使用するか、QGISを介してシェープファイルを単一のシェープファイルにマージします。次に、ogr2ogrを使用して、新しく生成されたシェープファイルをGeoJSONに変換します。 

ogr2ogr -f GeoJSON ~/new_file_name.geojson ./final/merge.shp

Jan Žákのハウツーブログ記事で、Natural Earthの深浅測量データの準備とスタイリングに関するヒントをご覧ください。

2. MTSでタイルセットを作成する

MTSを使用して、GeoJSONをMapboxタイルセットにアップロードします。 

MTSは「レシピ」を使用します。これは、MTSにデータをベクタータイルに処理する方法を指示する構成オプションで構成されるJSONドキュメントです。レシピは、簡素化の程度、ズームレベルの範囲、ジオメトリの結合、属性の操作、など、ベクタータイルを生成するためのオプションを提供します。 

タイルセットの最適化方法が不明な場合は、ズーム範囲0〜5から始めて、次のような一般的なレシピを使用してください。 

{
  "version": 1,
  "layers": {
    "water-detail": {
      "source": "mapbox://tileset-source/username/water-detail",
      "minzoom": 0,
      "maxzoom": 5
    }
  }
}

MTSでタイルセットを作成する1つのオプションは、tilesets-cliを使用することです。次の3つの短いコマンドでこのサンプルレシピを使用します: 

  • ソースデータのアップロード:tilesets upload-source username water-detail
  • タイルセットを作成: tilesets create username.bathymetry --recipe ~/file/recipe.json --name "bathymetry" 
  • タイルセットを公開します:tilesets publish username.bathymetry

タイルセットが作成されたら、Mapbox StudioのTileset explorerを使用して、レイヤー、各レイヤーに関連付けられたプロパティ、ズームごとおよびレイヤーごとのタイルサイズ統計、データの範囲など、タイルセットのコンテンツとプロパティの概要を確認します。

3. レシピ構成でタイルセットを最適化する

タイルセットを調査することで、不要なプロパティの削除や断片化したポリゴンのクリーンアップなど、改善点を見つけることができます。 

MTSレシピを使用すると、開発者はソースデータを操作して、パフォーマンスとスタイリングの目的で出力タイルセットを最適化できます。マップデザイナーのClare Trainorは、次のレシピ構成を使用して、連続的で結合されたポリゴン、縮小されたタイルサイズ、滑らかで簡略化された境界線を持つ最適化された水深タイルセットを生成しました。

{
  "version": 1,
  "layers": {
    "water-detail": {
      "source": "mapbox://tileset-source/username/water-detail",
      "minzoom": 0,
      "maxzoom": 8,
      "features": {
        "attributes": {
          "allowed_output": ["depth"]
        },
        "simplification": {
          "outward_only": true,
          "distance": 1
        }
      },
      "tiles": {
        "order": "depth",
        "union": [
          {
            "group_by": ["depth"],
            "simplification": {
              "distance": 4,
              "outward_only": false
            }
          }
        ]
      }
    }
  }
}

このレシピでは、フィーチャーごとに、水域ポリゴンを簡略化し、不要なフィーチャーを削除します。タイルごとに、レシピは出力ポリゴンを再度結合して簡略化します。これらのレシピ設定オプションについては、MTSドキュメントをご覧ください。

新しい構成が特定されたら、それらをレシピに追加して、タイルセットを再公開します。

  • レシピを更新:tilesets update-recipe username.bathymetry ~/path/recipe.json
  • タイルセットを作成: tilesets publish username.bathymetry

4. 最終タイルセットを調べる

Tilesetsエクスプローラーで、更新されたタイルセットを「X線」モードで表示できるようになりました。海洋の領域をクリックすると、レイヤー化されたポリゴンの詳細が表示されます。

画面の左側にある[ベクターレイヤー]セクションでは、water-detailsレイヤーでプロパティが削除されたことが強調表示されています。[タイルサイズ]は、タイルサイズの縮小を視覚化します。地図ビューでは、水ポリゴンは大きく連続しており、以前のバージョンで多くの小さなポリゴンに断片化されていません。

大海原が待っています!MTSドキュメントを調べて、カスタムデータを使用して地図の構築を開始してください。

これはレイアウト確認用のダミーテキストです。

これはレイアウト確認用のダミーテキストです。

関連記事