eclipse中添加sdk_在Eclipse中嵌入NASA World Wind Java SDK
eclipse中添加sdk
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应用程序一起使用。
进入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 topComposite top = new Composite(parent, SWT.EMBEDDED);top.setLayoutData(new GridData(GridData.FILL_BOTH));// Swing Frame and Paneljava.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 Panelpanel.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();}@Overridepublic 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视图
飞到地球仪中的某个位置
如果您希望应用程序以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/opensource/library/j-wwj/index.html
eclipse中添加sdk
eclipse中添加sdk_在Eclipse中嵌入NASA World Wind Java SDK相关推荐
- Eclipse 中添加注释,注释中包含作者时间等
Eclipse 中添加注释,注释中包含作者时间等 在使用Eclipse工作是,为了防止有人程序报错甩锅给自己,我们一般都会在Eclipse中添加注释,注释内容一般包括:作者.时间.类别.版本号等,来鉴 ...
- Word中添加压缩包,word中添加文件
Word中添加压缩包,word中添加文件 方式1_创建对象 目录结构 在word中创建对象 选择对象类型 4. 创建对象 5. 浏览选择文件 6. 下一步 7. 完成 8. 创建完成 可以看到文件已经 ...
- 计算机利用公式计算实发工资怎么弄,如何在excel 表中 添加税收计算程序?excle中计算税收的公式...
Excel新个税的计算公式 =ROUND(MAX((A2-5000)*{0.03;0.1;0.2;0.25;0.3;0.35;0.45}-{0;210;1410;2660;4410;7160;1516 ...
- Html怎样往div中添加文本,给div中添加文本元素
[javascript]代码库 给div中添加文本元素 div{ border: 1px solid blue; background-color: green; width: 300px; heig ...
- 【Revit二次开发】“附加模块”中添加“外部工具”AND外部工具中添加新建插件
写在前面,今天第一次接触Revit二次开发,要做的两件事情 第一,搭建环境(安装的是破解版2017的Revit软件.下载SDK2017的并安装.还有开发平台VS2015). 第二,首先就是运行Hell ...
- html表格中添加超链接,Excel表格中添加超链接的方法教程
在我们使用Excel表格的过程中,有时候需要为表格内的内容添加网站地址的超链接,以方便引入相关的内容,这个时候,我们就需要使用到添加超链接的知识了.那么,怎么在Excel表格内添加超链接呢?接下来由学 ...
- c# 中添加数据到数据库中的三种方法
1.利用SQL语句添加 在SQL语句中提供了INSERT语句进行数据添加,其语法格式如下. INSERT [Into] table_name[(column_list)] values (dat ...
- java pdf添加图片水印图片_Java 在PDF中添加文本水印、图片水印(基于Spire.Cloud.SDK for Java)...
Spire.Cloud.SDK for Java提供了接口pdfWartermarkApi可用于添加文本水印addTextWartermark()和图片水印addImageWartermark()到P ...
- eclipse服务器添加项目工程,eclipse创建和发布web项目(示例代码)
背景:电脑卡,myeclipse自带插件太多了,用起来卡,影响效率,于是装eclipse. 1.创建web项目: File-->New-->Dynamic web project 输入工程 ...
最新文章
- 计算机微格教学心得体会,微格教学心得体会
- [TCP/IP] TCP在listen时的参数backlog的意义
- thrift简单使用
- SQL注入——SQL注入漏洞利用(零)(值得收藏)
- 利用OLAMI在unity游戏中加入中文语音控制(一)
- Python多线程编程中使用Barrier对象进行同步
- Vue使用html2Canvas和canvas2Image下载二维码会模糊的问题解决方法
- golang基础-etcd介绍与使用、etcd存取值、etcd监测数据写入
- 感谢这几个公众号,已拿今日头条,蚂蚁金服Offer
- excel常用功能记录(不断更新)
- 几何布朗 matlab,几何布朗运动
- 2018研究生毕业论文重复率检测八要点
- 使用树莓派开启HomeKit智能家居系统 篇一:树莓派系统安装与配置
- 一天2篇Nature!任职同一高校,这对教授夫妻同时发表2项医学新成果
- 原创 关于微信拼车小程序开发的需求分析(分析建模)
- html网页公式编辑软件,如何在网页中插入MathType公式
- 使用jquery的bind来检测textarea,input等的文本变化
- python生成桌面路径(winreg)
- MacIOS Bonjour
- Invitation Cards
热门文章
- 正则表达式学习和正则表达式的使用(邮箱检测)
- 【转】Why C++ ? 王者归来
- vue实现xml在线编辑功能
- 饭店招两个服务员、洗碗工
- 沉睡者IT - [短视频运营] 抖音短视频成SEO新风口
- CAD命令使用教程之CAD软件中拉伸命令的巧用
- 苹果手机没电后显示无服务器,苹果手机掉电快?这两个功能才是罪魁祸首,赶紧关了吧!...
- “人肉代购”:靠什么在夹缝中生存?
- python语言的类型是_python到底是什么类型的语言
- 福布斯:日本第一大社交网站Mixi成长故事