面接試験でこれを尋ねられました。テストは大丈夫でしたが、この質問に答えるのに十分な知識がありませんでした。データをすばやく照会するために使用できるデータ構造を知りたいです。
基本的には、ある種のデータ構造に道路のセクション(ポイントで構成されるライン)が格納されるという考え方です。ポイント(半径)から特定の距離内にある道路セクション(またはポイント)をすばやく照会できます。
地理データを格納する一般的な方法は、Rツリー(またはR +ツリー、R *ツリーなどのバリアント)などの空間データ構造を使用することです。これは、地理データタイプが通常GIS対応で実装される方法です。 RDBMS。 (私は、MicrosoftのSQL Server 2008とPostGISの両方が地理タイプにRツリーを使用していることを知っています。)これらは、説明したすべての基本要件を満たし、交差、場所、距離、およびその他のクエリタイプを簡単にサポートします。
データのタイプによっては、kDツリー、四分木、八分木、バウンディングボリューム階層(軸に沿ったバウンディングボックスツリーを含む)などが一般的に使用されている場合もあります。オブジェクトのサイズと形状は交差クエリに関連するため、これは実際には3Dゲームでははるかに一般的です。これらは、RツリーよりもGISに使用される頻度が低くなっています。
最適な結果を得るには、マップデータに対する操作の種類が異なれば、異なるストレージフォーマットが必要になります。たとえば、次の3つのタスクについて考えてみます。
要件の違いは非常に大きいため、マップへの「ライブ」変更に対応する必要がない限り、上記のタスクの1つに最適化された、データの3つの別々のコピーを保存する方が良いでしょう。 3つのタスクすべてを適切に処理できるフォーマットを考え出します。