4

私は、車両が走り回るときに車両を追跡するプロジェクトに取り組んでいます。車両の位置はGeoloqiAPIから取得され、自動的に更新される地図に表示されます。座標はDrupalのAHAH関数に渡され、他のAPIを介して位置に関する詳細情報が読み込まれます。それらの1つはGeonames.orgです。

リモートサーバーからデータを頻繁にロードしたくないのは、ロードが増加し、クレジットの使用が速すぎるためです。でも。これはプロジェクトに不可欠なので、できるだけリアルタイムにしたいと思います。だから私はそれをこのようにすることを考えました:

Geonamesは、現在の道路のGPS位置の文字列を提供して、地図上に描画できるようにします。「線」は次の交差点に与えられます。場所が変わるたびに現在の通りの名前を尋ねると、チケットを早く食べてしまいますが、すべての交差点でどうでしょうか。

PHPで、特定のgps座標が他の2つの座標間の線上にあるかどうかを確認することは可能でしょうか?オフセットをクリアするために、この線を全方向に数メートル延長できるとよいでしょう。

すべての提案をありがとうございました。

4

1 に答える 1

2

あなたの元の質問は、単純な数学の問題に帰着します。それが通過する 2 つの点を与えられた直線の方程式を見つけます。この部分は単純です: たとえば、(lat1, lon1) と (lat2, lon2) 座標を持つ 2 つの点があるとします。直線の方程式は次のようになります。

(lon2 - lon1) * X + (lat1 - lat2) * Y + (lat1 * lon2 + lat2 * lon1) = 0

ここで、他の点 (緯度、経度) を取得したら、それらの座標をそれぞれ (X、Y) として方程式に入れます。0 を取得すると、ポイントは直線上にあります。次に、あなたlatが と の間lat1にありlat2、あなたlonがと の間lon1にあることを確認しますlon2。はいの場合、新しい点は 2 つの既存の点の間の線上にあります。

より複雑な部分は、次の 2 つのことから生じます。

  1. GPSエラー。それを説明するために、いくつかの近似を行うことができます。たとえば、0 と比較する代わりに、余裕を持たせ-errます。+errerr

  2. ほとんどの通りがまっすぐではないという事実。下の図は問題を示しています。一番上の通りの 2 つの端の間の線を見ると、垂直の通りの一番上がその線上にありますが、それはあなたが望むものではありません。
    ここに画像の説明を入力.

おそらく、より良いアプローチは、距離の変更を使用することです。GPS によって報告された距離の変化が事前に定義された値よりも小さい場合、位置を再クエリしません。

于 2012-07-03T17:39:07.293 に答える