使用Java和任何外部库,如何将纬度/经度点绘制到地球的图形表示中?

我目前正在使用Java Map Projection Library (我能够从作者那里获取用于Applet的代码并修改它以用于桌面应用程序 – 不确定他是否链接到他的网站上的那个)来绘制应用程序中的地球地图。 但是,我想更进一步。 我有一组我想在这张地图上绘制的纬度/经度点 – 我只需要在每个点画一个圆圈,也许需要在地图上画一些连接圆圈(点)的线条。 但是,由于用户使用内置的平移和缩放function,因此需要在适当的位置重绘点。 我能够实现的最好的是在缩放时保持点,即使这样,在放大时点也会变大。

我完全愿意切换库,但是我真的没有找到一个可以绘制世界地图的库,特别是在Swing组件上(它不需要那么准确,只是在某种程度上展示各种大陆)正确地)并且还在该地图的顶部绘制附加点并使它们“粘贴”到各种纬度/经度坐标。

我看过谷歌地球和NASA WorldWind,但它们对我的目的来说非常沉重(我不需要任何详细或准确的东西)并且它似乎不容易离线使用并将世界图像视图集成到现有的申请。

建议还是想法?

您可以查看www.osgeo.org Java堆栈的其他组件。 其中一个是geotools: http ://geotools.codehaus.org/

他们还在开发创建GUI: http : //geotools.codehaus.org/GUI+Architecture

虽然我还没有使用它,但SwingLabs SwingX-WS项目有一个“丰富的地图查看器组件”。 有一个关于Java.net页面上的map组件入门的教程。

处理地理空间数据可能会非常棘手。 采取什么方法取决于显示数据时您需要多准确。 GIS for Web Developers是一本很好的书,它涵盖了地理空间数据的问题以及如何将数据从数据源传输到显示器上。 它适用于基于Web的显示,但概念是相同的。

如果您不需要高度准确性,一种简单的方法是找到未投影的基本地图。 使用基本地图,可以使用简单的笛卡尔坐标轻松显示纬度/经度。

如果你确实需要一个准确的显示,那么真的没有办法避免相当复杂的库。 将具有不同基准和投影的地理空间数据转换为可以向用户显示的内容涉及大量数学。

你应该看看OpenMap 。

几年来,我们一直使用OpenMap在桌面应用程序中显示GPS轨迹。 为跟踪点,历史记录,注释和您自己的数据源添加自己的图层非常容易。 如果您不希望它拥有它们,则无需任何外部连接。

我很快就看了GeoTools,但似乎开始了,至少一两年前比我们用OpenMap完成的更复杂。 我们最近一直在探索WorldWind ,但它绝对是我们所需要的。 与需要相当不错的video卡的WorldWind相比,OpenMap几乎不需要马力。

我曾经在一段时间内使用OpenMap作为一个小应用程序 – 这是一个黑客,但显示了如何做到这一点。 该应用程序使用NOAA的数据显示了不同年份的飓风。 你可以在这里下载:

http://github.com/DonBranson/SnarfNOAA