java在Mollweide投影中获取我的世界地图中一个点的经度
我搜索了大约一天,但在Java代码中没有找到任何解决我问题的例子
我有一张2000*1400像素的世界地图,带有“Mollweide”投影。 我怎样才能知道我地图上的点(500300)的经度和纬度是多少? 我想用Java编写代码
我试着用“Java地图投影库”来实现这一点:
Point2D.Double pointonmap = null;
Point2D.Double latlon = null;
MolleweideProjection molproj=new MolleweideProjection();
pointonmap = new Point2D.Double (1400,1000);
latlon=molproj.inverseTransform(pointonmap,new Point2D.Double ());
System.out.println("latlon: " + latlon.getX() + ", " + latlon.getY());
有人能帮我吗?代码示例或提示
谢谢和问候
# 1 楼答案
这个答案使用了Mollweide projection上英文维基百科条目中的信息。我已经逐字逐句地抄写了其中的公式
简短的回答,这样你就可以编写自己的代码了:
获取地图的半径,r:
投影宽度/(2*√2)
获取θ,点在地图上的角度:
反正弦(y/(r*√2) )
注:反正弦是正弦的倒数。使用数学。java中的asin(a)
获取纬度:
反正弦((2*θ+正弦(2*θ))/PI)
获取经度:
PI*x/(2*R*√2*余弦(θ))+中央子午线
或者你可以复制这个
效率不高;x和y是双倍的,因为太懒了,不能写排版,所以要避免缩小范围
没有二传手没有接球手所有球员都是公开的
全世界都喜欢布朗纳博士的电视晚餐为你解决问题
和其他东西
伊诺伊
在调用构造函数之后
你可以从
ted.longitude
和ted.latitude
得到纬度和经度。此外,经度可能必须根据中央子午线在投影上的位置进行调整