1、引入geoserver依赖
<!--geoserver依赖-->
<dependency>
<groupId>nl.pdok</groupId>
<artifactId>geoserver-manager</artifactId>
<version>1.7.0-pdok2</version>
</dependency>
2、思路
(1)创建geoserver连接对象
(2)创建工作区,若有则不创建
(3)创建样式,若有则不创建
3、发布geoserver样式(第一个版本)
(1)代码如下
/**
* java发布geoserver样式
*
* @return
*/
public boolean addStyle(){
String url = "http://192.168.10.xx:8080/geoserver"; //geoserver的地址
String un = "admin"; //geoserver的账号
String pw = "geoserver"; //geoserver的密码
String workspace = "shapefile"; //工作区名称
String sldPath = "D:\\data\\sld\\zhenjunSld\\xianStyle.sld"; //sld样式文件路径
String sldName = "xianStyle"; //样式名称
try {
// 1、获取geoserver连接对象
GeoServerRESTManager manager = null;
try {
manager = new GeoServerRESTManager(new URL(url) , un , pw);
System.out.println("连接geoserver服务器成功");
}catch (Exception e){
e.printStackTrace();
System.out.println("geoserver服务器连接失败");
return false;
}
// 2、判断是否有工作区,没有则创建
boolean b2 = manager.getReader().existsWorkspace(workspace);
if(!b2){
boolean b = manager.getPublisher().createWorkspace(workspace);
if(!b){
System.out.println("工作区创建失败");
return false;
}
}
// 3、判断工作区下是否已有此样式,没有增加
GeoServerRESTStyleManager styleManager = manager.getStyleManager();
boolean b = styleManager.existsStyle(workspace, sldName);
if(!b){
File sldFile = new File(sldPath);
boolean b1 = styleManager.publishStyleInWorkspace(workspace, sldFile, sldName);
if(!b1) {
System.out.println("新增样式失败");
return false;
}
}
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
(2)第二个版本里第3步的publishStyleInWorkspace 方法里传的参数由(工作区名称,sld文件对象,样式名称)改为了(工作区名称,sld样式文件内容,样式名称);
4、发布geoserver样式(第二个版本)
(1)代码如下
/**
* java发布geoserver样式
*
* @return
*/
public boolean addStyle(){
String url = "http://192.168.10.190:8080/geoserver"; //geoserver的地址
String un = "admin"; //geoserver的账号
String pw = "geoserver"; //geoserver的密码
String workspace = "shapefile"; //工作区名称
String sldPath = "D:\\data\\sld\\zhenjunSld\\xianStyle.sld"; //sld样式文件路径
String sldName = "xianStyle"; //样式名称
try {
// 1、获取geoserver连接对象
GeoServerRESTManager manager = null;
try {
manager = new GeoServerRESTManager(new URL(url) , un , pw);
System.out.println("连接geoserver服务器成功");
}catch (Exception e){
e.printStackTrace();
System.out.println("geoserver服务器连接失败");
return false;
}
// 2、判断是否有工作区,没有则创建
boolean b2 = manager.getReader().existsWorkspace(workspace);
if(!b2){
boolean b = manager.getPublisher().createWorkspace(workspace);
if(!b){
System.out.println("工作区创建失败");
return false;
}
}
// 3、判断工作区下是否已有此样式,没有增加
GeoServerRESTStyleManager styleManager = manager.getStyleManager();
boolean b = styleManager.existsStyle(workspace, sldName);
if(!b){
String sldContent = readFile(sldPath);
boolean b1 = styleManager.publishStyleInWorkspace(workspace, sldContent, sldName);
if(!b1) {
System.out.println("新增样式失败");
return false;
}
}
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
/*
* 读取sld文件
*/
public String readFile(String filePath) throws Exception{
//使用线程安全的 StringBuffer
StringBuffer sb = new StringBuffer();
FileInputStream inputStream = null;
InputStreamReader streamReader = null;
BufferedReader reader = null;
try {
//获取文件字节输入流对象
inputStream = new FileInputStream(filePath);
//将字节输入流转换为字符输入流,并设置编码
streamReader = new InputStreamReader(inputStream , "UTF-8");
//创建字节缓冲输入流(提高速度)
reader = new BufferedReader(streamReader);
//逐行读取
String s = "";
while ((s = reader.readLine()) != null){
sb.append(s);
sb.append("\n"); //换行符,使读取的内容排版更符合源sld文件内容
}
}catch (Exception e){
e.printStackTrace();
}finally {
reader.close();
streamReader.close();
inputStream.close();
return sb.toString();
}
}