# HG changeset patch # User vc11884admin@VC11884.win.bsh.de # Date 1309958225 -7200 # Node ID b9ee44070056df77909ac4952afb82be345248b3 # Parent d7c8493cb3454ef61df4dae1cb8912c8899c2dea Manage projections and units. diff -r d7c8493cb345 -r b9ee44070056 ChangeLog --- a/ChangeLog Tue Jul 05 17:52:24 2011 +0200 +++ b/ChangeLog Wed Jul 06 15:17:05 2011 +0200 @@ -1,3 +1,12 @@ +2011-07-06 Raimund Renkert + + * src/java/de/intevation/mxd/reader/MapReader.java: + Read the projection as EPSG code from the MXD file. + + * src/java/de/intevation/mxd/writer/MapScriptWriter.java: + Write the EPSG code to the mapfile and set the correct units to map + and layer. + 2011-07-05 Raimund Renkert * src/java/de/intevation/mxd/writer/MapScriptWriter.java: diff -r d7c8493cb345 -r b9ee44070056 src/java/de/intevation/mxd/reader/MapReader.java --- a/src/java/de/intevation/mxd/reader/MapReader.java Tue Jul 05 17:52:24 2011 +0200 +++ b/src/java/de/intevation/mxd/reader/MapReader.java Wed Jul 06 15:17:05 2011 +0200 @@ -152,19 +152,18 @@ //Read the projection. try { ISpatialReference sr = map.getSpatialReference(); - String projection = ""; + int projection = 0; if(sr instanceof ProjectedCoordinateSystem) { ProjectedCoordinateSystem pcs = (ProjectedCoordinateSystem)sr; - Projection p = (Projection)pcs.getProjection(); - projection = p.getName(); + projection = pcs.getFactoryCode(); } else if(sr instanceof GeographicCoordinateSystem) { GeographicCoordinateSystem gcs = (GeographicCoordinateSystem)sr; - projection = gcs.getName(); + projection = gcs.getFactoryCode(); } else if(sr instanceof UnknownCoordinateSystem) { UnknownCoordinateSystem ucs = (UnknownCoordinateSystem)sr; - projection = ucs.getName(); + projection = 0; } else{ logger.debug( @@ -172,12 +171,12 @@ sr.getClass().toString()); } - if(projection.equals("Unknown")) { + if(projection == 0) { logger.warn( "Unknown projection." + " Please edit projection in resulting mapfile."); } - mapElement.setAttribute("projection", projection); + mapElement.setAttribute("projection", String.valueOf(projection)); } catch(IOException ioe) { logger.warn( diff -r d7c8493cb345 -r b9ee44070056 src/java/de/intevation/mxd/writer/MapScriptWriter.java --- a/src/java/de/intevation/mxd/writer/MapScriptWriter.java Tue Jul 05 17:52:24 2011 +0200 +++ b/src/java/de/intevation/mxd/writer/MapScriptWriter.java Wed Jul 06 15:17:05 2011 +0200 @@ -42,6 +42,7 @@ private String mapFilename; private String MS_BINDIR = "c:/ms_6.1-dev/bin"; private String prefix = ""; + private MS_UNITS units = MS_UNITS.MS_METERS; public MapScriptWriter() { map = new mapObj(""); @@ -101,33 +102,36 @@ Double.parseDouble(mapNode.getAttribute("extent_max_y"))); //Set the units. - String units = mapNode.getAttribute("units"); - MS_UNITS msu; - if(units.equals("feet")) { - msu = MS_UNITS.MS_FEET; - } - else if(units.equals("inches")) { - msu = MS_UNITS.MS_INCHES; - } - else if(units.equals("kilometers")) { - msu = MS_UNITS.MS_KILOMETERS; + map.setProjection("epsg:" + mapNode.getAttribute("projection")); + String u = mapNode.getAttribute("units"); + if(u.equals("feet")) { + units = MS_UNITS.MS_FEET; } - else if(units.equals("meters")) { - msu = MS_UNITS.MS_METERS; - } - else if(units.equals("miles")) { - msu = MS_UNITS.MS_MILES; + else if(u.equals("inches")) { + units = MS_UNITS.MS_INCHES; } - else if(units.equals("nauticalmiles")) { - msu = MS_UNITS.MS_NAUTICALMILES; + else if(u.equals("kilometers")) { + units = MS_UNITS.MS_KILOMETERS; } - else if(units.equals("points")) { - msu = MS_UNITS.MS_PIXELS; + else if(u.equals("meters")) { + units = MS_UNITS.MS_METERS; } + else if(u.equals("miles")) { + units = MS_UNITS.MS_MILES; + } + else if(u.equals("nauticalmiles")) { + units = MS_UNITS.MS_NAUTICALMILES; + } + else if(u.equals("points")) { + units = MS_UNITS.MS_PIXELS; + } + else if(u.equals("degree")) { + units = MS_UNITS.MS_DD; + } else { - msu = MS_UNITS.MS_METERS; + units = MS_UNITS.MS_METERS; } - map.setUnits(msu); + map.setUnits(units); //TODO: Find out whats the correct scale value. //map.setScaledenom(Double.parseDouble(mapNode.getAttribute("scale"))); @@ -151,6 +155,7 @@ String lname = layerElement.getAttribute("name"); lname = lname.replaceAll(" ", ""); layer.setName(lname); + layer.setUnits(units.swigValue()); layer.setMetaData("wms_title", layerElement.getAttribute("name")); if(layerElement.hasAttribute("group")) { layer.setGroup(layerElement.getAttribute("group"));