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

📄 svgexporter.java

📁 esri的ArcGIS Server超级学习模板程序(for java)
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
							{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE,  ".5" },
							{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
							}, lineAtts);
								
				} else if(sFillType.equals(WebSimplePolygonSymbol.CROSS)) {
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "4" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "8" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "4" }});
					
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "4" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "4" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "8" }});
				
					return svgPattern(new String[][] {
							{ SVGSyntax.SVG_ID_ATTRIBUTE, 			 patternID },
							{ SVGSyntax.SVG_X_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_Y_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, 		 "8" },
							{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, 		 "8" },
							{ SVGSyntax.SVG_STROKE_ATTRIBUTE, 		 ColorEncoder.toSVG(symbol.getFillColor()) },
							{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE,  ".2" },
							{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
							}, lineAtts);
	
				} else if(sFillType.equals(WebSimplePolygonSymbol.DIAGCROSS)) {
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "8" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "8" }});
					
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "8" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "8" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "0" }});
				
					return svgPattern(new String[][] {
							{ SVGSyntax.SVG_ID_ATTRIBUTE, 			 patternID },
							{ SVGSyntax.SVG_X_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_Y_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, 		 "8" },
							{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, 		 "8" },
							{ SVGSyntax.SVG_STROKE_ATTRIBUTE, 		 ColorEncoder.toSVG(symbol.getFillColor()) },
							{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE,  ".2" },
							{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
							}, lineAtts);
	
				} else if(sFillType.equals(WebSimplePolygonSymbol.HORIZONTAL)) {
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "8" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "0" }});
					
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "8" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "8" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "8" }});
				
					return svgPattern(new String[][] {
							{ SVGSyntax.SVG_ID_ATTRIBUTE, 			 patternID },
							{ SVGSyntax.SVG_X_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_Y_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, 		 "8" },
							{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, 		 "8" },
							{ SVGSyntax.SVG_STROKE_ATTRIBUTE, 		 ColorEncoder.toSVG(symbol.getFillColor()) },
							{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE,  ".2" },
							{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
							}, lineAtts);
	
				} else if(sFillType.equals(WebSimplePolygonSymbol.VERTICAL)) {
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "8" }});
					
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "8" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "8" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "8" }});
				
					return svgPattern(new String[][] {
							{ SVGSyntax.SVG_ID_ATTRIBUTE, 			 patternID },
							{ SVGSyntax.SVG_X_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_Y_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, 		 "8" },
							{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, 		 "8" },
							{ SVGSyntax.SVG_STROKE_ATTRIBUTE, 		 ColorEncoder.toSVG(symbol.getFillColor()) },
							{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE,  ".2" },
							{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
							}, lineAtts);

				} else if(sFillType.equals(WebSimplePolygonSymbol.GRAY)) {
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "1" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "2" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "1" }});
					
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "1" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "1" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "2" }});
				
					return svgPattern(new String[][] {
							{ SVGSyntax.SVG_ID_ATTRIBUTE, 			 patternID },
							{ SVGSyntax.SVG_X_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_Y_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, 		 "2" },
							{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, 		 "2" },
							{ SVGSyntax.SVG_STROKE_ATTRIBUTE, 		 ColorEncoder.toSVG(symbol.getFillColor()) },
							{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE,  ".5" },
							{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
							}, lineAtts);
				
				} else if(sFillType.equals(WebSimplePolygonSymbol.LIGHTGRAY)) {
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "1" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "2" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "1" }});
					
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "1" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "1" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "2" }});
				
					return svgPattern(new String[][] {
							{ SVGSyntax.SVG_ID_ATTRIBUTE, 			 patternID },
							{ SVGSyntax.SVG_X_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_Y_ATTRIBUTE, 		 	 "0" },
							{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, 		 "2" },
							{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, 		 "2" },
							{ SVGSyntax.SVG_STROKE_ATTRIBUTE, 		 ColorEncoder.toSVG(symbol.getFillColor()) },
							{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE,  ".5" },
							{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
							}, lineAtts);
				
				} else if(sFillType.equals(WebSimplePolygonSymbol.DARKGRAY)) {
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "1" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "2" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "1" }});
					
					lineAtts.add(new String[][] {
							{ SVGSyntax.SVG_X1_ATTRIBUTE, "1" },
							{ SVGSyntax.SVG_Y1_ATTRIBUTE, "0" },
							{ SVGSyntax.SVG_X2_ATTRIBUTE, "1" },
							{ SVGSyntax.SVG_Y2_ATTRIBUTE, "2" }});
				
					return svgPattern(new String[][] {
							{ SVGSyntax.SVG_ID_ATTRIBUTE, 			 patternID },
							{ SVGSyntax.SVG_X_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_Y_ATTRIBUTE, 			 "0" },
							{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, 		 "2" },
							{ SVGSyntax.SVG_HEIGHT_ATTRIBUTE, 		 "2" },
							{ SVGSyntax.SVG_STROKE_ATTRIBUTE, 		 ColorEncoder.toSVG(symbol.getFillColor()) },
							{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE,  ".5" },
							{ SVGSyntax.SVG_PATTERN_UNITS_ATTRIBUTE, "userSpaceOnUse" }
							}, lineAtts);
				}
			}
		}
		
		return SVGSyntax.SVG_NONE_VALUE;
	}
	
	public StringBuffer svgG(IGraphicElementCollection elements) {
		
		StringBuffer buf = new StringBuffer();
		
		if(elements != null) {
			
			for(int i = 0; i < elements.size(); i++) {
				GraphicElement element = elements.get(i);
				WebSymbol symbol = element.getSymbol();
				WebGeometry webGeo = SVGUtils.ensureWGS84(element.getGeometry());
					
				if(symbol instanceof WebSimpleMarkerSymbol) {
					WebSimpleMarkerSymbol smSymbol = (WebSimpleMarkerSymbol) symbol;  
					int markerType = smSymbol.getMarkerType();
					_svgSymbols.put(new Integer(markerType), _svgSymbol[markerType]);
					
					buf.append(svgG((WebPoint)webGeo, smSymbol));
				
				} else if(symbol instanceof WebPictureMarkerSymbol)
					buf.append(svgG((WebPoint)webGeo, (WebPictureMarkerSymbol)symbol));
			
				else if(symbol instanceof WebTrueTypeMarkerSymbol)
					buf.append(svgG((WebPoint)webGeo, (WebTrueTypeMarkerSymbol)symbol));
				
				else if(symbol instanceof WebSimplePolygonSymbol)
					buf.append(svgG((WebPolygon)webGeo, (WebSimplePolygonSymbol)symbol));
				
				else if(symbol instanceof WebSimpleLineSymbol) {
					if(webGeo instanceof WebArc)
						buf.append(svgG((WebArc)webGeo, (WebSimpleLineSymbol)symbol));
					else
						buf.append(svgG((WebPolyline)webGeo, (WebSimpleLineSymbol)symbol));
				}
			}
		}
		
		return buf;
	}
	
	
	// Generates SVG
	public String export(List<IGraphicElementCollection> geCollectionList) {
		
		StringBuffer buf = new StringBuffer();
		
		String[][] svgAtts = {
				{ SVGSyntax.SVG_VERSION_ATTRIBUTE, "1.1" }, { SVGSyntax.SVG_CONTENT_STYLE_TYPE_ATTRIBUTE, "text/css" }, { SVGSyntax.SVG_CONTENT_SCRIPT_TYPE_ATTRIBUTE, "text/ecmascript" },
				{ "xmlns:xlink", "http://www.w3.org/1999/xlink" }, { "xmlns", "http://www.w3.org/2000/svg" },		
				{ SVGSyntax.SVG_WIDTH_ATTRIBUTE, "360" }, { SVGSyntax.SVG_HEIGHT_ATTRIBUTE, "180" }, // { "viewBox", "0 0 360 180" },
				{ SVGSyntax.SVG_STROKE_WIDTH_ATTRIBUTE, "1" }, { SVGSyntax.SVG_STROKE_MITERLIMIT_ATTRIBUTE, "10" }, { SVGSyntax.SVG_STROKE_ATTRIBUTE, "black" }, { SVGSyntax.SVG_STROKE_DASHARRAY_ATTRIBUTE, SVGSyntax.SVG_NONE_VALUE },
				{ SVGSyntax.SVG_STROKE_DASHOFFSET_ATTRIBUTE, "0" }, { SVGSyntax.SVG_STROKE_OPACITY_ATTRIBUTE, "1" }, { SVGSyntax.SVG_STROKE_LINECAP_ATTRIBUTE, "square" }, { SVGSyntax.SVG_STROKE_LINEJOIN_ATTRIBUTE, "miter" },	
				{ SVGSyntax.SVG_FONT_FAMILY_ATTRIBUTE, "&apos;Dialog&apos;" }, { SVGSyntax.SVG_FONT_STYLE_ATTRIBUTE, "normal" }, { SVGSyntax.SVG_FONT_SIZE_ATTRIBUTE, "12" }, { SVGSyntax.SVG_FONT_WEIGHT_ATTRIBUTE, "normal" },		
				{ SVGSyntax.SVG_FILL_ATTRIBUTE, "black" }, { SVGSyntax.SVG_FILL_OPACITY_ATTRIBUTE, "1" },	
				{ SVGSyntax.SVG_TEXT_RENDERING_ATTRIBUTE, "auto" }, { SVGSyntax.SVG_SHAPE_RENDERING_ATTRIBUTE, "auto" }, { SVGSyntax.SVG_IMAGE_RENDERING_ATTRIBUTE, "auto" }, { SVGSyntax.SVG_COLOR_RENDERING_ATTRIBUTE, "auto" },	
				{ SVGSyntax.SVG_COLOR_INTERPOLATION_ATTRIBUTE, "auto" }, { SVGSyntax.SVG_ZOOM_AND_PAN_ATTRIBUTE, "magnify" }, { SVGSyntax.SVG_PRESERVE_ASPECT_RATIO_ATTRIBUTE, "xMidYMid meet" }
			};
		
		Tag tagRoot = new Tag(SVGSyntax.SVG_SVG_TAG, svgAtts, null, true);
		buf.append(svgHeader()).append(tagRoot.open()).append(svgComment("Generated by ESRI Map Viewer Cheyenne"));
		
		if(isInitialized() && geCollectionList != null) { // Start generating geometries...
			
			StringBuffer gs = new StringBuffer();
			_svgSymbols = new Hashtable<Integer,String>();
			_svgPatterns = new ArrayList<String>();
			
		    for(Iterator<IGraphicElementCollection> i = geCollectionList.iterator(); i.hasNext();) {
		    	gs.append(svgG(i.next()));
		    }
		    
			if(gs.length() > 0) {
				Tag tagG = new Tag(SVGSyntax.SVG_G_TAG, null, null, true);
				buf.append(svgMetadata()).append(svgDefs()).append(tagG.open()).append(gs).append(tagG.close());
			}
			
		} // Finish generating geometries...
		
		buf.append(tagRoot.close()); // Close SVG root
		
		return buf.toString();
    }
}

⌨️ 快捷键说明

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