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

一、写在前面

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-Exampleshttps://docs.geoserver.org/latest/en/user/rest/index.html#resthttps://github.com/As-Zach/GeoServer-SpringBoot

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 geoserver-manager 发布图层并进行 CQL 过滤的步骤如下: 1. 首先,需要在 pom.xml 文件中添加 geoserver-manager 的依赖: ```xml <dependency> <groupId>org.geoserver</groupId> <artifactId>gs-manager</artifactId> <version>2.16.1</version> </dependency> ``` 2. 创建一个 GeoserverRESTManager 对象,并设置 Geoserver 的基本信息:URL、用户名和密码。 ```java GeoserverRESTManager manager = new GeoserverRESTManager("http://localhost:8080/geoserver", "admin", "geoserver"); ``` 3. 获取一个 GeoserverWorkspace 对象,用于发布图层。 ```java GeoserverWorkspace workspace = manager.getWorkspace("workspace_name"); ``` 4. 创建一个 GeoserverDataStore 对象,用于发布数据源和图层。在创建数据源时,可以设置 CQL 过滤器。 ```java // 创建 PostGIS 数据源 PostGISDataStoreEncoder encoder = new PostGISDataStoreEncoder(); encoder.setHost("localhost"); encoder.setPort(5432); encoder.setDatabase("database_name"); encoder.setUser("user_name"); encoder.setPassword("password"); encoder.setSchema("public"); encoder.setExposePrimaryKeys(true); encoder.setLooseBbox(true); encoder.setEstimatedExtents(true); encoder.setValidateConnections(true); encoder.setMaxConnections(10); encoder.setMinConnections(1); encoder.setConnectionTimeout(20); encoder.setMaxPreparedStatements(20); PostGISDataStore dataStore = workspace.createDatastore("datastore_name", encoder); // 设置 CQL 过滤器 String cqlFilter = "property_name='property_value'"; dataStore.setDefaultCQLFilter(cqlFilter); ``` 5. 创建一个 GeoserverFeatureType 对象,并设置图层的基本信息:名称、数据源、几何类型等。 ```java GeoserverFeatureType featureType = dataStore.createFeatureType("layer_name", "the_geom", "EPSG:4326"); ``` 6. 发布图层。 ```java dataStore.publishFeatureType(featureType); ``` 完成上述步骤后,就可以成功发布一个带有 CQL 过滤器的图层了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值