pom依赖
<dependency>
<groupId>com.github.dov-vlaanderen</groupId>
<artifactId>geoserver-manager</artifactId>
<version>1.8.5</version>
</dependency>
代码实现
public String publishGeoServerTif(String filePath) throws Exception {
URL u = new URL(geoserverUrl.getUrl());
GeoServerRESTManager manager = new GeoServerRESTManager(u, geoserverUrl.getUserName(), geoserverUrl.getPassword());
GeoServerRESTPublisher publisher = manager.getPublisher();
GeoServerRESTReader reader = manager.getReader();
List<String> workspaces = manager.getReader().getWorkspaceNames();
if (!workspaces.contains(geoserverUrl.getWorkSpace())) {
publisher.createWorkspace(geoserverUrl.getWorkSpace());
}
File file = new File(filePath);
String fileName = file.getName().replace(".shp", "");
String zipFile = filePath.replace(".shp", ".zip");
RESTDataStore restStore = manager.getReader().getDatastore(geoserverUrl.getWorkSpace(), fileName);
if (restStore == null) {
URL url = new URL("file://" + filePath);
GSShapefileDatastoreEncoder store = new GSShapefileDatastoreEncoder(fileName, url);
manager.getStoreManager().create(geoserverUrl.getWorkSpace(), store);
}
RESTLayer layer = reader.getLayer(geoserverUrl.getWorkSpace(), fileName);
if (layer == null) {
manager.getPublisher().publishShp(geoserverUrl.getWorkSpace(), geoserverUrl.getWorkSpace(),
fileName, new File(zipFile), GeoServerRESTPublisher.DEFAULT_CRS, geoserverUrl.getStyle());
layer = reader.getLayer(geoserverUrl.getWorkSpace(), fileName);
}
RESTWms wms = manager.getReader().getWms(layer);
RESTBoundingBox nativeBoundingBox = wms.getNativeBoundingBox();
fileName=fileName+";"+wms.getSRS()+";"+nativeBoundingBox.getMinX()+","+nativeBoundingBox.getMinY()+","+nativeBoundingBox.getMaxX()+","+nativeBoundingBox.getMaxY();
return fileName;
}