⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphicsresourcegecollection.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
字号:
package com.esri.solutions.jitk.data.svg.exporter;

import java.util.List;
import java.util.Map;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

import com.esri.adf.web.data.GraphicElement;
import com.esri.adf.web.data.graphics.GraphicFeature;
import com.esri.adf.web.data.graphics.GraphicsResource;
import com.esri.adf.web.data.renderer.WebClassBreakInfo;
import com.esri.adf.web.data.renderer.WebClassBreaksRenderer;
import com.esri.adf.web.data.renderer.WebRenderer;
import com.esri.adf.web.data.renderer.WebSimpleRenderer;
import com.esri.adf.web.data.renderer.WebUniqueValueInfo;
import com.esri.adf.web.data.renderer.WebUniqueValueRenderer;
import com.esri.adf.web.data.symbol.WebSymbol;
import com.esri.solutions.jitk.web.data.graphics.MultiGeometryGraphicsLayer;
import com.esri.solutions.jitk.web.data.graphics.MultiGeometryGraphicsResource;

public class GraphicsResourceGECollection extends WebGraphicsGECollection {
	
	private static final Logger _logger = LogManager.getLogger(GraphicsResourceGECollection.class);
	protected MultiGeometryGraphicsResource graphicsResource = null;
	protected MultiGeometryGraphicsLayer graphicsLayer = null;
	
	
	public void setGraphicsResourceKey(String resourceKey) {
		
		if(getContext() == null) {
			_logger.error("Setting GraphicsResource key failed in GraphicsResourceGECollection. WebContext is not set...");
			
		} else {
			
			try {
				graphicsResource = new MultiGeometryGraphicsResource((GraphicsResource) this.getContext().getResourceById(resourceKey));	
				
			} catch(NullPointerException ex) {
				_logger.error("Setting GraphicsResource key failed in GraphicsResourceGECollection class. See log for more detailes...");
			}
		}
	}

	private static WebSymbol getSymbol(WebClassBreaksRenderer wcbr, Map<String, String> attributes) {
		
		try {
			if (wcbr == null || attributes == null) return null;

			double minRange = wcbr.getMinimumValue();
			List<WebClassBreakInfo> infos = wcbr.getClassBreakInfos();

			double value = 0D;
			String classificationFieldName = wcbr.getField();
			String sValue = attributes.get(classificationFieldName).toString();
			
			try {
				value = Double.parseDouble(sValue);
			} catch (NumberFormatException e) {
				return null;
			}

			double maxRange = 0D;
			boolean firstTime = true;
			for (WebClassBreakInfo info : infos) {
				if (info == null) continue;
				
				maxRange = info.getValue();
				if (firstTime && value >= minRange && value <= maxRange)
					return info.getSymbol();
				else if (value > minRange && value <= maxRange)
					return info.getSymbol();
				
				minRange = maxRange;
			}
			
		} catch (Exception e) {}
		
		return null;
	}

	private static WebSymbol getSymbol(WebUniqueValueRenderer wuvr, Map<String, String> attributes) {
		
		try {
			if (wuvr == null || attributes == null) return null;
			
			String delimiter = wuvr.getFieldDelimiter();
			if (delimiter == null) delimiter = "";

			String field1 = wuvr.getField1();
			String field2 = wuvr.getField2();
			String field3 = wuvr.getField3();
	  
			String value1 = attributes.get(field1);
			String value2 = attributes.get(field2);
			String value3 = attributes.get(field3);
			
			String values = null;
			if(value1 != null)
				values = value1;
	      
			if(value2 != null) {
				if(values != null)
					values = values + delimiter + value2;
				else
					values = value2;
			}
			
			if(value3 != null) {
				if(values != null)
					values = values + delimiter + value3;
				else
					values = value3;
			}
			
			if(values == null) return null;

			WebSymbol symbol = null;
			List<WebUniqueValueInfo> wuvis = wuvr.getUniqueValueInfos();
			for(WebUniqueValueInfo info : wuvis) {
				if(values.equals(info.getValue())) {
					symbol = info.getSymbol();
					break;
				}
			}
			
			return symbol;
			
	    } catch (Exception e) {}
	    
	    return null;
	}
 
	private WebSymbol getSymbol(GraphicFeature feature) {
		
		WebSymbol symbol = null;
        WebRenderer renderer = graphicsLayer.getRenderer();
        
        if(renderer instanceof WebSimpleRenderer)
        	symbol = ((WebSimpleRenderer) renderer).getSymbol();
        
        else if (renderer instanceof WebClassBreaksRenderer) {
        	WebClassBreaksRenderer wcbr = (WebClassBreaksRenderer) renderer;
        	symbol = getSymbol(wcbr, feature.getAttributes());
        	if (symbol == null)
        		symbol = wcbr.getDefaultSymbol();
          
        } else if (renderer instanceof WebUniqueValueRenderer) {
        	WebUniqueValueRenderer wuvr = (WebUniqueValueRenderer) renderer;
        	symbol = getSymbol(wuvr, feature.getAttributes());
        	if (symbol == null)
              symbol = wuvr.getDefaultSymbol();
        }
       
        return symbol;
	}
	
	public GraphicElement get(int i) {

		if(graphicsLayer == null) 
			graphicsLayer = graphicsResource.addLayer(graphicsLayerName);
		
		if(graphicsLayer != null) {
			
			GraphicFeature feature = graphicsLayer.getGraphicsFeatures().get(i);
			
			if(feature != null) {
				GraphicElement element = new GraphicElement();
				element.setGeometry(feature.getGeometry());
				element.setSymbol(getSymbol(feature));
	        
				return element;
			}
		}
		
		return null;
	}

	public int size() {
		
		if(graphicsLayer == null) 
			graphicsLayer = graphicsResource.addLayer(graphicsLayerName);
		
		return (graphicsLayer != null) ? graphicsLayer.getGraphicsFeatures().size() : 0;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -