Pasos para cargar el servicio de capa WMS en la versión Java de WorldWind

Recientemente, la empresa tiene requisitos de proyecto y necesita desarrollar una Tierra tridimensional de escritorio. Como soy desarrollador de Android y he realizado el desarrollo de WorldWind para Android, me asignaron la tarea de implementar WorldWind en el escritorio. Al comienzo de este proyecto, realmente se gastó mucha energía. WorldWind tiene menos tutoriales de desarrollo, muchos de ellos se basan en Eclipse y todos los tutoriales son exactamente iguales. La mayoría de estos tutoriales no son amigables para los principiantes. Grabo todos mis procesos de desarrollo para asegurarme de que los principiantes puedan entenderlos.
1. Descargue el código fuente de WorldWind.
Sitio web oficial de WorldWind: sitio web oficial de WorldWind ;
biblioteca de recursos WorlWind GitHub: WorldWind versión 2.0 ;
la última versión es la versión 2.2.0, pero estoy usando la versión 2.0.0 aquí. La razón es que estoy usando la versión 2.2.0. Según algunos tutoriales en Internet, el programa informará un error. Algunos de los métodos ya no están disponibles, así que usaré la versión 2.0 primero. Estudiémoslo más tarde cuando tengamos tiempo.
Insertar descripción de la imagen aquí
Después de descargar WorldWind-2.0.0.zip, descomprímalo, como se muestra en la siguiente figura.
Insertar descripción de la imagen aquí
2. Cree la aplicación WorldWind y
Insertar descripción de la imagen aquí
abra la herramienta de desarrollo IDEA. Archivo-Nuevo-Proyecto.
Insertar descripción de la imagen aquí
Seleccione Java y haga clic en Siguiente.
Insertar descripción de la imagen aquí
Complete el nombre de su proyecto y guarde la ruta. Finalmente haga clic en Finsh.
Después de la creación, cree una carpeta libs en el proyecto y el directorio para colocar varios archivos de dependencia, incluido el paquete jar de dependencia de worldwind. El directorio src es la carpeta principal del programa.
Insertar descripción de la imagen aquí
Ignore los dos archivos dll en la imagen por ahora, que se discutirán más adelante.
Descomprima el paquete zip descargado en el paso anterior y copie el paquete jar en la carpeta libs.
Insertar descripción de la imagen aquí
Estos 9 paquetes jar son: gdal.jar, pegamentogen-rt.jar, pegamentogen-rt-natives-windows-amd64.jar, jogl-all.jar, jogl-all-natives-windows-amd64.jar, plugin .jar, vpf-symbols.jar, worldwind.jar, worldwindx.jar.
Después de copiar, haga clic derecho en el proyecto-Abrir configuración del módulo,
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
después de ingresar al cuadro emergente Estructura del proyecto, haga clic en Dependencias y luego en el signo "+".
Insertar descripción de la imagen aquí
Seleccione JAR o directorios. Luego seleccione los 9 paquetes jar que acaba de copiar e impórtelos todos. Finalmente aparece la siguiente figura. Luego haga clic en Aplicar-Aceptar.
Insertar descripción de la imagen aquí
En este punto finaliza el trabajo de importación. Luego cree el programa en el directorio src. Haga clic derecho en la clase src-Nueva-Java.

public class MyWMSPanel extends JFrame {
    
    

    private static final long serialVersionUID = 1L;

    private WorldWindowGLCanvas worldWindowGLCanvas;
    private Model modelEarth;
    private JPanel worldWindPanel;

    //绘制主界面
    public MyWMSPanel(){
    
    
        this.setExtendedState(Frame.MAXIMIZED_BOTH);
        this.setTitle("Test");       //这里是应用窗口的title,按照需求填写
        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);

        //下面这两个是去掉worldwind自带的指南针和全球缩略图的方法,按照需求决定是否去掉。
        //Layer compass = worldWindowGLCanvas.getModel().getLayers().getLayerByName("Compass");
        //Layer worldMapLayer = worldWindowGLCanvas.getModel().getLayers().getLayerByName("World Map");
        //worldWindowGLCanvas.getModel().getLayers().remove(compass);
       //worldWindowGLCanvas.getModel().getLayers().remove(worldMapLayer);
        try {
    
    
            //请求地图的URL
            String uri = "http://127.0.0.1:18070/geoserver/ksh/wms";//这的地址是Geoserver发布的WMS服务,当然也可以使用其他服务器,路径到wms即可。
            URI serverURI = new URI(uri);

            //获得WMSCapabilities对象
            WMSCapabilities caps= WMSCapabilities.retrieve(serverURI);
            //解析WMSCapabilities数据
            caps.parse();

            AVList params = new AVListImpl();

            //图层的名称,这里需要注意一点,这个图层名是在Geoserver图层命名的,不需要图层名前面的工作空间,
            params.setValue(AVKey.LAYER_NAMES, "HBLangFang0_5m20180502");
            //地图服务的协议,这里是OGC:WMS
            params.setValue(AVKey.SERVICE_NAME, "OGC:WMS");
            //获得地图的uri,也就是上面定义的uri
            params.setValue(AVKey.GET_MAP_URL, uri);
            //在本地缓存文件的名称
            params.setValue(AVKey.DATA_CACHE_NAME, "HBLangFang0_5m20180502");
            params.setValue(AVKey.TILE_URL_BUILDER, new WMSTiledImageLayer.URLBuilder(params));

            WMSTiledImageLayer imageLayer = new WMSTiledImageLayer(caps, params);
            //图层名称
            imageLayer.setName("HBLangFang0_5m20180502");
            imageLayer.setEnabled(true);
            //图层的透明度
            imageLayer.setOpacity(1);
            //图层的最大显示高度
            imageLayer.setMaxActiveAltitude(33500000);
            worldWindowGLCanvas.getModel().getLayers().add(imageLayer);
        } catch (URISyntaxException e) {
    
    
            e.printStackTrace();
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }

        this.worldWindPanel.add(worldWindowGLCanvas, BorderLayout.CENTER);
        this.add(worldWindPanel);
    }

    public static void main(String[] args) {
    
    
        new MyWMSPanel().setVisible(true);
    }
}

Una vez escrito el código, ejecute el programa en este momento. Deberías poder verlo.
3. Resultados de la ejecución
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
La imagen de arriba es la capa cargada. Esto completa el tutorial para cargar el servicio WMS en la versión Worlwind Java.
4. Desarrollo y expansión
Los dos archivos dll en el directorio raíz mencionado anteriormente son para resolver el problema de webview cuando no se puede utilizar. Si no se utiliza, se pueden ignorar los siguientes pasos.
Cuando se utiliza la etiqueta Globos de WorldWind, se puede informar una excepción: no hay WebView64 en java.library.path

Solución: copie los archivos WebView32.dll y WebVIew64.dll en el paquete worldwind.zip y colóquelos en el directorio raíz del proyecto, luego copie el archivo webstart.xml en el paquete zip a la carpeta libs y luego compílelo nuevamente. él.

Supongo que te gusta

Origin blog.csdn.net/nanjumufeng/article/details/120821627
Recomendado
Clasificación