2012-07-07 49 views
0

我想製作一個映射室內場所(如商場)的地圖應用程序。我需要能夠計算特定地圖上任意點的經度和緯度(即知道特定商店的經度和緯度)。我知道這些地圖可能是旋轉的,並且不與真實的北部對齊,所以我首先需要提供關於幾個點的信息以進行「校準」,以便地圖的方向是已知的,如果你明白我的意思。你如何確定地圖上某個點的經度和緯度?

我的地圖將被格式化爲網格/座標系。我將在地圖上提供三個特定點的經度和緯度。提供此信息後,如何計算地圖上任何其他點的緯度和經度?例如,我有一張地圖,我告訴程序(0,0),(5,5)和(10,12)的緯度和經度數據。然後我輸入(3,5),程序應該告訴我那個點的經度和緯度。

這是可能的嗎?我將如何去寫這個算法呢?另外,是否有可能通過用戶僅向程序提供兩個點的位置來完成此操作?謝謝!

回答

1

假設您的商場足夠小,您可以將Lat和Long視爲線性,即與X和Y相同,那麼只需應用縮放和旋轉transformation matrices即可。

如果你的數學是你可能想試試這個simple introduction

您還需要能夠經/緯度和米(或英尺或像素)之間進行轉換有點弱。 緯度(多遠北/南)很容易 - 因爲通過兩極畫出的圓圈長度相同,所以緯度總是相同的米數(與您的準確度相同)。經度更加棘手,因爲隨着你走向更遠的北方,畫在地球上的圓圈變小 - 請參閱Expressing_latitude_and_longitude_as_linear_units

或者,如果知道已知點的緯度/經度(例如拐角),則可以從度數轉換爲米/英尺/像素直接。記住N-S量表與E-W量表不同。

+0

感謝您的幫助和資源!我很感激。 – 2012-07-07 01:02:21

0

這是可能的,你只需要兩點的位置。如果面積足夠小,則不必擔心飛機傾斜或地球變圓。

假設你在地圖座標系中有兩個點X1,Y1和X2,Y2(如果你有掃描地圖,或者是毫米,或者其他的話)。

在這兩點上,你也知道UTM中的座標,並讓它們爲x1,y1和x2,y2。

從這些信息中可以推導出旋轉和縮放需要從UTM改變映射,反之亦然。

在這一點上,考慮到其中,你知道的地圖座標X3,Y3任何其它點,其UTM座標可以被計算出來。

假設X和Y軸有UTM參考相同的方向(爲此,你需要管理的旋轉,這是更復雜 - 一個小三角參與),

x2-x1 = Zx * (X2-X1) 
x3-x1 = Zx * (X3-X1) 

,因此

Zx = (X2-X1)/(x2-x1) 

x3 = x1 + Zx * (X3-X1) 

最後

x3 = x1 + (X3-X1)*[ (X2-X1)/(x2-x1) ] 

(部分在取兩個點後,方括號內的數字不會改變 - 這將是一種校準常數)。

也是一樣Y3和Y3。請注意,Y軸可能與y有相反的符號。

對於你可能只是轉換緯度和經度爲考慮等於60分鐘一個度,一分鐘等於60秒,和至少一個第二等於1000毫秒直任意單位非常小的區域。然後從緯度(或經度)轉換爲毫秒。你會得到的數量將有很少的意義 - 你不知道什麼是「毫秒」是 - 但一旦你計算,也就是說,X3以毫秒爲單位,你就可以拿回來經度和忘記了毫秒;和經度將是可用的和正確。如果你不偏離你的兩點;如果你不讓他們離得太遠。一個大商場是好的,一個城市......不太好。

的算法是非常基本的,我希望通過製圖員和數學家的一羣憤怒的暴徒(,我會已經活該)很快被私刑處死,但對於小面積允許考慮地球作爲局部平坦,它只是可能會工作。

+0

感謝您的幫助!你有任何聯繫信息?如果我無法弄清楚,我可能會付給你編碼算法給我。 – 2012-07-07 01:03:42

+0

我會很高興地收到「接受答案」,但如果我問的錢,我有資格成爲偷:-):該代碼是幾乎所有有!如果你想做更專業的工作,或者需要平臺特定的優化,那麼馬丁貝克特建議的矩陣編碼就是要走的路。使用Excel電子表格輸入數據十分鐘,然後您將自行完成。 – LSerni 2012-07-07 01:08:37

相關問題