0

経度と緯度の変換を探していて、現在使用しているこのアルゴリズムを見つけましたが、これが正しいアルゴリズムであるかどうかはわかりません。また、ツールチップを使用してマップ画像に特定の座標をペイントするにはどうすればよいですか。JPanel 内で paintComponent メソッドをオーバーライドしようとしましたが、JTooltip を適切に使用できるようにタグ画像をラベルにする必要があります。以下は、私が現在使用しているアルゴリズムです。それが正しいかどうか、またメインの写真の上に別の写真を配置する方法を教えてください。JLabel を使用する場合と同様に、setBounds メソッドを使用して場所を設定しましたが、配置するポイントのリストが適切に機能しませんでした。

public Point getXY(二重経度、二重緯度) {

    List<Integer> list = new ArrayList<Integer>();
    double mapWidth = 2000; 
    double mapHeight = 1000;
    // get x value
    double x = (longitude + 180) * (mapWidth / 360);
    int x1 = (int) Math.round(x);
    list.add(x1);
    // convert from degrees to radians
    double latRad = latitude * Math.PI / 180;

    // get y value
    double mercN = Math.log(Math.tan((Math.PI / 4) + (latRad / 2)));
    double y = (mapHeight / 2) - (mapWidth * mercN / (2 * Math.PI));
    int y1 = (int) Math.round(y);
    list.add(y1);
    return new Point(x1, y1);
} 
4

2 に答える 2

0

緯度/経度から XY への変換は「投影」と呼ばれ、さまざまなものがあります。球体または楕円体 (地球は完全な球体ではなくわずかに平らになっています) から平面へのマッピングには何らかの歪みが伴うため、「正しい」投影法はありません。

ここで使用している投影法は言いません。たとえそれが単なる基本的なものであっても、将来コードを読む人がどこから方程式を取得したかを知り、それらが正しいかどうかを確認できるようにする必要があります。また、この場合の「正しい」が何を意味するかについての概念がなければ、正しいかどうかはわかりません。

いくつかのテストデータを試しましたか? たとえば、同じ投影法を使用する紙の地図がある場合など、予想される結果がおおよそわかっている場合は、特定のランドマークの緯度と経度を入力し、XY 結果が地図の位置と一致するかどうかを確認することで、アルゴリズムを検証できます。 . 必要に応じて、特定の投影法を正確に変換できる Web サイトもいくつかあります。

正しい投影法は、何をしたいかによって大きく異なります。小さな地理的領域 (米国の州やヨーロッパの国など) の認識可能なレンダリングが必要なようです。もしそうなら、ほとんどすべての投影でうまくいきます。

地図上で距離や角度を測定したり、長距離を 1 マイル以内でナビゲートしたりできるように、正確なものが必要な場合は、生活が非常に速く複雑になります。既存のライブラリを使用できる場合は、非常に良いアイデアです。しかし、それはあなたがここで必要としているものではないと思います。

于 2016-03-07T18:24:48.400 に答える