利用geoserver-manager发布shp


  
  可能是以后工作业务上的需求,需要使用Geoserver对局域网内的shp文件进行发布测试。使用rest方式完成这一系列的操作。

  使用语言:Java
  使用类库:geoserver-manager

 在pom.xml中加入:

        <dependency>
            <groupId>it.geosolutions</groupId>
            <artifactId>geoserver-manager</artifactId>
            <version>1.7-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
             <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

  官网并没有指出使用slf4j-log4j12,可能是我使用框架版本的问题吧,总是提示java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder异常,所以这个jar文件必须要加上。
  测试代码很简单:

        String RESTURL  = "http://localhost:8080/geoserver";
        String RESTUSER = "admin";
        String RESTPW   = "geoserver";

        List<String> workspaces=null;
        String result="";
        try {
            File zipFile=new File("\\\\192.168.9.46\\Shp\\rount.zip");

            GeoServerRESTReader reader = new GeoServerRESTReader(RESTURL, RESTUSER, RESTPW);
            GeoServerRESTPublisher publisher = new GeoServerRESTPublisher(RESTURL, RESTUSER, RESTPW);

            workspaces=reader.getWorkspaceNames();

            if(workspaces.contains("dahong")){

                if(publisher.publishShp("dahong", "dxmr", "rount", zipFile, "EPSG:4326")){

                    result="He did it!";
                }else{
                    result="fail!";
                }
            }
        }catch (Exception mue){
            mue.printStackTrace();
        }

  这样局域网内的shp文件就可以访问并发布了。
  测试完成!

转载自:https://blog.csdn.net/dahongdahong/article/details/51858527

You may also like...