Mercurial > mxd2map
view src/java/de/intevation/mxd/MXDReader.java @ 25:cbd67b1100d8
Initial commit of the first prototype.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Fri, 08 Apr 2011 11:47:59 +0200 |
parents | |
children |
line wrap: on
line source
//package de.intevation.mxd; 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; /** * 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 static final Logger logger = Logger.getLogger(MXDReader.class); //Constructor public MXDReader() throws IOException{ logger.debug("constructor()"); initializer = new ArcGISInitializer(); } //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; } /** * Read the MXD file content. */ public boolean read() throws IOException{ logger.debug("read()"); if(filename == ""){ throw new IOException("Please set filename!"); } else{ MapDocument m = new MapDocument(); if(!m.isMapDocument(filename)){ throw new IOException(filename + " is not a map!"); } m.open(filename, null); map = m.getMap(0); MapReader mreader = new MapReader (map); mreader.read(); for(int i = 0; i < map.getLayerCount();i++){ ILayer layer = map.getLayer(0); ILayerReader lr = new FeatureLayerReader(layer); lr.read(); if (layer instanceof FeatureLayer){ IFeatureRenderer renderer = ((FeatureLayer)layer).getRenderer(); IRendererReader rreader; try{ 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(); } } } } return true; } /** * Get the mapinformation as DOM document. TODO: implement me! */ public void getMapDocument(){ logger.debug("getMapDocument() -> not implemented jet."); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :