Mercurial > mxd2map
view src/java/de/intevation/mxd/reader/MXDReader.java @ 30:c34c450edb06
Introduced class reader.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Fri, 08 Apr 2011 17:58:37 +0200 |
parents | 77cfa8092611 |
children | 40c0b4e5f91a |
line wrap: on
line source
//package de.intevation.mxd.reader; import java.io.IOException; import org.apache.log4j.Logger; import com.esri.arcgis.geodatabase.IClass; import com.esri.arcgis.carto.ILayer; import com.esri.arcgis.carto.IMap; import com.esri.arcgis.carto.MapDocument; import com.esri.arcgis.carto.FeatureLayer; import com.esri.arcgis.carto.IFeatureRenderer; import com.esri.arcgis.carto.SimpleRenderer; import com.esri.arcgis.carto.ClassBreaksRenderer; import com.esri.arcgis.carto.UniqueValueRenderer; import com.esri.arcgis.geodatabase.IFeatureClass; import com.esri.arcgis.geodatabase.FeatureClass; import com.esri.arcgis.geometry.ISpatialReference; import com.esri.arcgis.geometry.ProjectedCoordinateSystem; import com.esri.arcgis.geometry.IProjection; import com.esri.arcgis.geometry.Projection; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; /** * The MXD file reader. * * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a> */ public class MXDReader implements IReader { //Member private String filename = ""; private ArcGISInitializer initializer = null; private IMap map; private Document mapInfo; private static final Logger logger = Logger.getLogger(MXDReader.class); //Constructor public MXDReader() throws IOException{ logger.debug("constructor()"); initializer = new ArcGISInitializer(); mapInfo = XMLUtils.newDocument(); } //Methods /** * Initialize the ArcGIS Objects. */ public boolean init() throws IOException{ logger.debug("init()"); initializer.initArcGIS(); initializer.initArcGISLicenses(); return true; } /** * Shutdown the ArcGIS Objects. */ public boolean shutdown() throws IOException{ logger.debug("shutdown()"); if(initializer == null){ throw new IOException("Faild to shutdown!"); } else{ initializer.shutdownArcGIS(); return true; } } /** * Set the path and filename to the MXD-File. */ public void setFilename(String name){ logger.debug("setFilename()"); filename = name; } private void openMapDocument() throws IOException{ MapDocument m = new MapDocument(); if(!m.isMapDocument(filename)){ throw new IOException(filename + " is not a map!"); } m.open(filename, null); map = m.getMap(0); } /** * Read the MXD file content. */ public boolean read() throws IOException{ logger.debug("read()"); if(filename == ""){ throw new IOException("Please set filename!"); } else{ openMapDocument(); MapReader mreader = new MapReader (map); mreader.setDocument(mapInfo); mreader.read(); for(int i = 0; i < map.getLayerCount();i++){ ILayer layer = map.getLayer(i); try{ FeatureLayerReader lr = new FeatureLayerReader(layer); lr.setDocument(mapInfo); lr.read(); if (layer instanceof FeatureLayer){ IFeatureClass fc = ((FeatureLayer)layer).getFeatureClass(); IClassReader creader = new FeatureClassReader(fc); IFeatureRenderer renderer = ((FeatureLayer)layer).getRenderer(); IRendererReader rreader; if(renderer instanceof SimpleRenderer){ rreader = new SimpleRendererReader(renderer); rreader.read(); } else if(renderer instanceof ClassBreaksRenderer){ rreader = new ClassBreakRendererReader(renderer); rreader.read(); } else if(renderer instanceof UniqueValueRenderer){ rreader = new UniqueValueRendererReader(renderer); rreader.read(); } else{ System.out.println("No known renderer!"); System.out.println("Implement new renderer for " + renderer.getClass().toString()); } } } catch(Exception e){ e.printStackTrace(); } } XMLUtils.toStream(mapInfo, System.out); } return true; } /** * Get the mapinformation as DOM document. TODO: implement me! */ public Document getMapDocument(){ logger.debug("getMapDocument()"); return mapInfo; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :