Geoserver发布png栅格数据
发布png前提条件.prj 、.pgw缺一不可
properties配置
com.xahb.geoserver.ip=localhost
com.xahb.geoserver.port=8080
com.xahb.geoserver.user=admin
com.xahb.geoserver.password=geoserver
com.xahb.geoserver.workspace=xahbnew
GeoServer 实体类
package com.xahb.geoserver;
import org.json.JSONObject;
public class GeoServer {
private boolean _start_ = true;
private String ip; //地址
private String port; //端口
private String user; //用户名
private String password; //密码
private String workspace; //工作空间
private String path; //路径
private final String DEFAULT_IP = "127.0.0.1";
private final String DEFAULT_PORT = "8080";
private final String DEFAULT_USER = "admin";
private final String DEFAULT_PASSWORD = "geoserver";
private final String DEFAULT_WORKSPACE = "zdfb";
public GeoServer(){
this.ip = this.DEFAULT_IP;
this.port = this.DEFAULT_PORT;
this.user = this.DEFAULT_USER;
this.password = this.DEFAULT_PASSWORD;
this.workspace = this.DEFAULT_WORKSPACE;
this.path = "http://"+ this.ip +":" + this.port+ "/geoserver/rest";
}
public GeoServer(String ip,String port,String workspace,String user,String password){
this.ip = ip;
this.port = port;
this.workspace = workspace;
this.user = user;
this.password = password;
this.path = "http://"+ this.ip +":" + this.port+ "/geoserver/rest/";
}
public boolean get_start_() {
return _start_;
}
public String getIp() {
return ip;
}
public String getPort() {
return port;
}
public String getUser() {
return user;
}
public String getPassword() {
return password;
}
public String getPath() {
return path;
}
public String getWorkspace() {
return workspace;
}
public String getLoign() {
return user + ":" + password;
}
public String getUrl(String str) {
return path + str ;
}
public Result run() {
Result fh = new Result();
String[] cmds={
"curl", "-u", getLoign() , "-XGET", "-H", "content-type: application/json", getUrl("about/version.xml")};
try {
String result = GeoserverTool.execCurl(cmds);
fh.setOriginal(result);
JSONObject obj = GeoserverTool.xml2jsonString(result);
obj.getJSONObject("about").get("resource");
fh.setStart(true);
fh.setJSONObject(obj);
fh.setDescribe("geoserver连接成功!!!!!!");
_start_ = true;
} catch (Exception e) {
fh.setStart(false);
fh.setMessage(e.getMessage());
fh.setDescribe("geoserver连接失败!!!!!!");
_start_ = false;
}
return fh;
}
}
GeoServerConfig
package com.xahb.condition;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource("classpath:resource.properties")
@ConfigurationProperties(prefix = "com.xahb.geoserver")
public class GeoServerConfig {
private String ip;
private String port;
private String user;
private String password;
private String workspace;
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getWorkspace() {
return workspace;
}
public void setWorkspace(String workspace) {
this.workspace = workspace;
}
}
GeoserverPicture
package com.xahb.geoserver;
import org.json.JSONObject;
public class GeoserverPicture extends GeoserverImage{
private String workspace; //工作空间
private GeoServer geoserver;
public GeoserverPicture(GeoServer geoserver) {
super(geoserver);
this.geoserver = geoserver;
this.workspace = geoserver.getWorkspace();
}
public GeoserverPicture(GeoServer geoserver,String workspace) {
super(geoserver,workspace);
this.geoserver = geoserver;
this.workspace = workspace;
}
public String getWorkspace() {
return workspace;
}
/**
*
*
* curl -v -u admin:geoserver -XPUT -H "Content-type: text/plain" -d "file:///data/shapefiles/rivers/rivers.jpg" http://localhost:8080/geoserver/rest/workspaces/acme/coveragestores/rivers/external.worldimage
*
* @return Result
*/
public Result IssuePictureExternal(String workspace,String layers, String url) {
Result fh = new Result();
String[] cmds={
"curl", "-u", geoserver.getLoign() , "-XPUT", "-H", "Content-type: text/plain" , geoserver.getUrl("workspaces/" + workspace + "/coveragestores/"+ layers + "/external.worldimage"), "-d", "file://" + url};
try {
String result = GeoserverTool.execCurl(cmds);
fh.setOriginal(result);
JSONObject obj = GeoserverTool.xml2jsonString(result);
String layersname = obj.getJSONObject("coverageStore").get("name").toString();
if(layers.equals(layersname)) {
fh.setStart(true);
fh.setJSONObject(obj);
fh.setDescribe("图片发布成功!!!!!!");
}else{
fh.setStart(false);
fh.setDescribe("图片发布失败!!!!!!");
}
} catch (Exception e) {
fh.setStart(false);
fh.setMessage(e.getMessage());
fh.setDescribe("图片发布异常!!!!!!");
}
return fh;
}
public Result IS_IssueImageExternal(String workspace,String layers, String url) {
Result fh = new Result();
if(getImage(workspace,layers).getStart()) {
fh.setStart(true);
fh.setDescribe("发布图片已存在!!!!!!");
}else {
return IssuePictureExternal(workspace,layers,url);
}
return fh;
}
public Result IS_IssueDeleteImageExternal(String workspace,String layers, String url) {
Result fh = new Result();
fh = getImage(workspace,layers);
if(fh.getStart()) {
fh = deleteImage(workspace,layers);
if(fh.getStart()) {
fh = IssuePictureExternal(workspace,layers,url);
}
}else {
fh = IssuePictureExternal(workspace,layers,url);
}
return fh;
}
public Result IS_deleteImage(String workspace,String layers) {
return deleteImage(workspace,layers);
}
public Result IS_getPicture(String workspace,String layers) {
return getImage(workspace,layers);
}
public Result IS_getPictureAttribute(String workspace,String layers) {
return getImageAttribute(workspace,layers);
}
}
服务发布
GeoServer geoserver = new GeoServer(GeoServerConfig.getIp(),GeoServerConfig.getPort(),GeoServerConfig.getWorkspace(),GeoServerConfig.getUser(),GeoServerConfig.getPassword());
GeoserverPicture geoserverPicture = new GeoserverPicture(geoserver);
Map<String,Object> _map_= original.get_map_();
if(_map_ != null) {
String url = _map_.get("preprocesurl").toString().replace(".tif", ".png");
String layers = _map_.get("preprocesname").toString();
com.xahb.geoserver.Result Result = geoserverPicture.IS_IssueDeleteImageExternal("xahbnew", layers, url);
if(Result.getStart()) {
System.out.println("geoserver发布成功");
}else {
throw new RuntimeException("geoserver发布失败");
}