java发布geoserver样式(sld样式)

java发布geoserver样式(sld样式),第1张

java发布geoserver样式(sld样式)

1、引入geoserver依赖

        
        
            nl.pdok
            geoserver-manager
            1.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();
        }
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5707474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存