2011-10-25 32 views
1

我們假設,隱藏在森林中,有一個信標。我用一架直升機飛越森林,隨機間隔平飛烽火臺。對於每個ping,我都會得到一個緯度/經度對以及該點(但是沒有方向)的信標的信號強度。PHP:使用經緯度/信號強度數據查找信標的位置

  1. 我該如何計算PHP中的信標位置?

  2. 如果在稍後的時間,我會再讀一遍,我會如何將這個添加到我目前對燈塔位置的估計中?

注:我們不知道森林是如何影響信號強度,但是我們可以假設的效果是一致的 - 信標可以在一個空地上,或埋在石頭下面。

+0

嗯......聞起來有點像家庭作業給我。 –

+0

1.你不能。您最初提供的任何值都不是矢量。即使有兩個值對,你也不能。你將不得不有某種類型的表,讓你相對於信標強度的距離。 – John

+0

@布萊恩,不是作業,相信我。這有一個現實生活應用 –

回答

1

我假設你得到了ping的經緯度。

你將需要一個至少4坪,在一個2×2的方格(儘可能接近這個)。更多的ping可能會有幫助,但是你將不得不處理測量錯誤。

這是一個很差的Ascii圖紙,其中包含了強度值。假設北方向上。

X (6 strength)    X (4 strength) 
. 
. 
. 
X (5 strength)    X (3 strength) 

根本沒有做任何數學運算,您可以確定信標位於您進行這些測量的中心西北部的某處。

如果您可以通過信號強度(近似)計算距離,那麼您可以猜測地圖上的某個點。

如果您無法計算距離,只需ping另一個2 x 2的方格,您認爲該點可能是。在某些時候,優勢將接近平等,並且您可以假設燈塔靠近廣場的中心。

我希望這會有所幫助,而且在直升機上做起來也不算太費時。

編輯添加:信標的信號強度與距離的平方成反比。 (distance = sqrt(x factor/signal strength))假設您已經確定了x因子(12),因此您知道信號強度9代表地圖上半徑爲1.1英寸的圓,並且信號強度3代表半徑2.0英寸的圓地圖。

因此,當您在左下角看到ping時,可以將ping放在地圖上,然後繪製一個半徑爲1.5英寸的圓。當您在左上角進行ping操作時,可以將ping放在地圖上,然後繪製一個半徑爲1.4英寸的圓。

現在,這兩個圓圈將相交在地圖上的某個地方。在該交叉點的某處將是燈塔的位置。

現在直升機轉過身來,你可以在右上角找到ping。您繪製一個半徑爲1.7英寸的圓。然後你在右下角得到ping,然後你畫一個半徑爲2英寸的圓。

四個圓的交點應該組成一個小的粗四邊形。

你飛到四邊形的中心,並採取另一個平。你應該獲得相當高的信號強度。拆下一根繩子,找到燈塔和擱淺的徒步旅行者,返回繩子,讓直升機將你和擱淺的徒步旅行者拉到安全的地方。

+0

如果我不知道各種閱讀材料的相對位置,這種工作是否會奏效? –

+0

@Adrien Hingert:我不明白你的問題。你沒有ping的緯度和經度嗎?您可以在地圖上繪製ping圖以查看ping的相對位置。 –

+0

我不知道我會如何用你提供的信息做數學。 –