2

私はスクリーンポイント(x、y)と経度、緯度を持つ値P1、P2、P3、P4を持っています。それに加えて、カメラ (緯度、経度)、カメラの高さ (1.6m (一定))、カメラの向き (方位、ピッチ、ロール) があります。カメラの水平視野角と垂直視野角もあります:)

ここで、PX(緯度、経度) のディスプレイ上の推定位置を計算したいと思います (表示されている場合)。 次の問題

指定された PX(lat,long) の P(?,?) を取得するにはどうすればよいですか? (グラフィックの紫色の点) カメラの角度を知っていて、4 つの頂点をすべて持っているので、これは可能だと思われます。しかし、私はこの問題を解決する方法がわかりません。

この 4 つの頂点に基づいて、(lat,long) を (screenX, screenY) に変換できる関数が必要です。

(screenX, screenY) を (lat,long) に変換できる式がありますが、この式を逆にすることはできません。したがって、頂点以外の点が必要な場合は、それらを計算できます (ただし、画面内のすべてのピクセルに対してこの式を単純に使用することはできません... 100 ミリ秒ごとに 100 万回のメソッド呼び出しが必要になります...)

4

1 に答える 1

1

だから私はあなたの他のスレッドのコメントでこれに答えたかもしれませんが、これを行う最も簡単な方法は次のとおりです。画面の端の GPS 座標を無視します。一般に、すべてをカメラが原点である座標空間に変換し、他のオブジェクトの位置は、Haversine 式のように、短距離で適切に調整された方法を使用して、GPS 座標間の相対距離を取得します。

投影の中心と表示したいオブジェクトの間の相対方位を取得します。

軸の視野角を決定できます。両方の軸で、仮想オブジェクトと投影の中心 (カメラが向いている方向) の間の相対的な方位を決定できます。画面の解像度を知っています。

アルファが(与えられた角度に対する)視野角の半分であり、ベータが投影の中心と画面上で見つけたいオブジェクトとの間の相対方位である場合、画面上のポイントはおおよそ次のように与えられます。

tan(beta) / tan(alpha) * (その軸の画面半分のピクセル数)

明らかに、何かが投影の中心の左右にあるかどうか、および何かが背後にある場合 (投影自体は z 距離を考慮しません)、画面外の投影をキャッチするロジックを追加する必要があります。

于 2013-04-03T10:29:23.700 に答える