2010-05-11 289 views
3

我正在使用Java的地理项目。如何在Java中将纬度和经度转换为x,y?

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

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

的地图看起来是这样的: http://upload.wikimedia.org/wikipedia/commons/7/74/Mercator-projection.jpg

谢谢

+0

你想让'JComponent'显示多大的区域?在低纬度地区,所有的坐标都是? (靠近赤道)或者你有一些靠近/在极点吗? – 2010-05-11 21:50:21

+2

你在问关于http://en.wikipedia.org/wiki/Mercator_projection吗?从球形到平面的常用投影?或者你需要http://en.wikipedia.org/wiki/Polyconic_projection?这是你问的吗? – 2010-05-11 21:54:21

回答

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),如果没有,你是澳大利亚人。

新增:你刚才扔在约墨卡托投影让我简单的回答不正确的(但可能仍然可以使用由你,如果你不真正关心投影)

+0

是的,在反经络上有一个域重叠,但我不认为OP会在斐济的Tavuki郊区绘制许多点,甚至Google Earth也会在那里变得有点诡异。 – msw 2010-05-11 22:24:16

+0

这不是一个墨卡托投影,这是他的地图使用。 – 2010-05-11 22:35:26

+0

从哪里**以上**部分... – msw 2010-05-11 22:43:03

0

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

下面的链接是一个很好的参考许多不同的地图投影与足够的数学公式来扼死一匹马。

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

这里是在PHP这样一个体面的参考。虽然不是Java,但它应该足够直接适用所列出的原则。

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

相关问题