001: /*
002: * GeoTools - OpenSource mapping toolkit
003: * http://geotools.org
004: * (C) 2003-2006, GeoTools Project Managment Committee (PMC)
005: * (C) 2001, Institut de Recherche pour le Développement
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation;
010: * version 2.1 of the License.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * This package contains documentation from OpenGIS specifications.
018: * OpenGIS consortium's work is fully acknowledged here.
019: */
020: package org.geotools.referencing.crs;
021:
022: // J2SE dependencies
023: import java.util.Collections;
024: import java.util.Map;
025:
026: // OpenGIS dependencies
027: import org.opengis.referencing.cs.AffineCS;
028: import org.opengis.referencing.cs.CartesianCS;
029: import org.opengis.referencing.datum.ImageDatum;
030: import org.opengis.referencing.crs.ImageCRS;
031:
032: // Geotools dependencies
033: import org.geotools.referencing.AbstractReferenceSystem;
034:
035: /**
036: * An engineering coordinate reference system applied to locations in images. Image coordinate
037: * reference systems are treated as a separate sub-type because a separate user community exists
038: * for images with its own terms of reference.
039: *
040: * <TABLE CELLPADDING='6' BORDER='1'>
041: * <TR BGCOLOR="#EEEEFF"><TH NOWRAP>Used with CS type(s)</TH></TR>
042: * <TR><TD>
043: * {@link CartesianCS Cartesian},
044: * {@link AffineCS Affine}
045: * </TD></TR></TABLE>
046: *
047: * @since 2.1
048: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/referencing/src/main/java/org/geotools/referencing/crs/DefaultImageCRS.java $
049: * @version $Id: DefaultImageCRS.java 20874 2006-08-07 10:00:01Z jgarnett $
050: * @author Martin Desruisseaux
051: */
052: public class DefaultImageCRS extends AbstractSingleCRS implements
053: ImageCRS {
054: /**
055: * Serial number for interoperability with different versions.
056: */
057: private static final long serialVersionUID = 7312452786096397847L;
058:
059: /**
060: * Constructs a new image CRS with the same values than the specified one.
061: * This copy constructor provides a way to wrap an arbitrary implementation into a
062: * Geotools one or a user-defined one (as a subclass), usually in order to leverage
063: * some implementation-specific API. This constructor performs a shallow copy,
064: * i.e. the properties are not cloned.
065: *
066: * @since 2.2
067: */
068: public DefaultImageCRS(final ImageCRS crs) {
069: super (crs);
070: }
071:
072: /**
073: * Constructs an image CRS from a name.
074: *
075: * @param name The name.
076: * @param datum The datum.
077: * @param cs The coordinate system.
078: */
079: public DefaultImageCRS(final String name, final ImageDatum datum,
080: final AffineCS cs) {
081: this (Collections.singletonMap(NAME_KEY, name), datum, cs);
082: }
083:
084: /**
085: * Constructs an image CRS from a set of properties. The properties are given unchanged to
086: * the {@linkplain AbstractReferenceSystem#AbstractReferenceSystem(Map) super-class constructor}.
087: *
088: * @param properties Set of properties. Should contains at least <code>"name"</code>.
089: * @param datum The datum.
090: * @param cs The coordinate system.
091: */
092: public DefaultImageCRS(final Map properties,
093: final ImageDatum datum, final AffineCS cs) {
094: super (properties, datum, cs);
095: }
096:
097: /**
098: * Returns a hash value for this geographic CRS.
099: *
100: * @return The hash code value. This value doesn't need to be the same
101: * in past or future versions of this class.
102: */
103: public int hashCode() {
104: return (int) serialVersionUID ^ super.hashCode();
105: }
106: }
|