3

我正在使用 Java 进行地理项目。

输入是坐标:24.4444 N 等输出:显示坐标点的 PLAIN 地图(非圆形)。

我不知道在 JComponent 上从坐标转换为 x,y 的算法,有人可以帮我吗?

地图如下所示:http: //upload.wikimedia.org/wikipedia/commons/7/74/Mercator-projection.jpg

谢谢

4

2 回答 2

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),或者如果没有,则假设您是澳大利亚人。

补充:您刚刚介绍了墨卡托投影,使我的简单答案不正确(但如果您实际上不关心投影,您可能仍然可以使用)

于 2010-05-11T22:09:33.260 回答
0

MSW 提供了一个很好的例子。最终,算法取决于使用的地图投影。这是我过去使用的一些很好的资源。

以下链接很好地参考了许多不同的地图投影,其中包含足够的数学公式来窒息马。

http://www.remotesensing.org/geotiff/proj_list/

这是在 PhP 中执行此操作的不错参考。虽然不是 Java,但它应该足够直截了当,可以应用所概述的原则。

http://www.web-max.ca/PHP/article_1.php

于 2010-05-11T22:27:34.753 回答