0

点の 2 つのベクトルがあり、散布図を作成すると、次のパスが得られます (各色は、パスの異なるセグメントにすぎません。一部のセグメントは直線であり、一部のセグメントは、半径の円の特定の弧の長さを取ることによって構築されます)。

s

次に、これらのポイントを取得し、Google Earth の Javascript API を使用して地球の表面にプロットします。

// Create the placemark
var lineStringPlacemark = ge.createPlacemark('');

// Create the LineString; set it to extend down to the ground
// and set the altitude mode
var lineString = ge.createLineString('');

lineStringPlacemark.setGeometry(lineString);
lineString.setExtrude(true);
lineString.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);

// Add LineString points
lineString.getCoordinates().pushLatLngAlt( 200,  300);
lineString.getCoordinates().pushLatLngAlt( 200.50505051, 300);

... all points ...

ge.getFeatures().appendChild(lineStringPlacemark);

したがって、私は基本的にそれらを緯度と経度として扱っています。この時点でパスが地球上のどこに表示されるかは気にしないでください。これを行うと、それ自体にループするパスが得られます。これは、地球が球体であることが原因であると想定しています。

ここに画像の説明を入力

Google Earth は、地表へのあらゆる種類の線の投影を処理できると思っていました。これを防ぐ/目的のパスを達成するために、どのような変換を行うことができますか? 元のポイントは x=[0,500] と y=[0,500] の座標フレームから来ており、そのフレームのポイントを地球上の緯度と経度に取得しようとしています!

4

1 に答える 1

0

問題は、緯度と経度がラップされていることです。

緯度は、赤道 (0 度) の北または南の度数で表されます。値の範囲は -90 度から 90 度です。

経度は、本初子午線を基準とした度単​​位の角距離です。子午線の西側の値は、-180 ~ 0 度です。子午線の東の値の範囲は 0 ~ 180 度です。

あなたが抱えている問題は、指定された範囲 [-90,90] および [-180.180] の外の値がラップされることです。これは、たとえば +150 の緯度が実際には -60 で描画されることを意味します。+500 の経度は +140 で描画されます。

フレーム内にプロットを保持するには、緯度を [-90, 90] (北極と南極の間) の範囲に制限する必要があります。地球の半分しか見えないため、経度は同じ量に制限する必要があります。一度に、[-90、90]。

これを達成するには、すべての角度を次の値で割るだけです。これにより、5.6ラインがフレーム内に 500/5.6 = 89.28 として保持されます。

于 2012-12-01T17:55:48.447 に答える