利用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