美文网首页
使用geoserver-manager库操作geoserver发

使用geoserver-manager库操作geoserver发

作者: 张云飞Vir | 来源:发表于2022-12-30 13:25 被阅读0次

    一、写在前面

    geoserver 提供了地图服务,可以通过它提供的 web 管理页面,创建存储库和发布图层。在实际使用中总不能每次都人工操作,太不方便了,往往还要和你的业务系统交互,在你的业务系统管理tiff 文件并发布。这个时候 geoserver-manager库就派上用场了,它封装了 geoserver 的一些 REST 接口,可以在你的Java项目中调用这些接口来实现你的需要。

    二、主要内容

    2.1 概述

    geoserver-manager 是使用Java库通过REST与GeoServer通信的类库。

    可以再你的Java项目中使用,它作为客户端工具使用 GeoServer 的REST 接口,来实现你的业务功能。

    重要的相关网址:

    添加依赖

    <dependency>
        <groupId>nl.pdok</groupId>
        <artifactId>geoserver-manager</artifactId>
        <version>1.7.0-pdok2</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.25</version>
        <scope>compile</scope>
    </dependency>
    
    

    下面是一些常用操作

    2.2 初始化

    String RESTURL  = "http://localhost:8080/geoserver";
    String RESTUSER = "admin";
    String RESTPW   = "geoserver";
            
    GeoServerRESTReader reader = new GeoServerRESTReader(RESTURL, RESTUSER, RESTPW);
    GeoServerRESTPublisher publisher = new GeoServerRESTPublisher(RESTURL, RESTUSER, RESTPW);
    

    2.3 创建一个工作区

    boolean created = publisher.createWorkspace("myWorkspace")
    

    2.4 发布一个TIFF 图层

    public void addTIFFDatastore(String workspace) throws Exception {
            addWorkspace(workspace);
    
            //判断数据存储(datastore)是否已经存在,不存在则创建
            String fileName = "/Users/zhangyunfei/Downloads/pvdms/pvdmsPath/1111.tif";
            //待创建和发布图层的数据存储名称store
            String store_name = fileName.substring(fileName.lastIndexOf("/") + 1, fileName.lastIndexOf("."));
    
            RESTDataStore restStore = manager.getReader().getDatastore(workspace, store_name);
            if (restStore == null) {
                GSGeoTIFFDatastoreEncoder gsGeoTIFFDatastoreEncoder = new GSGeoTIFFDatastoreEncoder(store_name);
                gsGeoTIFFDatastoreEncoder.setWorkspaceName(workspace);
                gsGeoTIFFDatastoreEncoder.setUrl(new URL("file:" + fileName));
                boolean createStore = manager.getStoreManager().create(workspace, gsGeoTIFFDatastoreEncoder);
                System.out.println("create store (TIFF文件创建状态) : " + createStore);
                boolean publish = manager.getPublisher().publishGeoTIFF(workspace, store_name, new File(fileName));
                System.out.println("publish (TIFF文件发布状态) : " + publish);
    
            } else {
                System.out.println("数据存储已经存在了,store:" + store_name);
            }
        }
    

    三、参考

    https://github.com/geosolutions-it/geoserver-manager/wiki/Various-Examples
    https://docs.geoserver.org/latest/en/user/rest/index.html#rest
    https://github.com/As-Zach/GeoServer-SpringBoot

    相关文章

      网友评论

          本文标题:使用geoserver-manager库操作geoserver发

          本文链接:https://www.haomeiwen.com/subject/wvjtcdtx.html