1

私はサービス車両配車 Web アプリの開発者です。SQL サーバーを使用して、.Net 4+、MVC4 で記述されています。

地理データ型としてデータベースに格納されている 2000 以上の場所があります。場所 A から場所 B にリソースを送信すると仮定すると、移動時間/距離などを 1 点で表示する必要があります。SQL Server の STDistance で距離を計算すると、「カラスが飛ぶように」の距離しか得られません。そのため、システムは bing、Google、または ESRI などの地理空間サービスにアクセスして、実際の運転時間または提案されたルートを取得する必要があります。問題は、これがコア機能であり、頻繁に発生することです。

事前に計算された距離または平均運転時間をルックアップ テーブルに事前入力する必要がありますか? 欠点は、情報が必要になるたびに検索する 400 万レコードの場所を追加しなくてもです。

これに加えて、ほとんどの場合、目的地は保存されている地理空間座標の 1 つではなく、代わりに大陸のどこかの住所または経度/緯度のポイントになる可能性があるため、事前計算が不可能になります。

ジオサービスのエンドポイントを常にヒットしなければならないパフォーマンスの問題を回避しようとしています。

これにどのようにアプローチするのが最善かについて何か提案はありますか?

-ありがとう!

4

1 に答える 1

1

これらの問題を以前に見てきたので、それらすべてを保存できる可能性は低いです。

  1. 通常、結果をキャッシュすることは、ほとんどすべてのルーティング プロバイダーの TOS に反します。この能力を交渉できる場合もありますが、コストがかかります。
  2. 検索対象のポイント セットが固定されていない場合、1 つの計算を実行しても、次の計算のための情報はほとんど得られません。

ペアが選択されたら、ペアのルートを保存して、必要に応じてそのルートを再度表示できるようにすることができます。トランザクションが完了したら、DB からルートを削除します。

これらすべてを本当にキャッシュしたい場合、またはより詳細に制御したい場合は、PGRouting (Postgresql を使用) を使用して、道路データを取得できます。努力する価値があるとは思えませんが。

于 2013-06-02T02:15:41.360 に答える