三维GIS开发——WorldWindJava入门

一、下载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);

运行效果:

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TheMatrixs

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值