1、引入geoserver依赖
nl.pdok geoserver-manager1.7.0-pdok2
2、思路
(1)创建geoserver连接对象
(2)创建工作区,若有则不创建
(3)创建样式,若有则不创建
3、发布geoserver样式(第一个版本)
(1)代码如下
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)代码如下
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; } } 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(); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)