2

私は OpenMap を使用しており、com.bbn.openmap.layer.shape.ShapeFile を使用して ShapeFile を読み取っています。境界ボックスは、39.583642,-104.895486 のように、緯​​度/経度ポイントとして読み込まれます。境界ボックスは、左下のポイントと右上のポイントで、ポイントが含まれる場所を表します。OpenMap で「ラジアン」と名付けられた「ポイント」は、[0.69086486, -1.8307719, 0.6908546, -1.8307716, 0.6908518, -1.8307717, 0.69085056, -1.83077022, 0.690849. 、0.6908477、-1.8307738、0.69084626、-1.8307749、0.69084185、-1.8307792]。

「0.69086486、-1.8307719」のようなポイントを、通常のグラフィックスで使用できる x、y 座標に変換するにはどうすればよいですか?

ポイントを Excel に取り込んでグラフ化すると、指定された場所 (緯度/経度) の道路の曲線と一致する曲線が作成されるため、ここで必要なのはある種の変換だけだと思います。ただし、軸は手動で調整する必要があり、指定された境界ボックスは指定されたポイントとは異なる形式であるように見えるため、軸を調整する方法については参考になりません。

ESRI Shapefile の技術的な説明では、これについて言及されていないようです ( http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf )。

4

2 に答える 2

1

0.69086486, -1.8307719ラジアン単位の緯度と経度です。

まず、度に変換 ((180/pi) を掛ける) すると、バウンディング ボックスと座標の間で共通の単位が得られます。

次に、次のようにして、すべてをローカル フレームにプロットできます。

x = (longitude-longitude0)*(6378137*pi/180)*cos(latitude0*pi/180)
y = (latitude-latitude0)*(6378137*pi/180)

(緯度 0, 経度 0) は基準点 (境界ボックスの左下隅など) の座標です。角度の単位は、距離の単位はメートルです。

編集 -- 説明 : これは、点 (lat0、lon0) を中心とする半径 6378137.0 m (WGS84 楕円体の半長軸) の球と見なされる地球の正投影です。

于 2010-05-15T09:33:17.837 に答える
0

OpenMap では、ラジアンから 10 進数に変換する方法がいくつかあります。

Length.DECIMAL_DEGREE.fromRadians(radVal);
Math.toDegrees(radVal)  // Standard java library

配列の場合、ProjMath.arrayDegToRad(double[] radvals); を使用できます。

最後のものには注意してください。変換はその場で行われます。したがって、OMPoly から緯度/経度配列を取得する場合は、変換する前にまずそのコピーを作成してください。そうしないと、ラジアンであると予想される OMPoly の内部座標が台無しになります。

于 2010-05-19T18:53:05.173 に答える