一、下载worldwindjava

GitHub地址:https://github.com/NASAWorldWind/WorldWindJava/releases

二、配置开发环境

在eclipse上配置开发环境,新建java工程,工程下新建libs文件夹,将下载好的Worldwind解压出来,在文件根目录下找到gdal.jar、gluegen-rt.jar、gluegen-rt-natives-windows-amd64.jar、jogl-all.jar、jogl-all-natives-windows-amd64.jar、plugin.jar、vpf-symbols.jar、worldwind.jar、worldwindx.jar并复制到libs文件夹下,然后添加到buildpath。

三、引入Worldwind

在项目中引入Worldwind窗体。一个是WorldwindGLCanvas,也就是画布,所有的数据都是在这个画布上展示和浏览。一个是Model,三维的地球模型,包含了多个自带图层。

代码:

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;import javax.swing.JFrame;
import javax.swing.JPanel;import gov.nasa.worldwind.Model;
import gov.nasa.worldwind.WorldWind;
import gov.nasa.worldwind.avlist.AVKey;
import gov.nasa.worldwind.awt.WorldWindowGLCanvas;public class Test extends JFrame{private static final long serialVersionUID = 1L;private WorldWindowGLCanvas worldWindowGLCanvas; private Model modelEarth;                      private JPanel worldWindPanel;/*** 绘制主界面*/public Test() {this.setExtendedState(Frame.MAXIMIZED_BOTH); this.setTitle("Test");int width = (int) java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;int height = (int) java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;this.setSize(width, height);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.worldWindPanel = new JPanel();this.worldWindPanel.setBounds(0,0, width, height);Dimension canvasSize = new Dimension(width, height);        this.worldWindowGLCanvas = new WorldWindowGLCanvas();      this.worldWindowGLCanvas.setPreferredSize(canvasSize);              modelEarth = (Model) WorldWind.createConfigurationComponent(AVKey.MODEL_CLASS_NAME);   this.worldWindowGLCanvas.setModel(modelEarth);      this.worldWindPanel.add(worldWindowGLCanvas, BorderLayout.CENTER);this.add(worldWindPanel);}public static void main(String[] args) {new Test().setVisible(true);}
}

运行效果:

四、图层编辑

如果不想要左上角的世界地图和右上角的指南针,添加如下代码,可以移除自带图层中不需要的图层。

Layer compass = worldWindowGLCanvas.getModel().getLayers().getLayerByName("Compass");
Layer worldMapLayer = worldWindowGLCanvas.getModel().getLayers().getLayerByName("World Map");
worldWindowGLCanvas.getModel().getLayers().remove(compassLayer);
worldWindowGLCanvas.getModel().getLayers().remove(worldMapLayer);

运行效果:

三维GIS开发——WorldWindJava入门相关推荐

  1. 基于TerraDeveloper的三维GIS开发研究

    [中文题名]  基于TerraDeveloper的三维GIS开发研究 [英文题名]  Research on the Development of 3D GIS Based on TerraDevel ...

  2. 三维GIS开发的发展路线以及需要掌握的技能

    什么是三维gis? ​ 三维GIS在WebGIS的基础上,增加了对地球表面的第三维度,即高度或深度. 相比于二维层面的WebGIS,三维GIS能够更好的分析和处理地理空间数据,使用准确的三维地理模型可 ...

  3. osg 三维gis开发_三维GIS平台的可视化应用 (下)

    上一篇主要对三维GIS的基础数据和三维模型进行了一点说明,本篇将接着聊剩下的部分,主要是三维GIS平台能够支持什么样的场景展示,并来对平台的应用进行一些介绍. 没看过上篇的朋友可以先了解一下再看本篇: ...

  4. 学GIS开发怎么入门,GIS专业的学生应该掌握什么知识 ?

    (一) 打好编程基础 这篇文章仅给那些GIS专业的,想学GIS开发的,但现在还没怎么入门不知道该从哪学起的在校生参考的.这篇文章不是讨论GIS开发是否有前途的,也不是讨论做GIS是不是就一定应该做开发 ...

  5. 超图三维GIS开发概念学习

    1 二三维一体化 所谓三维是指三维地理空间和基于地理球面或椭球面的二维地图空间. 三维 GIS 指的是以三维地理空间和基于地理球面或椭球面二维地图空间为基础的 GIS. 三维 GIS 在展示效果和分析 ...

  6. osg 三维gis开发_3D GIS与BIM的美丽邂逅(艾三维BIM分享)

    GIS和BIM本处在两个不同的行业领域,二者跨界融合不是一场意外,而是各取所需.互惠互利.在行业应用中,BIM提供数据基础,GIS则提供空间参考.若将BIM视作珍珠,在3D GIS的精心串联下,必将成 ...

  7. osg 三维gis开发_GIS+BIM跨界融合应用:智能管理道路“健康”,精准定位路桥病害...

    点击上方蓝字  关注路桥BIM知识二环路高架桥是成都市中心城区最重要的快速通道,全程无红绿灯,2013年5月建成通车后,每天运送20多万人次.为及时发现和消除道路病害,保障道路畅通,二环路管养单位(成 ...

  8. osg 三维gis开发_三维GIS与游戏引擎的跨界融合,打造数字化孪生的平行世界

    游戏地图在游戏中起基础和关键作用,它承载游戏中的各种资源,是游戏系统中非常重要的组成部分(图1),所以游戏通常具有明显的地理意义.因此,虽然三维GIS与游戏引擎是两个不同的领域,但两者是有联系的. 游 ...

  9. osg 三维gis开发_OSG三维模型初探

    最近在研究OSG开发,准备用OSG+OSGEARTH开发一套三维地形GIS系统,目前研究在VS2008下把OSG-2.8.3(Debug和Release)和OSEARTH-2.0.0(Release, ...

最新文章

  1. SAP MM Transportation of PR Release Strategy with Classification
  2. python 结果写入excel_python中如何将测试结果写入到原有的excel表格(二)
  3. Javascript中最常用的61段经典代码
  4. 【后缀自动机】SPOJ 1812-LCSII
  5. 【SeeMusic】音符方块颜色设置 ( 单一颜色设置 | 多彩音符设置 | 定时变色设置 | 渐变颜色 | 分轨道提示 )
  6. python中值滤波去除椒盐噪声_python 中值滤波,椒盐去噪,图片增强实例
  7. 微软面试中简单的算法题目(转)
  8. 腾讯计费:亿万级大促活动自动化保障体系
  9. 第十一节:WebApi的版本管理的几种方式
  10. Linux 设备文件的创建和mdev
  11. stm32 ISP串口下载
  12. 金庸笔下人物名字的来历和意义
  13. web测试抓包基本功——使用Google的F12
  14. 【机器学习】Sklearn-cluster聚类方法
  15. Android第三方系统有哪些,第三方安卓定制系统LineageOS 14.1支持6款新设备:包括一加3T...
  16. 【云迁移教程】从阿里云迁移到华为云(生产环境)
  17. 微信群机器人(仿真企业微信群机器人)
  18. SpringBoot启动报错:Failed to introspect Class [XXX] from ClassLoader
  19. c语言定义未知长度一维数组,c++ 如何定义未知元素个数的数组
  20. 【小程序开发之文章详情页面的设计】文章详情页面如何布局

热门文章

  1. 【简便解法】1091 N-自守数 (15分)
  2. iphone屏幕上的圆圈怎么设置_iphone亮度条不变屏幕变暗怎么回事【解决方法】
  3. linux终端命令教程,Linux终端命令入坑技巧
  4. oracle impdp导入实例,Oracle数据泵导入导出案例
  5. python三级字典_python_三级字典
  6. 集群(二)——LVS-DR-Keepalived
  7. python中元组可以比较大小吗_python元组比较
  8. 没有互联网,我不会写程序了
  9. 如何在android的XML和java代码中引用字符串常量
  10. elasticsearch 客户端工具_ELK集群部署 - elasticsearch-7.9.3