使用geoserver-manager库操作geoserver发布图层

2022-12-31 17:16:31 浏览数 (1)

一、写在前面

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

二、主要内容

2.1 概述

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

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

重要的相关网址:

  • geoserver-manager 类库的使用文档 https://github.com/geosolutions-it/geoserver-manager/wiki/Various-Examples
  • geoserver 的 REST接口说明 https://docs.geoserver.org/latest/en/user/rest/index.html#rest

添加依赖

代码语言:javascript复制
<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 初始化

代码语言:javascript复制
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 创建一个工作区

代码语言:javascript复制
boolean created = publisher.createWorkspace("myWorkspace")

2.4 发布一个TIFF 图层

代码语言:javascript复制
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

0 人点赞