我正在研究Java中的地理项目。
输入是坐标:24.4444 N等 输出:显示坐标点的PLAIN地图(不是圆形)。
我不知道在JComponent上从坐标转换为x,y的算法,有人可以帮助我吗?
地图如下所示: http://upload.wikimedia.org/wikipedia/commons/7/74/Mercator-projection.jpg
谢谢
答案 0 :(得分:3)
鉴于您的稀疏示例,您的输入范围将是(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),如果没有,则表示你是澳大利亚人。
已添加:您只是简单介绍了墨卡托的预测,使我的简单答案不正确(但如果您实际上并不关心投影,可能还可以使用)
答案 1 :(得分:0)
以下链接是对许多不同地图投影的良好参考,其中有足够的数学公式来阻塞马。
http://www.remotesensing.org/geotiff/proj_list/
这是在PhP中这样做的一个不错的参考。虽然不是Java,但应该直截了当地应用所概述的原则。