0

ユーザーが車を運転しているときに最寄りのガソリンスタンドを表示するアプリケーションがあります。これで、最寄りのガソリンスタンドのトップ 10 を表示できます。私が構築したいのは、ユーザーの現在の場所と、データベースから収集した上位 10 件、つまり最初のガソリンスタンドとの間の距離を示すビューを表示することです。私がそれについて考えたこと

1- The GPS provide a new location to my application.

2- run an SQL query to get the top 10 gas stations in a Circle that it center is the user location and it radius is 2 km.

3- calculate the distance between the current location and the first gas station returned from the Query above (which is the nearest one) .

4- display that distance to user.

GPSプロバイダーが新しい場所を提供するのに遅れる可能性があるため、200mの精度内になるようにフィルタリングするため、これが良くないと思うのはなぜですか。そして、戻るのに時間がかかる可能性のあるI / O操作を行います。これにより、ユーザーと最寄りのガソリンスタンドとの間の距離が一定になり、更新を待ちます。

次の点に注意してください

1-クエリで使用した列のインデックスを作成して、フルスキャンの問題を高速化し、防止します。

2-これは、場所の更新をできるだけ早く取得するための更新要求を定義した方法です。this.mLocationManager.requestLocationUpdates("gps", 0, 0, this.mLocationListener);

これを行うためのより速いアプローチはありますか?

4

2 に答える 2

0

データベースを使用する場合は、SQL データベースなしの mongoDB をお勧めします。「near」機能を備えたGeoIndexがあります。

これにより非常に高い読み取りパフォーマンスが得られ、車輪を発明する必要はありません。

http://www.mongodb.org/display/DOCS/Geospatial+Indexingを参照

于 2012-12-10T20:28:25.993 に答える
0

1000倍速いアプローチがあります。なぜ恐ろしく遅い SQL なのですか? 組み込みシステムでは、SQL は最適なオプションではありません。メモリ (配列) 内のすべてのガソリン スタンドを読み取ります。少なくとも座標とステーション ID。

簡単な解決策: 総当たり検索を行い、すべての距離を計算し、最寄りの駅を見つけたら、住所、名前などの sql をクエリできます。

ステーションの数が 10,000 を超える場合は、より優れたソリューションが必要になるでしょう。

于 2012-12-10T20:13:59.180 に答える