2011-05-30 13 views
1

2GPSの座標の間のルート(ウェイポイント)の都市のリストを取得するにはどうすればよいですか?ウェイポイントを都市のテーブルから2GPSの座標に変換する

私はすべての都市のテーブルlat-lonを持っています。 開始地点(緯度)と終了地点(緯度)がある場合... 出発地から出発する都市のパス(テーブルから)を渡す(ウェイポイント)を決定するのは非常に簡単でなければなりません(lat-lon)からen(lat-lon)?

私はさまざまなアルゴリズムとベアリングを見てきました。まだ私のために明確ではありません。

+0

y私たちの都市テーブルには連鎖データが含まれていますか?例えば「都市Aから都市B、道57」を取る?あなたが相互接続する方法に関するデータを持っていない限り、場所自体は役に立たない。それ以外の場合、単純な答えは「開始点と終了点の間を直接駆動する」です。 –

答えて

2

ポイントAとポイントBの間の方法を使用している場合は、緯度と経度で都市を照会するだけです。

AからBまで直線のXマイル以内にある都市を取得する場合は、出発地点と勾配を計算してから、作成する行のXマイル以内の都市を照会します

道路を無視する単純な地点Aから地点Bの方法を使用していない場合は、AとBの間の実際の道路には何らかのデータが必要です。これは、データベース内のNodeシステムを使用して行うことができます。また、そこにあるさまざまなジオロケーションAPIを使用して行うこともできます。

1

これに対する解決策は、標準的な離散ルーティングアルゴリズムによって

を見つけることができ、これらのアルゴリズムは、可能な道路またはより一般的距離を表すノードのセット(あなたの都市、目的地、開始)とそれらのノード間のエッジを(必要

ノードおよびエッジ)の位置との間のグラフを形成...地と目的地を開始今は

にこのグラフに沿って経路を解決するために一般的に*またはdjikstraようなアルゴリズムを使用することができます...知られていますこのアプローチの問題は、あなたがエッジの定義を持っていない可能性があります場所間の直接的なパス)。スタート地点を取る0

初期化「ネットワークID」を、最も近い他の場所を見つける:あなたは、たとえば、さまざまな方法でこのような「道路網」を作成することができます。距離を測定し、それを係数で掛けます。各位置をこの値よりも小さい距離を有し、現在の位置にまだ接続されていない元の位置に接続する。この手順で接続したすべての場所をリストに追加します。現在の「Network_ID」で現在の場所をマークし、そのリストの次の場所についてこの手順を繰り返します。あなたのリストに場所がなくなったら、「Network_ID」をインクリメントして、まだ処理されていないランダムな場所を選択し、ステップを繰り返してください。

すべての場所が処理された後、それらの間に適切な接続エッジを追加するか、より大きな要因でプロセスを再起動してください)

開始と送信先が同じnetwork_IDを持っているか、両方のネットワークが接続されていることを確認する必要があります

1

えええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええっと 多分試してみてください。そのような

SELECT * from `cities` WHERE `lat` BETWEEN 'minlat' AND 'maxlat' AND `lon` BETWEEN 'minlon' and 'maxlon'; 

何かがここでのMySQLの比較で

見働く可能性があります

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html

関連する問題