もっと

GeoJsonの構造

GeoJsonの構造


私は現在、テーブル/ドキュメントデータベース構造を設計しています と使用GeoJsonポイントとルートを保存します。現在、MongoDbを選択していますが、後でPostGISを検討します。

保管したいルート公共バスの情報。ルートには2が含まれていますサブルート同じルート番号内を循環して行き来します。ルート情報には、関連するバス停とウェイポイントが含まれています。

構造は、クエリを返す方法に基づいている必要があります。

したがって、私のユースケースは、現在の場所に基づいて、ルート情報全体と現在のサブルートをクエリして取得したいというものです。

次のような構造の場合、dbからクエリを実行するのに適しているのはどれですか。

  1. 使用するMultiLineString2を保存するLineString■バス停とウェイポイントで構成されています。別の列/プロパティにある他の情報ストア。問題:サブルートを照会または区別する方法。
  2. 別のテーブル/ドキュメントでサブルートを区切るか、テーブル/ドキュメントで異なる列/プロパティを使用します(複数の地理空間インデックス)。問題:バス停とウェイポイントが重複していて、ルート情報全体を取得しています。おそらく複数のデータベースクエリが必要です。
  3. 使用する特徴GeoJson。しかし、私はどのように想像することはできませんFeatureCollection複数のジオメトリ上記の私のユースケースを照会するのに役立ちます。

2つの異なるアイデアを説明するために同様の単語を使用しているため、いくつかの用語を置き換えてみます。これが間違っているかどうか教えてください。


私が提案するものは、あなたに最も近いものになるでしょう#2の解決策:

あなたのデータにはバスがあります ルート それは1つまたは複数で作られています 。私たちは持つことはできません ルート 少なくとも1つなし 。ザ・ ルート である必要はありませんMultiLineFeatureまたは空間プリミティブでさえ、 ルート それ自体に関する管理情報を保持するだけであり、必ずしもそのことについて何も知らない .

A どれを知っている ルート (外部キー)それは属します。もしあなたの 事前に焼き付けられたラインフィーチャであるため、必要な最小のユニットにすることができます。もしあなたの プリベークされていない場合は、に関する情報だけを保持できます それ自体であり、空間プリミティブである必要はありません。参照できます。 ウェイポイント それらの形状を決定します。

最後に、 ウェイポイント、およびのみ ウェイポイント。駅は ウェイポイント。どうして?乗客の積み降ろしのために停車する以外は、ウェイポイントと駅の間に実際には違いはありません。つまり、ウェイポイントのエントリに保存できる情報です(例: is_station バスを停止する必要がある場合は値1、停止しない場合は値0)。場合 ウェイポイント が最小のユニットである場合、新しいラインフィーチャを作成せずにルーティングを更新できます。レッグ/ウェイポイントの関連付けテーブルを、新しいもので更新するだけです。 ウェイポイント.

私は個人的に作り方をします ウェイポイント それが最大の柔軟性を与えるので、私の最小のユニット。

また、多対多の結合コレクション/テーブルを作成します。ウェイポイント/ステーションも複数のレッグにサービスを提供する可能性があり、レッグには複数のウェイポイントが必要になるためです。さらに、ウェイポイントに順序を付けるためのフィールドを提供します。これにより、進行方向を知ることができます。

スキーマ:

+ ---------- + + -------- + + ------------- + | | | | | | |ルート+1 --- N- +レッグ| |ウェイポイント| | | | | | | + ---------- + + ---- + --- + + --------- + --- + | | 1 1 | | N N | | + ---- + ------------------- + ----- + |レッグ/ウェイポイント協会| | | + ------------------------------ +

クエリ:

多くの公共交通機関は駅でしか人を乗せないので、空間クエリを使用して最寄りの交通機関を見つけます ウェイポイント 私の場所へis_station = 1.

ステーションが選択されたら、クエリを実行してレッグ/ウェイポイントの関連付け多対多結合を実行するためのコレクション。これにより、どの区間がこの駅にサービスを提供しているかがわかります。

順番に、足は彼らがどのルートを提供するかを知っているので、あなたはあなたがあなたのルートについて知る必要があるすべてを知ることができます。ユーザーがあなたの情報を見ている場合、どのルートを好むかを決めるのはユーザー次第です。または、最適なルートを示すために、より多くの情報を求めるのはあなた次第です。