Mercurial > mxd2map
diff src/java/de/intevation/mxd/reader/MapReader.java @ 39:f807c9c81019
Read further map attributes.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Thu, 14 Apr 2011 11:09:35 +0200 |
parents | 7a927921eb6c |
children | ef7ca23c4233 |
line wrap: on
line diff
--- a/src/java/de/intevation/mxd/reader/MapReader.java Thu Apr 14 11:04:59 2011 +0200 +++ b/src/java/de/intevation/mxd/reader/MapReader.java Thu Apr 14 11:09:35 2011 +0200 @@ -5,11 +5,13 @@ import org.apache.log4j.Logger; import com.esri.arcgis.carto.IMap; +import com.esri.arcgis.carto.Map; import com.esri.arcgis.geometry.ISpatialReference; import com.esri.arcgis.geometry.ProjectedCoordinateSystem; import com.esri.arcgis.geometry.GeographicCoordinateSystem; import com.esri.arcgis.geometry.UnknownCoordinateSystem; import com.esri.arcgis.geometry.Projection; +import com.esri.arcgis.geometry.IEnvelope; import org.w3c.dom.Element; @@ -23,15 +25,21 @@ public class MapReader{ //Member - private IMap map; + private Map map; private MapToXMLUtils util; private static final Logger logger = Logger.getLogger(MapReader.class); //Constructor - public MapReader(IMap map){ + public MapReader(IMap map) + throws Exception { logger.debug("constructor()"); - this.map = map; + if(map instanceof Map) { + this.map = (Map)map; + } + else { + throw new Exception("Not an instance of \"Map\"!"); + } } @@ -45,8 +53,7 @@ if(util == null) throw new IOException("Can not write to document."); -// XMLUtils.ElementCreator creator = new XMLUtils.ElementCreator(document, -// "", ""); + //Create XML Element for map. Element mapElement; try{ mapElement = util.createMap(); @@ -55,8 +62,47 @@ e.printStackTrace(); return; } + + //Read map name. + mapElement.setAttribute("name", map.getName()); + + //Read map extent. + IEnvelope ext = map.getExtent(); + mapElement.setAttribute( + "extent_max_x", + String.valueOf(ext.getXMax())); + mapElement.setAttribute( + "extent_max_y", + String.valueOf(ext.getYMax())); + mapElement.setAttribute( + "extent_min_x", + String.valueOf(ext.getXMin())); + mapElement.setAttribute( + "extent_min_y", + String.valueOf(ext.getYMin())); + + //Read map units. + int units = map.getMapUnits(); + String s_units; + switch(units) { + case 3: s_units = "feet"; break; + case 1: s_units = "inches"; break; + case 10: s_units = "kilometers"; break; + case 9: s_units = "meters"; break; + case 5: s_units = "miles"; break; + case 6: s_units = "nauticalmiles"; break; + case 2: s_units = "points"; break; + default : s_units = "not supported"; break; + } + mapElement.setAttribute("units", s_units); + + //TODO: Find out whats the correct scale value. + mapElement.setAttribute( + "scale", + String.valueOf(map.getMaxScale())); + + //Read the projection. ISpatialReference sr = map.getSpatialReference(); - logger.debug("Instance: " + sr.getClass().toString()); if(sr instanceof ProjectedCoordinateSystem){ ProjectedCoordinateSystem pcs = (ProjectedCoordinateSystem)sr; Projection p = (Projection)pcs.getProjection();