java发布geoserver样式(sld样式)

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();
        }
    }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值