pom import
<dependency>
<groupId>it.geosolutions</groupId>
<artifactId>geoserver-manager</artifactId>
<version>1.7.0</version>
</dependency>
unit test
import it.geosolutions.geoserver.rest.GeoServerRESTManager;
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher;
import it.geosolutions.geoserver.rest.GeoServerRESTReader;
import it.geosolutions.geoserver.rest.decoder.RESTDataStore;
import it.geosolutions.geoserver.rest.decoder.RESTLayer;
import it.geosolutions.geoserver.rest.encoder.datastore.GSShapefileDatastoreEncoder;
import org.apache.hc.core5.http.message.BasicNameValuePair;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.List;
public class GeoShpTest {
public static void main(String[] args) throws IOException {
String url = "http://127.0.0.1:8016/geoserver";
String username = "admin";
String passwd = "geoserver";
GeoserverPublishShapefileData(url, username, passwd);
}
public static void GeoserverPublishShapefileData(String url, String username, String passwd) throws IOException {
String ws = "test";
String store_name = "yule";
String srs = "EPSG:4490";
File zipFile = new File("C:\\Users\\CDLX\\Desktop\\cad\\224cadtest\\224cadtest\\224cadtest.zip");
String layername = "224cadtest";
String urlDatastore = "file:data/test/yule/224cadtest.shp";
URL restURL = new URL(url);
GeoServerRESTManager manager = new GeoServerRESTManager(restURL, username, passwd);
GeoServerRESTPublisher publisher = manager.getPublisher();
List<String> workspaces = manager.getReader().getWorkspaceNames();
if (!workspaces.contains(ws)) {
boolean createws = publisher.createWorkspace(ws);
System.out.println("create ws : " + createws);
} else {
System.out.println("workspace已经存在了" + ws);
}
URL urlShapefile = new URL(urlDatastore);
RESTDataStore restStore = manager.getReader().getDatastore(ws, store_name);
if (restStore == null) {
GSShapefileDatastoreEncoder store = new GSShapefileDatastoreEncoder(store_name, urlShapefile);
store.setCharset(Charset.forName("gb2312"));
boolean createStore = manager.getStoreManager().create(ws, store);
System.out.println("create store : " + createStore);
} else {
System.out.println("数据存储已经存在了,store:" + store_name);
}
GeoServerRESTReader reader = new GeoServerRESTReader(url, username, passwd);
RESTLayer layer = reader.getLayer(ws, layername);
if (layer == null) {
boolean publish = publisher.publishShp(ws, store_name, layername, zipFile, srs, new BasicNameValuePair("charset", "gbk"));
System.out.println("发布shp文件 : " + layername + ":" + publish);
} else {
System.out.println("shp已经发布过了,layer:" + layername);
}
}
}