パーティション

カタログはレイヤーに分割され、レイヤーはパーティションに分割されます。これにより、パーティションはシステム内のデータの最小単位になります。 パーティションはカタログ内のキー値であり、レイヤーはパーティションの名前空間です。 これにより、(レイヤーおよびパーティションを含む)カタログがキーキーと値のストアになります。

パーティションには任意のバイナリデータを保存できます。 HERE platform はデコードする必要がないため、パーティション内のデータの構造を理解する必要はありません。 データは変更せずに公開および取得されます。 ただし 、スキーマを レイヤーに関連付けることで、データの構造とエンコードを定義できます。 これにより、データのエンコードおよびデコード方法をデータの作成者および消費者が把握できるように、レイヤー内のパーティションのデータ構造およびエンコードが定義されます。

パーティションは、次の 2 つのパーティション分割方式のいずれかに基づいて命名されます。

  • 汎用パーティション分割
  • HERE Tile Partitioning

パーティション分割方式を理解することが重要な理由はいくつかあります。 まず、カタログを作成するときに、カタログに使用するパーティション分割方式を選択する必要があります。また、カタログに保存するデータに最適なパーティション分割方式を選択する必要があります。 2 つ目は、カタログを照会する場合、またはカタログにデータをパブリッシュする場合、パーティションを名前で参照する方法を理解できるように、使用されているパーティション分割方式を把握する必要があることです。

汎用パーティション分割

一般的なパーティション分割は、最も簡単なパーティション分割形式です。 パーティション名には意味がありません。 汎用パーティション分割は、検索インデックスデータなど、マップ データ以外のデータに最適です。

HERE Tile Partitioning

HERE Tile Partitioning は、マップ データを保存するためのメソッドです。 HERE Tile Partitioning では、レイヤーにマップの領域を表す四角形の地理的タイルが含まれています。 これらのタイルは、パーティションとも呼ばれます。 HERE Tile Partitioning を使用している場合は、 HERE platform ライブラリおよび API を利用して、地理関連のタスクを実行できます。

HERE Tile Partitioning を使用するには、データの読み取りおよび書き込みができるようにマップ データがどのようにパーティション分割されているかを把握しておく必要があります。

地図のタイリング

マップ データをパーティションに分割する処理をタイリングと呼びます。 HERE Tile のタイリング方式は、四角形をベースにしています。 quadtree はツリーデータ構造で、各内部ノードには正確に 4 つの子があります。 Quadtrees パーティションは、 4 つのタイルに再帰的に分割することで、 2 次元の空間を作成します。 子タイルの番号は、固定の逆 "Z" パターンで 0 ~ 3 になります。

  • タイル 0 は南西部のサブタイルです
  • タイル 1 は南東部のサブタイルです
  • タイル 2 は北西側の補助タイルです
  • タイル 3 は北東部のタイルです

タイル レベル

タイルのレベルは、タイルを生成するために分割されたタイルの数を示します。 たとえば、次の図では、タイル 4 (100 バイナリ ) はレベル 1 、タイル 2411000 ( バイナリ ) はレベル 2 です。

HERE platform でサポートされている最大タイルレベルは 15 です。 このレベルでは、各タイルのサイズは、赤道付近で約 2.45 km x 2.43 km です。

HERE Tile タイリングは、未加工の投影の WGS84 緯度 / 経度座標値に基づいているため、各子のタイルは、親の緯度 / 経度範囲の半分を左右に正確にカバーします。

メモ

このスキームを使用すると、一般的なメルカトル図法で投影された 2D 地図で非正方形のタイルが表示され、赤道から遠くなるほど効果が顕著になります。

HERE Tile ID

マップ内の各タイルには、 HERE Tile ID と呼ばれる識別子があります。 HERE Tile ID は、タイルの quadkey から計算された 64 ビットの符号なし整数です。 quadkey は、レベル 1 からターゲットタイルレベルまでの親子タイルの階層をキャプチャする数値のストリング( 0 ~ 3 )です。

たとえば、次のマップにサンフランシスコを含むレベル 5 のタイルが含まれている場合、 quadkey 02123 は親のタイルがで、 0212サンフランシスコを含む子のタイルが 3であるためです。

この 2 つ目の例では、中央駅の Berlin Hauptbahnhof を含む小児タイルの quadkey 122012031202200 は、親タイルの quadkey がで 12201203120220 あり、タイル Hauptbahnhof を含む小児 quadkey の がであるため 0です。

タイルのレベルは、 quadkey の桁数で指定できます。 たとえば、レベル 14 タイルの quadkey は 14 桁です。

HERE Tile からタイルの quadkey ID を確認するには、次のアルゴリズムを使用します。 このアルゴリズムを示すために、例の値では上記のようにベルリンのレベル 14 タイルが使用されています。

  1. quadkey の先頭に 1 を付けます。
    12201203120220 = 112201203120220

  2. quadkey をベース 4 からベース 10::=377894440 に変換します
    112201203120220410

  3. 結果として得られる 10 進数は HERE Tile ID です。
    377894440

メモ

HERE ロケーションライブラリには、 TileResolver HERE Tile ID の計算に使用できるが用意されています。 Scala または Java を使用している場合 mapquad は、同じ目的でライブラリを使用できます。

HERE Tile Coordinate Ranges

ワールドマップの通常の座標範囲は、 -180 ° ~ +180 ° 経度、 -90 ° ~ +90 ° 緯度です。 ただし、 HERE Tile Partitioning では、全世界を表すレベル 0 のルートタイルが、北極の北にある仮想の相手によって拡張されます。 これは、レベル 1 のタイルの特別な処理を避けるために行われます。 その結果、 HERE Tile Partitioning の基本座標範囲は -180 ° ~ +180 ° 経度、 -90 ° ~ +270 ° 緯度になり、レベル 0 のワールドタイルは側面 360 ° の正方形になります。 HERE では、ルートワールドのタイルが標準の 4 つのタイルにレベル 1 で分割され、その結果、ワールドをカバーするタイル 0 と 1 が作成され、一般的には 2 と 3 が未使用のタイルが作成されます。

次の特殊なケースに注意してください。

  • +180 ° の経度値は -180 ° に変換されるため、タイルは反子午線を「覆い」として参照します。
  • +90 ° の緯度値は、その南のタイルが所有しています。

タイル レベルの緯度 / 経度を計算しています

タイルの緯度および経度範囲は、次のように計算できます。

360 ° /2 タイルレベル

したがって、レベル 14 のタイルでは、緯度 / 経度の範囲は次のように計算されます。

360 ° /214 = 360 ° /16384 = 0.02197265625 ° / タイル

タイリング方式では、タイル の緯度 / 経度の位置がタイル の境界線に含まれているかどうかが常に問題になります。 HERE Tile スキームでは、タイル の南西の境界にある場所がそのタイル に属します。

緯度 / 経度の HERE Tile ID を指定します

特定のタイルレベルの任意の緯度 / 経度位置のタイル HERE Tile ID は、モートンコーディングのバージョンを使用してアルゴリズム的に計算できます。 この例では、緯度 / 経度の座標が 52.52507/13.36937 のベルリン中央駅を示します。

この場所のレベル 14 HERE Tile ID を計算してみましょう。 まず、目的のタイルの X 、 Y 座標をワールドマップで計算する必要があります。 タイルの X 、 Y 座標は緯度 / 経度の値ではありません。これらは、世界地図の南西の角にある (0,0) からインデックス化された、タイルの積分位置座標です。

  1. 経度 値から水平 (X) タイル インデックスを検索するには、ワールドマップの経度 範囲 (-180 ° ~ +180 ° ) を、目的のタイル レベルに基づいてタイルサイズの範囲に分割します。 HERE Tile Coordinate Ranges で説明されているように、各レベル 14 タイル は、タイル ごとに 0.02197265625 度をカバーします。
    180 ° + 13.36937 ° = 193.36937 ° 絶対 経度 オフセット (南西コーナーから)
    193.36937 ° / 0.02197265625 ° = 8 800.45 = タイル X : 8,800 ( 0 ベースのインデックス作成の場合は切り捨て)
  2. 垂直 (Y) タイル インデックスを探します。HERE Tile Coordinate Ranges で説明されているように、緯度の範囲は -90° ~ +270° であることを確認してください。
    90 ° + 52.52507 ° = 142.52507 ° 絶対緯度 (南西コーナーから)
    142.52507 ° /0.02197265625 ° = 6,486.47 = タイル Y : 6,486 ( 0 ベースのインデックス作成では切り捨て)
  3. タイル X'Y インデックス (8800'6486) およびタイルレベル (14) をモートンコード quadkey に変換します これを行うには、タイル座標インデックスの単純なバイナリ表現を取得し、タイルレベルのビット数に 0 を埋め込みます。
    タイルの X 座標 : 8800 = 100010011000002 ( すでに 14 ビット )
    タイル Y 座標 : 6486 = 0110010101102 (ゼロパディングで 14 ビット)
  4. Y 座標の最初のビットから開始して、バイナリ値のビットをインターリーブします。
    Interleaved Y/X = 01101000011000110110001010002
  5. 結果のバイナリ値をベース 4 の整数に変換して、 quadkey 文字列「
    01101000011000110110001010002=12201203120220 」を取得します4

そのため、緯度 / 経度の座標が 52.52507/13.36937 のベルリン中央駅 (Berlin Hauptbahnhof) の quadkey はです 12201203120220。 HERE は地図上の quadkey です。

最後のステップは、タイルの quadkey を HERE Tile ID としてエンコードすることです。

  1. quadkey の先頭に 1 を付けます。
    12201203120220 = 112201203120220
  2. quadkey をベース 4 からベース 10::=377894440 に変換します
    112201203120220410
  3. 結果の 10 進数は、緯度 / 経度座標の HERE Tile ID 52.52507/13.36937 です。
    377894440

」に一致する結果は 件です

    」に一致する結果はありません