/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.cismap.commons.wms.capabilities.deegree; import org.deegree.model.crs.GeoTransformer; import org.deegree.model.crs.UnknownCRSException; import java.security.InvalidParameterException; import de.cismet.cismap.commons.exceptions.ConvertException; import de.cismet.cismap.commons.wms.capabilities.CoordinateSystem; import de.cismet.cismap.commons.wms.capabilities.Envelope; import de.cismet.cismap.commons.wms.capabilities.Position; /** * DOCUMENT ME! * * @author therter * @version $Revision$, $Date$ */ public class DeegreeEnvelope implements Envelope { //~ Instance fields -------------------------------------------------------- private org.deegree.model.spatialschema.Envelope envelope; private CoordinateSystem coordinateSystem = null; //~ Constructors ----------------------------------------------------------- /** * Creates a new DeegreeEnvelope object. * * @param envelope DOCUMENT ME! */ public DeegreeEnvelope(final org.deegree.model.spatialschema.Envelope envelope) { this.envelope = envelope; } //~ Methods ---------------------------------------------------------------- @Override public Position getMax() { if (envelope.getMax() == null) { return null; } else { return new DeegreePosition(envelope.getMax()); } } @Override public Position getMin() { if (envelope.getMin() == null) { return null; } else { return new DeegreePosition(envelope.getMin()); } } @Override public double getWidth() { return envelope.getWidth(); } @Override public double getHeight() { return envelope.getHeight(); } @Override public CoordinateSystem getCoordinateSystem() { if (coordinateSystem != null) { return coordinateSystem; } else if (envelope.getCoordinateSystem() == null) { return null; } else { return new DeegreeCoordinateSystem(envelope.getCoordinateSystem()); } } /** * DOCUMENT ME! * * @param coordinateSystem DOCUMENT ME! */ public void setCoordinateSystem(final CoordinateSystem coordinateSystem) { this.coordinateSystem = coordinateSystem; } @Override public Envelope transform(final String destCrs, final String sourceCrs) throws ConvertException { try { final GeoTransformer transformer = new GeoTransformer(destCrs); return new DeegreeEnvelope(transformer.transform(envelope, sourceCrs)); } catch (Exception e) { throw new ConvertException(e.getMessage(), e); } } }