私はJavaで地理的なプロジェクトに取り組んでいます。
入力は座標です: 24.4444 N など 出力: 座標のポイントを示すプレーン マップ (円形ではない)。
JComponent で座標から x,y に変換するアルゴリズムがわかりません。誰か助けてもらえますか?
マップは次のようになります: http://upload.wikimedia.org/wikipedia/commons/7/74/Mercator-projection.jpg
ありがとうございました
私はJavaで地理的なプロジェクトに取り組んでいます。
入力は座標です: 24.4444 N など 出力: 座標のポイントを示すプレーン マップ (円形ではない)。
JComponent で座標から x,y に変換するアルゴリズムがわかりません。誰か助けてもらえますか?
マップは次のようになります: http://upload.wikimedia.org/wikipedia/commons/7/74/Mercator-projection.jpg
ありがとうございました
まばらな例を考えると、入力の範囲は (90.0N - 90.0S) と (180W - 180E) になります。南と西をマイナスに変換すると、緯度 (90.0..-90.0) と経度 (180.0..-180.0) が得られます。
キャンバスのサイズ (140x120 ピクセルとしましょう) を考えると、次のようになります。
x = (latitude * canvas_height / 180.0) + (canvas_height / 2)
y = (longitude * canvas_width / 360.0) + (canvas_width / 2)
また:
x = (longitude * 120.0 / 180.0) + (120/2)
y = (latitude * 140.0 / 360.0) + (140/2)
ここで、丸め誤差を最小限に抑えるために操作を注文しました。これは、キャンバスの左上にポイント (0,0) があることを前提としています。そうでない場合は、あなたがオーストラリア人であることを前提としています。
追加:あなたはメルカトル図法について少し投げ込んだだけで、私の単純な答えが間違っています(ただし、実際に投影法を気にしないのであれば、まだ使用できる可能性があります)
MSWは良い例を提供しました。最終的に、アルゴリズムは使用される地図投影法に依存します。これが私が過去に使用したいくつかの良いリソースです。
次のリンクは、馬を窒息させるのに十分な数式を備えたさまざまな地図投影法への優れたリファレンスです。
http://www.remotesensing.org/geotiff/proj_list/
これは、PhPでこれを行うための適切なリファレンスです。Javaではありませんが、概説した原則を適用するのに十分簡単なはずです。