eclipse中添加sdk

    技术2024-01-26  107

    WWJ SDK是建立在Java OpenGL(JOGL)扩展之上的3D图形地球仪。 WWJ类层次结构的核心是WorldWindowGLCanvas ,它是GLCanvas的子类。 GLCanvas依次是抽象窗口工具包(AWT)组件。

    WWJ对AWT的依赖是想要在其Eclipse应用程序中使用WWJ的GIS开发人员的障碍。 您可能知道,Eclipse使用了与AWT不兼容的Standard Widget Toolkit(SWT)。 此外,AWT和JOGL紧密集成在一起,这使得AWT接口的端口很难连接到SWT。 本文提供了一个解决方案,使您可以将WWJ SDK与Eclipse应用程序一起使用。

    与WWJ捆绑在一起的数据集

    WWJ捆绑了以下低,中和高分辨率数据集(请参阅参考资料中的链接):

    蓝色大理石(1公里/像素分辨率) i-cubed Landsat 7(15米/像素分辨率),来自马里兰大学高级计算机研究所的全球土地覆盖设施 来自NASA喷气推进实验室的高程数据(SRTM30Plus / SRTMv2 / USGS NED数据集) USGS地形图,B&W Ortho和彩色市区USGS和Microsoft®Research 来自USGS地理名称信息系统的美国地名 国家地理空间情报局的世界地名

    进入SWT / AWT桥

    SWT正在Swift成为用于快速构建可扩展且功能强大的客户端应用程序的顶级窗口工具箱。 SWT和AWT / Swing都在争夺Java用户界面开发的优势。 考虑到两者都有优点和缺点,Eclipse Foundation认识到有必要构建SWT / AWT桥,该桥允许您将AWT / Swing组件嵌入到SWT中。 自Eclipse 3.0版以来,该桥已成为SWT的一部分。 这个简单的API位于org.eclipse.swt.awt包中(请参阅参考资料 )。

    SWT / AWT桥是您需要通过SWT将基于AWT的World Wind 3D Globe嵌入到Eclipse应用程序中的关键组件。

    WWJ 3D Earth的Eclipse视图

    借助SWT中已经存在的SWT / AWT桥,可以轻松地将WWJ 3D Earth嵌入到视图中。 清单1演示了执行此任务的基本Eclipse视图:

    清单1. WWJ 3D Earth的基本Eclipse视图
    package org.eclipse.plugin.worldwind.views; _ /** * World Wind Eclipse RCP Earth View * @author Vladimir Silva * */ public class EarthView extends ViewPart { private static final Logger logger = Logger.getLogger(EarthView.class); public static final String ID = EarthView.class.getName(); final WorldWindowGLCanvas world = new WorldWindowGLCanvas(); /** * Initialize the default WW layers */ static { initWorldWindLayerModel(); } public EarthView() { } /** * This is a callback that will allow us to create the viewer and initialize * it. */ public void createPartControl(Composite parent) { // GUI: an SWT composite on top Composite top = new Composite(parent, SWT.EMBEDDED); top.setLayoutData(new GridData(GridData.FILL_BOTH)); // Swing Frame and Panel java.awt.Frame worldFrame = SWT_AWT.new_Frame(top); java.awt.Panel panel = new java.awt.Panel(new java.awt.BorderLayout()); worldFrame.add(panel); // Add the WWJ 3D OpenGL Canvas to the Swing Panel panel.add(world, BorderLayout.CENTER); parent.setLayoutData(new GridData(GridData.FILL_BOTH)); } /* * Initialize WW model with default layers */ static void initWorldWindLayerModel () { Model m = (Model) WorldWind.createConfigurationComponent( AVKey.MODEL_CLASS_NAME); world.setModel(m); } /** * Passing the focus request to the viewer's control. */ public void setFocus() { } public static void repaint() { world.repaint(); } @Override public void dispose() { super.dispose(); } }

    清单1首先创建一个顶级SWT组件,该组件使用该桥嵌入WWJ swing OpenGL画布:

    Composite top = new Composite(parent, SWT.EMBEDDED); top.setLayoutData(new GridData(GridData.FILL_BOTH));

    接下来,使用桥在顶部SWT组件内创建一个子AWT框架,以承载WWJ OpenGL画布所需的Swing panel :

    java.awt.Frame worldFrame = SWT_AWT.new_Frame(top); java.awt.Panel panel = new java.awt.Panel(new java.awt.BorderLayout());

    最后,将WWJ GL画布添加到Swing panel :

    WorldWindowGLCanvas world = new WorldWindowGLCanvas(); panel.add(world, BorderLayout.CENTER);

    图1显示了作为Rich Client Platform(RCP)应用程序的一部分嵌入在Eclipse视图中的Earth:

    图1. WWJ Earth作为Eclipse视图
    WWJ与Google Earth和Virtual Earth

    Google Earth和Virtual Earth是流行的3D地球仪,也可以使用。 它们也是3D地球,可让用户放大并查看位置。 但是,尽管它们与WWJ相似,但是它们的理念却截然不同。 Google Earth和Virtual Earth是商业产品,而不是SDK,因此开发人员无法根据自己的需求增强客户端。 例如,科学家无法添加对科学数据格式或地图服务接口的支持,例如OpenGIS Web Map Services(WMS)或Web Feature Services(WFS)。 WWJ的开放源代码性质使您可以将地球嵌入几乎任何类型的客户端中,就像您在本文中看到的那样。 WWJ也可以修改为访问任何类型的数据服务。 与商业对手相比,这是一个巨大的优势。

    飞到地球仪中的某个位置

    如果您希望应用程序以Google Earth的样式飞行到特定的纬度/经度,则需要三个对象:

    一个View ,它遵循左手坐标系的OpenGL约定,提供了从模型坐标到眼睛坐标的坐标转换 代表您正在查看的世界的3D椭球体的Globe 您想飞到的点的纬度/经度坐标

    可选信息包括航向角和俯仰角以及以米为单位的高度。

    清单2演示了如何飞往某个位置:

    清单2.飞行到给定的纬度/经度坐标
    public void flyTo (LatLon latlon) { View view = world.getView(); Globe globe = world.getModel().getGlobe(); view.applyStateIterator(FlyToOrbitViewStateIterator.createPanToIterator( (OrbitView)view , globe , latlon // bbox , Angle.ZERO // Heading , Angle.ZERO // Pitch , 3e3 ) // Altitude/Zoom (m) ); }

    View类的applyStateIterator()方法可平移或缩放地球,从而在地球的目标坐标上产生平滑的飞applyStateIterator()或瞬时缩放效果。

    WWJ将地球以外的其他地球捆绑在一起; 从WWJ版本0.4.1开始可用的3D世界是:

    地球( 有关包含的数据集,请参阅参考资料)。 月球:40xx / 30xx颜色/灰度图层,是结合了Clementine任务的几个光谱带而创建的。 火星:包括来自诸如火星轨道相机(MOC)等任务的高分辨率图像,使用来自NASA喷气推进实验室的数据以及来自NASA火星奥德赛/ THEMIS的数据创建的高程图。

    图2将地球,月球和火星显示为三个不同的Eclipse视图:

    图2. RCP应用程序中的地球,月球和火星视图

    结论

    World Wind Java SDK是用Java和OpenGL编写的3D交互式世界查看器,它允许任何用户从外太空缩放到地球上的任何地方。 本文为您嵌入WWJ SDK作为Eclipse视图奠定了基础,从而为Eclipse中的GIS开发获得了一组新的强大工具。


    翻译自: https://www.ibm.com/developerworks/java/library/j-wwj/index.html

    相关资源:2018718(最新eclipse 下android开发工具包),集成了sdk,SDKManager,eclipse都是配套的,我一直再用它开发
    Processed: 0.017, SQL: 9