简介与下载

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用到的一些外部依赖。

   <repositories>
<repository>
<id>GeoSolutions</id>
<url>http://maven.geo-solutions.it/</url>
</repository>
</repositories> <dependencies>
<dependency>
<groupId>it.geosolutions</groupId>
<artifactId>geoserver-manager</artifactId>
<version>1.7.0</version>
</dependency> <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1.3</version>
</dependency>
</dependencies>

编码发布矢量数据

此处以shp格式为例。

import it.geosolutions.geoserver.rest.GeoServerRESTManager;
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher;
import it.geosolutions.geoserver.rest.decoder.RESTDataStore;
import it.geosolutions.geoserver.rest.encoder.datastore.GSShapefileDatastoreEncoder; import java.io.File;
import java.net.URL; public class shpTest {
public static void main(String[] args) throws Exception {
//GeoServer连接配置
String url = "http://localhost:8080/geoserver";
String userName = "admin";
String passWord = "geoserver"; String workSpace = "test"; //创建的工作区名称
String storeName = "shpTest"; //创建的数据存储名称 //与GeoServer连接,进行管理
GeoServerRESTManager manager = new GeoServerRESTManager(new URL(url), userName, passWord);
GeoServerRESTPublisher publisher = manager.getPublisher();
//创建工作区
boolean createWorkSpace = publisher.createWorkspace(workSpace);
System.out.println("create ws " + createWorkSpace); //待发布shp数据路径与矢量数据包路径
String filePath = "F:\\GeoServerDatabase\\Community\\Community.shp";
String zipPath = "F:\\GeoServerDatabase\\Community\\Community.zip"; //创建shp数据存储
GSShapefileDatastoreEncoder gsShapefileDatastoreEncoder= new GSShapefileDatastoreEncoder(storeName,new URL("file:" + filePath));
boolean createStore = manager.getStoreManager().create(workSpace, gsShapefileDatastoreEncoder);
System.out.println("create shp store " + createStore); //发布shp图层(如果没有目标数据存储则会先自动创建该命名数据存储再发布)
boolean publish = manager.getPublisher().publishShp(workSpace, storeName, "Community",new File(zipPath));
System.out.println("publish shp " + publish); //读取目标矢量数据存储
//RESTDataStore restDataStore = manager.getReader().getDatastore(workSpace, storeName);
}
}

编码发布栅格数据

此处以GeoTiff格式为例。

import it.geosolutions.geoserver.rest.GeoServerRESTManager;
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher;
import it.geosolutions.geoserver.rest.decoder.RESTCoverageStore;
import it.geosolutions.geoserver.rest.encoder.coverage.GSCoverageEncoder;
import static it.geosolutions.geoserver.rest.encoder.GSResourceEncoder.ProjectionPolicy.REPROJECT_TO_DECLARED; import java.io.File;
import java.net.URL; public class tiffTest {
public static void main(String[] args) throws Exception {
//GeoServer连接配置
String url = "http://localhost:8080/geoserver";
String userName = "admin";
String passWord = "geoserver"; String workSpace = "test"; //创建的工作区名称
String storeName = "tiffTest"; //创建的数据存储名称 //与GeoServer连接,进行管理
GeoServerRESTManager manager = new GeoServerRESTManager(new URL(url), userName, passWord);
GeoServerRESTPublisher publisher = manager.getPublisher(); //创建工作区
boolean createWorkSpace = publisher.createWorkspace(workSpace);
System.out.println("create ws " + createWorkSpace); //初始化和构造栅格数据储存
String srs = "EPSG";//SRS空间参考系统 crs坐标参考系统
GSCoverageEncoder gsCoverageEncoder = new GSCoverageEncoder();
gsCoverageEncoder.setName("test");
gsCoverageEncoder.setTitle("test");
gsCoverageEncoder.setSRS(srs);
gsCoverageEncoder.setNativeFormat("GeoTIFF");
gsCoverageEncoder.addSupportedFormats("GEOTIFF");
gsCoverageEncoder.addKeyword("geoTiff");
gsCoverageEncoder.addKeyword("WCS");
gsCoverageEncoder.setNativeCRS(srs);
gsCoverageEncoder.setRequestSRS(srs);
gsCoverageEncoder.setResponseSRS(srs);
gsCoverageEncoder.setProjectionPolicy(REPROJECT_TO_DECLARED);
gsCoverageEncoder.setLatLonBoundingBox(-180, -90, 180, 90, "EPSG:4326");
//创建栅格数据存储
boolean createStore = manager.getPublisher().createCoverage(workSpace,storeName,gsCoverageEncoder);
System.out.println("Coverage store " + createStore); //待发布GeoTIFF数据路径
String filePath = "F:\\GeoServerDatabase\\test.tif";
//发布GeoTIFF(如果没有目标数据存储则会先自动创建该命名栅格数据存储再发布)
boolean publish = manager.getPublisher().publishGeoTIFF(workSpace, storeName,new File(filePath));
System.out.println("publish Coverage " + publish); //读取目标栅格数据存储
//RESTCoverageStore restCoverageStore = manager.getReader().getCoverageStore(workSpace, storeName); }
}

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. 使用ECS和OSS搭建个人网盘

    体验简介 本场景将提供一台配置了Centos 7.7版本的ECS实例(云服务器)和对象存储OSS实例.通过本教程的操作,您可以基于ECS和OSS快速搭建一个个人网盘. 体验此场景后,可以掌握的知识有: ...

  2. 学习了解PHP中的SeasLog日志扩展

    今天来学习的扩展是和日志相关的一个扩展,对于 PHP 的日志应用来说,除了本身自带的 error_log() . syslog() 之外,在大多数的框架中还会经常见到 monolog 的踪影.当然,我 ...

  3. final关键字在PHP中的使用

    final关键字的使用非常简单,在PHP中的最主要作用是定义不可重写的方法.什么叫不可重写的方法呢?就是子类继承后也不能重新再定义这个同名的方法. class A { final function t ...

  4. PHP7兼容mysql_connect的方法

    在php7版本的时候,mysql_connect已经不再被支持了,本文将讲述在代码层面实现php7兼容mysql系列,mysql_connect等操作. PHP7不再兼容mysql系列函数,入mysq ...

  5. 鸿蒙内核源码分析(内存主奴篇) | 皇上和奴才如何相处 | 百篇博客分析OpenHarmony源码 | v10.04

    百篇博客系列篇.本篇为: v10.xx 鸿蒙内核源码分析(内存主奴篇) | 皇上和奴才如何相处 | 51.c.h .o 前因后果相关篇为: v08.xx 鸿蒙内核源码分析(总目录) | 百万汉字注解 ...

  6. Java字符串的初始化与比较

    Java字符串的初始化与比较 简单的总结:直接赋值而不是使用new关键字给字符串初始化,在编译时就将String对象放进字符串常量池中:使用new关键字初始化字符串时,是在堆栈区存放变量名和内容:字符 ...

  7. Linux7安装redis6

    首先下载软件包并解压 cd /opt wget https://download.redis.io/releases/redis-6.2.5.tar.gz tar -zxvf redis-6.2.5. ...

  8. Spatial Analyst Tools(Spatial Analyst 工具)

    Spatial Analyst Tools 1.区域分析 # Process: 以表格显示分区几何统计 arcpy.gp.ZonalGeometryAsTable_sa("", & ...

  9. 题解 [HNOI2007]分裂游戏

    题目传送门 题目大意 有趣的取石子游戏即将开始. 有 \(n\) 堆石头,编号为 \(0,1,2,...,n-1\).两个人轮流挑石头. 在每个回合中,每个人选择三堆编号为 \(i,j,k\) 的石头 ...

  10. 洛谷3783 SDOI2017 天才黑客(最短路+虚树+边转点+线段树优化建图)

    成功又一次自闭了 怕不是猪国杀之后最自闭的一次 一看到最短路径. 我们就能推测这应该是个最短路题 现在考虑怎么建图 根据题目的意思,我们可以发现,在本题中,边与边之间存在一些转换关系,但是点与点之间并 ...