1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
| import cn.hutool.core.util.ObjectUtil; 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.encoder.GSLayerEncoder; import it.geosolutions.geoserver.rest.encoder.datastore.GSGeoTIFFDatastoreEncoder; import it.geosolutions.geoserver.rest.encoder.datastore.GSShapefileDatastoreEncoder; import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder; import lombok.extern.slf4j.Slf4j;
import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.nio.charset.Charset; import java.util.List;
@Slf4j public class GeoServerPublishUtil {
public static GeoServerRESTManager getGeoServerConnection(String username, String password, String geoserverUrl) { try { GeoServerRESTManager geoServerRESTManager = new GeoServerRESTManager(new URL(geoserverUrl), username, password); return geoServerRESTManager; } catch (MalformedURLException e) { e.printStackTrace(); return null; } }
public static boolean publishTiff(GeoServerRESTManager geoServerRESTManager, String tiffPath, String workSpace) { try { File tifFile = new File(tiffPath); assert geoServerRESTManager != null;
String storeName = tifFile.getName().split("\\.")[0];
GeoServerRESTPublisher publisher = geoServerRESTManager.getPublisher(); List<String> workspaces = geoServerRESTManager.getReader().getWorkspaceNames(); if (!workspaces.contains(workSpace)) { publisher.createWorkspace(workSpace); }
RESTDataStore dataStore = geoServerRESTManager.getReader().getDatastore(workSpace, storeName); if (ObjectUtil.isEmpty(dataStore)) { GSGeoTIFFDatastoreEncoder gsGeoTIFFDataStoreEncoders = new GSGeoTIFFDatastoreEncoder(storeName); gsGeoTIFFDataStoreEncoders.setWorkspaceName(workSpace); gsGeoTIFFDataStoreEncoders.setUrl(new URL("file:" + tifFile.getName())); geoServerRESTManager.getStoreManager().create(workSpace, gsGeoTIFFDataStoreEncoders); return geoServerRESTManager.getPublisher().publishGeoTIFF(workSpace, storeName, tifFile); } else { return false; } } catch (Exception e) { e.printStackTrace(); return false; } }
public static boolean publishShp(GeoServerRESTManager geoServerRESTManager, String shpPath, String workSpace) { assert geoServerRESTManager != null; File shpFile = new File(shpPath); GeoServerRESTReader restReader = geoServerRESTManager.getReader(); GeoServerRESTPublisher restPublisher = geoServerRESTManager.getPublisher(); if (!restReader.existsWorkspace(workSpace)) { restPublisher.createWorkspace(workSpace); } String dataSetName = shpFile.getName().split("\\.")[0]; if (restReader.existsDatastore(workSpace, dataSetName)) { restPublisher.removeDatastore(workSpace, dataSetName, true); } try { String urlDataStorePath = shpFile.getPath(); String shpFilePath = String.format("file://%s", urlDataStorePath); URL urlShapeFile = new URL(shpFilePath); GSShapefileDatastoreEncoder dataStoreEncoder = new GSShapefileDatastoreEncoder(dataSetName, urlShapeFile); dataStoreEncoder.setCharset(Charset.forName("GBK")); geoServerRESTManager.getStoreManager().create(workSpace, dataStoreEncoder); } catch (MalformedURLException e) { e.printStackTrace(); }
String layerName = shpFile.getName().split("\\.")[0]; if (restReader.existsLayer(workSpace, layerName)) { restPublisher.removeLayer(workSpace, layerName); } GSFeatureTypeEncoder gsFeatureTypeEncoder = new GSFeatureTypeEncoder(); gsFeatureTypeEncoder.setName(layerName); gsFeatureTypeEncoder.setTitle(layerName); gsFeatureTypeEncoder.setSRS(GeoServerRESTPublisher.DEFAULT_CRS); GSLayerEncoder gsLayerEncoder = new GSLayerEncoder(); return restPublisher.publishDBLayer(workSpace, dataSetName, gsFeatureTypeEncoder, gsLayerEncoder); }
}
|