0

モールなど屋内の場所をマッピングするマッピング アプリケーションを作成したいと考えています。特定の地図上の任意の地点の緯度と経度を計算できる必要があります (つまり、特定の店舗の緯度と経度を知る)。地図はおそらく回転しており、真北に合わせられていないことを知っているので、最初にいくつかのポイントに関する情報を提供して、地図の向きがわかるように「調整」する必要があります。 .

私のマップは、グリッド/座標系のようにフォーマットされます。地図上の特定の 3 点の緯度と経度を提供します。この情報を提供した後、マップ上の他の地点の緯度と経度を計算するにはどうすればよいですか? たとえば、地図があり、(0, 0)、(5, 5)、および (10, 12) の緯度と経度のデータをプログラムに伝えます。次に (3, 5) と入力すると、プログラムはその地点の緯度と経度を教えてくれます。

これは可能ですか?このためのアルゴリズムを書くにはどうすればよいでしょうか? また、プログラムに2点のみの位置を提供するユーザーでこれを行うことは可能ですか? ありがとう!

4

2 に答える 2

1

ショッピング モールが十分に小さいため、Lat と Long が線形である、つまり X と Y と同じであると見なすことができると仮定すると、スケーリングと回転の変換行列を適用するだけで済みます。

数学が少し苦手な場合は、この簡単な紹介を試してみてください。

また、緯度/経度とメートル (またはフィートまたはピクセル) の間で変換できる必要があります。緯度 (南北の距離) は簡単です。極を通る円は同じ長さなので、緯度は常に同じメートル数になります (正確には)。地球の周りに描かれた円は北に行くほど小さくなるため、経度はより複雑です。Expressing_latitude_and_longitude_as_linear_units を参照してください

あるいは、既知のポイント (コーナーなど) の緯度/経度がわかっている場合は、度からメートル/フィート/ピクセルに直接スケーリングできます。NS スケールは EW スケールとは異なることに注意してください。

于 2012-07-07T00:43:23.900 に答える
0

それは可能で、必要なのは 2 点の位置だけです。面積が十分に小さければ、平面が傾いていることや地球が丸いことを心配する必要はありません。

マップ座標に 2 つの点 X1,Y1 と X2,Y2 があるとします (スキャンしたマップがある場合はピクセルで十分です。またはミリメートルなど)。

これらの 2 点のうち、たとえば 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)   ]

(角括弧内の部分は、2 つのポイントの位置を取得した後も変化しません。これは一種のキャリブレーション定数になります)。

y3 と Y3 についても同様です。Y 軸は、y に関して反対の符号を持つ場合があることに注意してください。

非常に小さな領域の場合、緯度と経度を直線の任意の単位に変換するだけで、1 度が 60 分、1 分が 60 秒、1 秒が 1000 ミリ秒に相当します。次に、緯度 (または経度) をミリ秒に変換します。得られる数値にはほとんど意味がありません-「ミリ秒」が何であるかはわかりません-しかし、ミリ秒で x3 を計算すると、経度に戻り、ミリ秒; その経度は使用可能で、ほぼ正確です。あなたがあなたの2つのポイントから遠く離れていなければ; 遠くに連れて行かないと。大きなショッピングモールはいいけど、都会は…あんまりいいじゃない。

アルゴリズムは非常に基本的なものであり、すぐに地図製作者や数学者の怒った暴徒によってリンチされると予想しています (そして、私はそれに値するものでした) が、地球を局所的に平らであると見なすことができる小さな領域では、うまくいくかもしれません.

于 2012-07-07T00:57:17.287 に答える