我需要编写一个函数,可以将纬度/经度定义的某个位置投影到地图(图像)上的 x,y 坐标。
地图本身似乎使用“比利时兰伯特”作为投影类型。
我找到了一些关于这个投影及其配置的官方信息: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);
}
(知道我的 gif 是 1000x1000)
LamberConformal 构造函数的 JavaDoc: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 给出了以下结果:
x=-1766051.0; y=-1.6355546E7;
将“中心点”(?)作为参数给出
x=500.0; y=500.0;
(地图中间,看起来不错)
有谁熟悉这个,或者能够从链接中找出配置?
编辑:
尝试用这个替换方法的最后一行:
return proj.forward(latLonPoint.getLatitude(), latLonPoint.getLongitude(), new Point(), false);
但不是更好。