1. 程式人生 > 其它 >Geoserver釋出png柵格資料

Geoserver釋出png柵格資料

技術標籤:geoserverjavaspring boot

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釋出失敗");
   }