32

サイズがsizeX、sizeYのjpegマップがある場合

マップ上のいくつかのキャリブレーションポイント(X、Y、Lon、Lat)

与えられた経度/緯度のペアでマップ内の対応するXYポイントを計算するためのアルゴリズムは何でしょうか?

4

8 に答える 8

23

これが私のために働いたものです、それほど多くのbsなしで。

int x =  (int) ((MAP_WIDTH/360.0) * (180 + lon));
int y =  (int) ((MAP_HEIGHT/180.0) * (90 - lat));

lat、lon座標は、Androidデバイスから提供されました。したがって、これらはすべてのGoogle Earth/Map製品で使用されているものと同じ標準である必要があります。

于 2010-12-30T19:24:07.127 に答える
14

正距円筒図法タイプの mapを使用する場合は、次のことを行う必要があります。

  1. ここであなたの場所の緯度と経度のチュートリアルを見つけてください:
    http://lifehacker.com/267361/how-to-find-latitude-and-longitude
  2. その情報を次の式に入力します:
    x = (画像の幅の合計 (px)) * (180 + 緯度) / 360
    y = (画像の高さの合計 (px)) * (90 - 経度) / 180

    注: 負の経度を使用する場合緯度の負の数、つまり +(-92) または -(-35) を加算または減算してください。実際には -92 と +35 になります。

  3. これで、画像にプロットする X と Y

    ができまし
    た控除Equirectangular
于 2010-05-26T09:00:34.763 に答える
8

これはかなり簡単で単純です..どのようにそれが可能かを説明しましょう.

緯度と経度は、地球上に描かれた架空の線であるため、世界中の任意の場所を正確に特定できます。簡単に言えば、平面の X 座標と Y 座標です。緯度は、北極で 90 度、南極で -90 度の北から南に伸びる垂直線です。

一方、経度は東から南に伸びる水平線で、西が -180 度、東が 180 度です。

HTMLコンテナの幅が世界の幅であり、同じことが高さに当てはまると仮定することで、latLngをピクセル座標に変換できます。

数式 - 経度 - ピクセル

(givenLng*widthOfContainerElement)/360

ここで、360 は度単位の合計経度です。

式 -緯度 - ピクセル

(givenLat*heightOfContainerElement)/180

ここで、180 は度単位の全緯度です。

//Height is calculated from the bottom

この数式の実用的な実装は、私の Web サイト(JavaScript のみを使用)で見つけることができます。

http://www.learntby.me/javascript/latLngconversion.php

まだ説明が必要な場合はお知らせください。

于 2012-08-10T11:08:05.007 に答える
8

緯度と経度の 2 つのペア間の距離の計算に関する情報は、インターネット上にたくさんあります。私たちは公開ウェブサイトでこれらの計算を使用しており、理解/議論するのは簡単ではありません (したがって、ここでは説明しません)。つまり、実装は簡単です。

距離を返す関数を作成したら、コーナー間の距離に関してマップの幅と高さを計算できるはずです。

次に、左上隅からポイントまでの水平距離と垂直距離を計算できます。

これで、マップの幅のどの比率が左側とポイントの間の距離で表されるかがわかります。その比率をピクセル幅に適用すると、左側とポイントの間のピクセル数が得られます。y 軸について繰り返します。

(左側からのピクセル) = (ピクセル単位の合計幅) * ((左側とポイントの間のジオコード距離) / (左側と右側の間のジオコード距離))

(上からのピクセル) = (ピクセル単位の高さの合計) * ((上とポイントの間のジオコード距離) / (上と下の間のジオコード距離))

編集:これをさらに調査すると、球面上の2点間の距離を概算し、それを平面にマッピングしているため、一部のソリューションが他のソリューションよりも正確な結果を提示することに気付くでしょう。距離が離れると精度が低下します。あなたへの最善のアドバイスは、最初にそれを試してみて、それがあなたのニーズを満たしているかどうかを確認することです.

于 2009-09-02T19:08:59.107 に答える
5

多くの異なる地図投影スキームがあります。マップで使用されているものを知る必要があります。

地図投影アルゴリズムと順方向/逆方向マッピングの詳細については、このリンクを参照してください。これは、多くの一般的な予測の式を提供します。

于 2009-09-02T19:09:46.780 に答える
1

<!DOCTYPE html>
<html>
<head>
<style>
#point{font-face:Arial; font-size:18px; color:#FFFF00; width:12px; height:12px;text-shadow: 2px 2px #000000}
#canvas {position: absolute; top: 0px; left: 0px; z-index: -2}
        html,
        body,
        #canvas {
            width: 100%;
            height: 100%;
            overflow: hidden;
            margin: 0
        }
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script>
$(window).on("load resize",function(e){

var w = $("#canvas").width();
var h = $("#canvas").height();
// New York, NY (https://maps.googleapis.com/maps/api/geocode/json?address=New%20York,%20NY)
               var lat = 40.91525559999999;
               var long = -73.70027209999999;


var x =  ((w/360) * (180 + long)) - 9;
var y =  ((h/180) * (90 - lat)) - 18;

$("#text").text('X:'+x+', Y:'+y);
$("#point").offset({ top: y, left: x });

});
</script>
</head>
<body>
<div id="text"></div>
<div id="point">▼&lt;/div>
<img id="canvas" border="0" src="http://friday.westnet.com/~crywalt/dymaxion_2003/earthmap10k.reduced.jpg">

</body>
</html>

于 2016-06-14T22:25:27.183 に答える