001 //$HeadURL: $
002 /*---------------- FILE HEADER ------------------------------------------
003 This file is part of deegree.
004 Copyright (C) 2001-2008 by:
005 Department of Geography, University of Bonn
006 http://www.giub.uni-bonn.de/deegree/
007 lat/lon GmbH
008 http://www.lat-lon.de
009
010 This library is free software; you can redistribute it and/or
011 modify it under the terms of the GNU Lesser General Public
012 License as published by the Free Software Foundation; either
013 version 2.1 of the License, or (at your option) any later version.
014 This library is distributed in the hope that it will be useful,
015 but WITHOUT ANY WARRANTY; without even the implied warranty of
016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
017 Lesser General Public License for more details.
018 You should have received a copy of the GNU Lesser General Public
019 License along with this library; if not, write to the Free Software
020 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
021 Contact:
022
023 Andreas Poth
024 lat/lon GmbH
025 Aennchenstr. 19
026 53177 Bonn
027 Germany
028 E-Mail: poth@lat-lon.de
029
030 Prof. Dr. Klaus Greve
031 Department of Geography
032 University of Bonn
033 Meckenheimer Allee 166
034 53115 Bonn
035 Germany
036 E-Mail: greve@giub.uni-bonn.de
037 ---------------------------------------------------------------------------*/
038
039 package org.deegree.crs.coordinatesystems;
040
041 import org.deegree.crs.Identifiable;
042 import org.deegree.crs.components.Axis;
043 import org.deegree.crs.components.GeodeticDatum;
044
045 /**
046 * A <code>GeocentricCRS</code> is a coordinatesystem having three axis and a mass point defined to be equivalent to
047 * earths center.
048 *
049 * @author <a href="mailto:bezema@lat-lon.de">Rutger Bezema</a>
050 *
051 * @author last edited by: $Author:$
052 *
053 * @version $Revision:$, $Date:$
054 *
055 */
056
057 public class GeocentricCRS extends CoordinateSystem {
058
059 /**
060 * The default geocentric coordinate system. Geocentric datum is WGS84 and linear units are metre. The <var>X</var>
061 * axis points towards the prime meridian (e.g. front). The <var>Y</var> axis points East. The <var>Z</var> axis
062 * points North.
063 */
064 public static final GeocentricCRS WGS84 = new GeocentricCRS( GeodeticDatum.WGS84, "GC_WGS84", "Geocentric WGS84" );
065
066 /**
067 * @param datum
068 * @param axisOrder
069 * @param identity
070 */
071 public GeocentricCRS( GeodeticDatum datum, Axis[] axisOrder, Identifiable identity ) {
072 super( datum, axisOrder, identity );
073 }
074
075 /**
076 * @param datum
077 * @param axisOrder
078 * @param identifiers
079 * @param names
080 * @param versions
081 * @param descriptions
082 * @param areasOfUse
083 */
084 public GeocentricCRS( GeodeticDatum datum, Axis[] axisOrder, String[] identifiers, String[] names,
085 String[] versions, String[] descriptions, String[] areasOfUse ) {
086 super( datum, axisOrder, identifiers, names, versions, descriptions, areasOfUse );
087 }
088
089 /**
090 * @param datum
091 * @param axisOrder
092 * @param identifier
093 * @param name
094 * @param version
095 * @param description
096 * @param areaOfUse
097 */
098 public GeocentricCRS( GeodeticDatum datum, Axis[] axisOrder, String identifier, String name, String version,
099 String description, String areaOfUse ) {
100 this( datum,
101 axisOrder,
102 new String[] { identifier },
103 new String[] { name },
104 new String[] { version },
105 new String[] { description },
106 new String[] { areaOfUse } );
107 }
108
109 /**
110 * @param datum
111 * @param axisOrder
112 * @param identifier
113 */
114 public GeocentricCRS( GeodeticDatum datum, Axis[] axisOrder, String identifier ) {
115 this( datum, axisOrder, new String[] { identifier }, null, null, null, null );
116 }
117
118 /**
119 * Geocentric crs with it's axis pointing to x=front, y=east, z=north.
120 *
121 * @param datum
122 * @param identifier
123 * @param name
124 */
125 public GeocentricCRS( GeodeticDatum datum, String identifier, String name ) {
126 this( datum,
127 new Axis[] { new Axis( "X", Axis.AO_FRONT ), new Axis( "Y", Axis.AO_EAST ), new Axis( "Z", Axis.AO_NORTH ) },
128 new String[] { identifier },
129 new String[] { name },
130 null,
131 null,
132 null );
133 }
134
135 @Override
136 public int getType() {
137 return CoordinateSystem.GEOCENTRIC_CRS;
138 }
139
140 @Override
141 public int getDimension() {
142 return 3;
143 }
144 }