简介与下载

GeoServer-Manager是使用Java编写的面向GeoServer的客户端库,通过GeoServer的REST管理接口与GeoServer交互。提供了访问GeoServer并管理(增删改查)其中工作区、数据存储、图层、图层组、样式等的接口函数。

其为github上的开源项目,最近一次更新在五年前。

项目源码: https://github.com/geosolutions-it/geoserver-manager.

jar库:http://maven.geo-solutions.it/it/geosolutions/geoserver-manager/1.7.0/geoserver-manager-1.7.0.jar

依赖

在maven项目的pom.xml中配置依赖。

依赖库除了geoserver-manager以外,还需要geoserver-manager用到的一些外部依赖。

  1. <repositories>
  2. <repository>
  3. <id>GeoSolutions</id>
  4. <url>http://maven.geo-solutions.it/</url>
  5. </repository>
  6. </repositories>
  7. <dependencies>
  8. <dependency>
  9. <groupId>it.geosolutions</groupId>
  10. <artifactId>geoserver-manager</artifactId>
  11. <version>1.7.0</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.slf4j</groupId>
  15. <artifactId>slf4j-api</artifactId>
  16. <version>1.7.30</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.slf4j</groupId>
  20. <artifactId>slf4j-nop</artifactId>
  21. <version>1.7.30</version>
  22. </dependency>
  23. <dependency>
  24. <groupId>commons-codec</groupId>
  25. <artifactId>commons-codec</artifactId>
  26. <version>1.11</version>
  27. </dependency>
  28. <dependency>
  29. <groupId>commons-io</groupId>
  30. <artifactId>commons-io</artifactId>
  31. <version>1.4</version>
  32. </dependency>
  33. <dependency>
  34. <groupId>commons-logging</groupId>
  35. <artifactId>commons-logging</artifactId>
  36. <version>1.1.1</version>
  37. </dependency>
  38. <dependency>
  39. <groupId>commons-httpclient</groupId>
  40. <artifactId>commons-httpclient</artifactId>
  41. <version>3.1</version>
  42. </dependency>
  43. <dependency>
  44. <groupId>org.jdom</groupId>
  45. <artifactId>jdom</artifactId>
  46. <version>1.1.3</version>
  47. </dependency>
  48. </dependencies>

编码发布矢量数据

此处以shp格式为例。

  1. import it.geosolutions.geoserver.rest.GeoServerRESTManager;
  2. import it.geosolutions.geoserver.rest.GeoServerRESTPublisher;
  3. import it.geosolutions.geoserver.rest.decoder.RESTDataStore;
  4. import it.geosolutions.geoserver.rest.encoder.datastore.GSShapefileDatastoreEncoder;
  5. import java.io.File;
  6. import java.net.URL;
  7. public class shpTest {
  8. public static void main(String[] args) throws Exception {
  9. //GeoServer连接配置
  10. String url = "http://localhost:8080/geoserver";
  11. String userName = "admin";
  12. String passWord = "geoserver";
  13. String workSpace = "test"; //创建的工作区名称
  14. String storeName = "shpTest"; //创建的数据存储名称
  15. //与GeoServer连接,进行管理
  16. GeoServerRESTManager manager = new GeoServerRESTManager(new URL(url), userName, passWord);
  17. GeoServerRESTPublisher publisher = manager.getPublisher();
  18. //创建工作区
  19. boolean createWorkSpace = publisher.createWorkspace(workSpace);
  20. System.out.println("create ws " + createWorkSpace);
  21. //待发布shp数据路径与矢量数据包路径
  22. String filePath = "F:\\GeoServerDatabase\\Community\\Community.shp";
  23. String zipPath = "F:\\GeoServerDatabase\\Community\\Community.zip";
  24. //创建shp数据存储
  25. GSShapefileDatastoreEncoder gsShapefileDatastoreEncoder= new GSShapefileDatastoreEncoder(storeName,new URL("file:" + filePath));
  26. boolean createStore = manager.getStoreManager().create(workSpace, gsShapefileDatastoreEncoder);
  27. System.out.println("create shp store " + createStore);
  28. //发布shp图层(如果没有目标数据存储则会先自动创建该命名数据存储再发布)
  29. boolean publish = manager.getPublisher().publishShp(workSpace, storeName, "Community",new File(zipPath));
  30. System.out.println("publish shp " + publish);
  31. //读取目标矢量数据存储
  32. //RESTDataStore restDataStore = manager.getReader().getDatastore(workSpace, storeName);
  33. }
  34. }

编码发布栅格数据

此处以GeoTiff格式为例。

  1. import it.geosolutions.geoserver.rest.GeoServerRESTManager;
  2. import it.geosolutions.geoserver.rest.GeoServerRESTPublisher;
  3. import it.geosolutions.geoserver.rest.decoder.RESTCoverageStore;
  4. import it.geosolutions.geoserver.rest.encoder.coverage.GSCoverageEncoder;
  5. import static it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy.REPROJECT_TO_DECLARED;
  6. import java.io.File;
  7. import java.net.URL;
  8. public class tiffTest {
  9. public static void main(String[] args) throws Exception {
  10. //GeoServer连接配置
  11. String url = "http://localhost:8080/geoserver";
  12. String userName = "admin";
  13. String passWord = "geoserver";
  14. String workSpace = "test"; //创建的工作区名称
  15. String storeName = "tiffTest"; //创建的数据存储名称
  16. //与GeoServer连接,进行管理
  17. GeoServerRESTManager manager = new GeoServerRESTManager(new URL(url), userName, passWord);
  18. GeoServerRESTPublisher publisher = manager.getPublisher();
  19. //创建工作区
  20. boolean createWorkSpace = publisher.createWorkspace(workSpace);
  21. System.out.println("create ws " + createWorkSpace);
  22. //初始化和构造栅格数据储存
  23. String srs = "EPSG";//SRS空间参考系统 crs坐标参考系统
  24. GSCoverageEncoder gsCoverageEncoder = new GSCoverageEncoder();
  25. gsCoverageEncoder.setName("test");
  26. gsCoverageEncoder.setTitle("test");
  27. gsCoverageEncoder.setSRS(srs);
  28. gsCoverageEncoder.setNativeFormat("GeoTIFF");
  29. gsCoverageEncoder.addSupportedFormats("GEOTIFF");
  30. gsCoverageEncoder.addKeyword("geoTiff");
  31. gsCoverageEncoder.addKeyword("WCS");
  32. gsCoverageEncoder.setNativeCRS(srs);
  33. gsCoverageEncoder.setRequestSRS(srs);
  34. gsCoverageEncoder.setResponseSRS(srs);
  35. gsCoverageEncoder.setProjectionPolicy(REPROJECT_TO_DECLARED);
  36. gsCoverageEncoder.setLatLonBoundingBox(-180, -90, 180, 90, "EPSG:4326");
  37. //创建栅格数据存储
  38. boolean createStore = manager.getPublisher().createCoverage(workSpace,storeName,gsCoverageEncoder);
  39. System.out.println("Coverage store " + createStore);
  40. //待发布GeoTIFF数据路径
  41. String filePath = "F:\\GeoServerDatabase\\test.tif";
  42. //发布GeoTIFF(如果没有目标数据存储则会先自动创建该命名栅格数据存储再发布)
  43. boolean publish = manager.getPublisher().publishGeoTIFF(workSpace, storeName,new File(filePath));
  44. System.out.println("publish Coverage " + publish);
  45. //读取目标栅格数据存储
  46. //RESTCoverageStore restCoverageStore = manager.getReader().getCoverageStore(workSpace, storeName);
  47. }
  48. }

GeoServer-Manager应用:java编码实现发布矢量数据或栅格数据至GeoServer的更多相关文章

  1. Java编码安全

    目录 Java编码安全 数据校验 规则1.1:校验跨信任边界传递的不可信数据 规则1.2:禁止直接使用不可信数据来拼接SQL语句 规则1.4:禁止直接使用不可信数据来记录数据 规则1.6:验证路径前将 ...

  2. 10个精妙的Java编码最佳实践

    这是一个比Josh Bloch的Effective Java规则更精妙的10条Java编码实践的列表.和Josh Bloch的列表容易学习并且关注日常情况相比,这个列表将包含涉及API/SPI设计中不 ...

  3. 你知道吗?10个精妙的 Java 编码最佳实践

    这是一个比Josh Bloch的Effective Java规则更精妙的10条Java编码实践的列表.和Josh Bloch的列表容易学习并且关注日常情况相比,这个列表将包含涉及API/SPI设计中不 ...

  4. docker swarm实现java项目的发布/滚动更新/回滚/镜像管理

    使用docker swarm滚动更新java项目,部署集群,这一切的前提是使用Jenkins+maven进行项目打包,分发等功能 具体可以参考我的另外三篇文章 https://www.cnblogs. ...

  5. Java 13 即将发布,新特性必须抢先看!

    作者:h4cd 本文转载自开源中国(ID:oschina2013) 由于 Java 现在采取"半年发布一次新版本"的模式,所以 Java 12 的下一个版本 Java 13/JDK ...

  6. java编码过滤器

    1.java编码过滤器的作用: java过滤器能够对目标资源的请求和响应进行截取,过滤信息执行的优先级高于servlet. 2.java过滤器的使用: (1)编写一个普通的java类,实现Filter ...

  7. Web Service 的创建简单编码、发布和部署

    最近,老大准备将已有的C/S架构项目中的通信部分做成通用,需要将其支持WebService为以后项目向着B/S架构升级做好铺垫,为此身为屌丝的我去各种百度WebService是个什么卵玩意,然后逐渐搭 ...

  8. java中文乱码解决之道(四)-----java编码转换过程

    前面三篇博客侧重介绍字符.编码问题,通过这三篇博客各位博友对各种字符编码有了一个初步的了解,要了解java的中文问题这是必须要了解的.但是了解这些仅仅只是一个开始,以下博客将侧重介绍java乱码是如何 ...

  9. 资料推荐--Google Java编码规范

    之前已经推荐过Google的Java编码规范英文版了: http://google-styleguide.googlecode.com/svn/trunk/javaguide.html 虽然这篇文章的 ...

随机推荐

  1. weblogic漏洞初探之CVE-2015-4852

    weblogic漏洞初探之CVE-2015-4852 一.环境搭建 1. 搭建docker 这里用了vulhub的环境进行修改:https://vulhub.org/ 新建个文件夹,创建两个文件doc ...

  2. 学生信息管理系统.cpp(大二上)

      #include<iostream> #include<fstream> #include<string> #include<iomanip> #i ...

  3. PHP中国际化的字符串比较对象

    在 PHP 中,国际化的功能非常丰富,包括很多我们可能都不知道的东西其实都非常有用,比如说今天要介绍的这一系列的字符排序和比较的功能. 排序 正常来说,如果我们对数组中的字符进行排序,按照的是字符的 ...

  4. 还不知道PHP有闭包?那你真OUT了

    做过一段时间的Web开发,我们都知道或者了解JavaScript中有个非常强大的语法,那就是闭包.其实,在PHP中也早就有了闭包函数的功能.早在5.3版本的PHP中,闭包函数就已经出现了.到了7以及后 ...

  5. Windows 10 64位操作系统 下安装、连接测试sqlite3 sql基本操作 增删改

    一.下载sqlite安装包 1:详细下载安装版本可见官网:https://www.sqlite.org/download.html 2:百度盘分享连接:https://pan.baidu.com/s/ ...

  6. linux 下 svn配置;以及多仓库配置

    http://www.linuxidc.com/Linux/2016-01/127679.htm https://blog.csdn.net/mrwu9902/article/details/7869 ...

  7. phpQuery

    以下资料均来自官方文档,官方文档地址:https://code.google.com/archive/p/phpquery/wikis 基础 示例 phpQuery::newDocumentFileX ...

  8. 如何使用jemeter进行性能测试

    下载链接:http://jmeter.apache.org/download_jmeter.cgi 一:如何使用jemeter进行压测 1)稳定性测试就需要长时间运行,其运行时间1天.2天.一周等 2 ...

  9. requests + 正则表达式 获取 ‘猫眼电影top100’。

    使用 进程池Pool 提高爬取数据的速度. 1 # !/usr/bin/python 2 # -*- coding:utf-8 -*- 3 import requests 4 from request ...

  10. P5494-[模板]线段树分裂

    正题 题目链接:https://www.luogu.com.cn/problem/P5494 题目大意 给出一个可重集合要求支持 将集合\(p\)中在\([l,r]\)的数放到一个新的集合中 将集合\ ...