マップ(画像)のx、y座標に緯度/経度で定義された位置を投影できる関数を記述する必要があります。lambert 2008投射
地図自体は、投影タイプとして「ベルギーのランバート」を使用しているようです。
この投影法とその設定についての公式の情報はhttp://ign.be/FR/FR2-1-4.shtmとhttp://ign.be/Common/Lambert2008/Transformation_Geographic_Lambert_FR.pdfです(フランス語では必要に応じて翻訳します)。
基本的に、私はいくつかのライブラリを使用する方が簡単だという結論に達しました(これは必須条件ではありません)。いくつかの研究の後で、OpenMapは仕事をすることができるはずです。
だから、ここで私がこれまでに得たものである:
private Point mapCoordinatesToPoint(LatLonPoint latLonPoint) {
LatLonPoint centerLatLonPoint = new LatLonPoint(50.797815, 4.3592158333333333333333333333333);
Proj proj = new LambertConformal(centerLatLonPoint, 1, 1000, 1000, 4.3592158333333333333333333333333, 49.833333333333333333333333333333, 51.166666666666666666666666666667, 50.797815, 649328.0, 665262.0, Ellipsoid.GRS_1980);
return proj.forward(latLonPoint);
}
LamberConformalコンストラクタの
のJavaDoc(私のGIFは1000×1000であることを知っている):http://openmap.bbn.com/doc/api/com/bbn/openmap/proj/LambertConformal.html#LambertConformal%28com.bbn.openmap.LatLonPoint,%20float,%20int,%20int,%20double,%20double,%20double,%20double,%20double,%20double,%20com.bbn.openmap.proj.Ellipsoid%29
を私は設定していなかったと思いますそれは正しい:地図上のある点、xxxは、この結果を与える:
012516410617451515053691パラメータとして「センターポイント」(?)を与えるは
誰でもこの精通し、またはリンクから設定を把握することができ
x=500.0; y=500.0;
(OKに見えるマップの真ん中を、)を与えますか?
EDIT:
return proj.forward(latLonPoint.getLatitude(), latLonPoint.getLongitude(), new Point(), false);
ではなく、よりよい:
はこれでメソッドから最後の行を置き換えてみました。