Statistics
| Revision:

root / org.gvsig.proj / branches / refactor2018 / org.gvsig.proj / org.gvsig.proj.catalog / org.gvsig.proj.catalog.api / src / main / java / org / gvsig / proj / catalogue / cs / CartesianCS.java @ 793

History | View | Annotate | Download (6.59 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2018 gvSIG Association.
5
 * 
6
 * This file has been adapted from GeoAPI, see 
7
 * the original copyright headers bellow.
8
 *
9
 * This program is free software; you can redistribute it and/or
10
 * modify it under the terms of the GNU General Public License
11
 * as published by the Free Software Foundation; either version 2
12
 * of the License, or (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 * GNU General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU General Public License
20
 * along with this program; if not, write to the Free Software
21
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22
 * MA  02110-1301, USA.
23
 *
24
 * For any additional information, do not hesitate to contact us
25
 * at info AT gvsig.com, or visit our website www.gvsig.com.
26
 * 
27
 * ----------
28
 * 
29
 *    GeoAPI - Java interfaces for OGC/ISO standards
30
 *    http://www.geoapi.org
31
 *
32
 *    Copyright (C) 2004-2017 Open Geospatial Consortium, Inc.
33
 *    All Rights Reserved. http://www.opengeospatial.org/ogc/legal
34
 *
35
 *    Permission to use, copy, and modify this software and its documentation, with
36
 *    or without modification, for any purpose and without fee or royalty is hereby
37
 *    granted, provided that you include the following on ALL copies of the software
38
 *    and documentation or portions thereof, including modifications, that you make:
39
 *
40
 *    1. The full text of this NOTICE in a location viewable to users of the
41
 *       redistributed or derivative work.
42
 *    2. Notice of any changes or modifications to the OGC files, including the
43
 *       date changes were made.
44
 *
45
 *    THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE
46
 *    NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
47
 *    TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT
48
 *    THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY
49
 *    PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
50
 *
51
 *    COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
52
 *    CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
53
 *
54
 *    The name and trademarks of copyright holders may NOT be used in advertising or
55
 *    publicity pertaining to the software without specific, written prior permission.
56
 *    Title to copyright in this software and any associated documentation will at all
57
 *    times remain with copyright holders.
58
 */
59
package org.gvsig.proj.catalogue.cs;
60

    
61
/**
62
 * A 2- or 3-dimensional coordinate system with orthogonal straight axes.
63
 * All axes shall have the same length unit of measure.
64
 *
65
 * <p>This type of CS can be used by coordinate reference systems of type
66
 * {@link org.opengis.referencing.crs.GeocentricCRS},
67
 * {@link org.opengis.referencing.crs.ProjectedCRS},
68
 * {@link org.opengis.referencing.crs.EngineeringCRS} or
69
 * {@link org.opengis.referencing.crs.ImageCRS}.
70
 * The following examples describe some possible set of axes for Cartesian CS used with the above-cited CRS:</p>
71
 *
72
 * <table class="ogc">
73
 *   <caption>Example 1: used with a Projected CRS</caption>
74
 *   <tr><th>Axis name</th> <th>Abbr.</th> <th>Direction</th> <th>Unit</th></tr>
75
 *   <tr><td>Easting</td> <td>E</td> <td>{@link AxisDirection#EAST}</td>  <td>metre</td></tr>
76
 *   <tr><td>Northing</td><td>N</td> <td>{@link AxisDirection#NORTH}</td> <td>metre</td></tr>
77
 * </table>
78
 *
79
 * <table class="ogc">
80
 *   <caption>Example 2: used with a Geocentric CRS</caption>
81
 *   <tr><th>Axis name</th> <th>Abbr.</th> <th>Direction</th> <th>Unit</th></tr>
82
 *   <tr><td>Geocentric X</td><td>X</td> <td>{@link AxisDirection#GEOCENTRIC_X}</td> <td>metre</td></tr>
83
 *   <tr><td>Geocentric Y</td><td>Y</td> <td>{@link AxisDirection#GEOCENTRIC_Y}</td> <td>metre</td></tr>
84
 *   <tr><td>Geocentric Z</td><td>Z</td> <td>{@link AxisDirection#GEOCENTRIC_Z}</td> <td>metre</td></tr>
85
 * </table>
86
 *
87
 * <table class="ogc">
88
 *   <caption>Example 3: used with an Engineering CRS for a station fixed to Earth</caption>
89
 *   <tr><th>Axis name</th> <th>Abbr.</th> <th>Direction</th> <th>Unit</th></tr>
90
 *   <tr><td>Site north</td><td>x</td> <td>{@link AxisDirection#SOUTH_EAST}</td> <td>metre</td></tr>
91
 *   <tr><td>Site east</td> <td>y</td> <td>{@link AxisDirection#SOUTH_WEST}</td> <td>metre</td></tr>
92
 * </table>
93
 *
94
 * <table class="ogc">
95
 *   <caption>Example 4: used with an Engineering CRS for a moving platform</caption>
96
 *   <tr><th>Axis name</th> <th>Abbr.</th> <th>Direction</th> <th>Unit</th></tr>
97
 *   <tr><td>Ahead</td><td>x</td> <td>{@code AxisDirection.valueOf("FORDWARD")}</td>  <td>metre</td></tr>
98
 *   <tr><td>Right</td><td>y</td> <td>{@code AxisDirection.valueOf("STARBOARD")}</td> <td>metre</td></tr>
99
 *   <tr><td>Down</td> <td>z</td> <td>{@link AxisDirection#DOWN}</td>                 <td>metre</td></tr>
100
 * </table>
101
 *
102
 * <div class="note"><b>Note:</b>
103
 * The above example uses two axis directions that are not defined in ISO 19111,
104
 * but found in ISO 19162 as "{@code forward}" and "{@code starboard}".</div>
105
 *
106
 * @departure constraint
107
 *   ISO 19111 defines <code>CartesianCS</code> as a direct sub-type of <code>CoordinateSystem</code>.
108
 *   ISO also defines <code>ImageCS</code> as the union of <code>AffineCS</code> and <code>CartesianCS</code>,
109
 *   for use by <code>ImageCRS</code>. Because the <code>union</code> construct found in some languages like
110
 *   C/C++ does not exist in Java, GeoAPI defines <code>CartesianCS</code> as a sub-type of <code>AffineCS</code>
111
 *   in order to achieve the same type safety.
112
 *   With this change, GeoAPI can use <code>AffineCS</code> directly without the need to define <code>ImageCS</code>.
113
 *   In this hierarchy, <code>CartesianCS</code> is considered a special case of <code>AffineCS</code> where all axes
114
 *   are perpendicular to each other.
115
 *
116
 * Note: gvSIG derived these interfaces from GeoAPI in order to have a simpler API and also to
117
 * avoid namespace collisions (e.g. GeoAPI 3 vs GeoTools interfaces). There is no plans
118
 * to evolve these interfaces to adapt them to future GeoAPI versions.
119
 * 
120
 * @author  gvSIG Team
121
 * @author  Martin Desruisseaux (IRD)
122
 * @version 3.1
123
 * @since   1.0
124
 *
125
 * @see CSAuthorityFactory#createCartesianCS(String)
126
 * @see CSFactory#createCartesianCS(Map, CoordinateSystemAxis, CoordinateSystemAxis)
127
 * @see CSFactory#createCartesianCS(Map, CoordinateSystemAxis, CoordinateSystemAxis, CoordinateSystemAxis)
128
 */
129
public interface CartesianCS extends AffineCS {
130

    
131
}