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 / datum / Datum.java @ 793

History | View | Annotate | Download (7.96 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.datum;
60

    
61
import java.util.Date;
62

    
63
import org.gvsig.proj.catalogue.IdentifiedObject;
64
import org.gvsig.proj.catalogue.ref.Extent;
65

    
66
/**
67
 * Specifies the relationship of a {@linkplain org.opengis.referencing.cs.CoordinateSystem coordinate system}
68
 * to the earth, thus creating a {@linkplain org.opengis.referencing.crs.CoordinateReferenceSystem coordinate
69
 * reference system}. For {@linkplain org.opengis.referencing.crs.GeocentricCRS geodetic} and
70
 * {@linkplain org.opengis.referencing.crs.VerticalCRS vertical} coordinate reference systems,
71
 * the datum relates the coordinate system to the Earth. With other types of coordinate reference systems,
72
 * the datum may relate the coordinate system to another physical or virtual object.
73
 *
74
 * <p>A datum uses a parameter or set of parameters that determine the location of the origin of the
75
 * coordinate reference system. Each datum subtype can be associated with only specific types of
76
 * {@linkplain org.opengis.referencing.cs.CoordinateSystem coordinate systems}, documented in their
77
 * javadoc.</p>
78
 *
79
 * Note: gvSIG derived these interfaces from GeoAPI in order to have a simpler API and also to
80
 * avoid namespace collisions (e.g. GeoAPI 3 vs GeoTools interfaces). There is no plans
81
 * to evolve these interfaces to adapt them to future GeoAPI versions.
82
 * 
83
 * @author  gvSIG Team
84
 * @author  Martin Desruisseaux (IRD)
85
 * @version 3.1
86
 * @since   1.0
87
 *
88
 * @see org.opengis.referencing.cs.CoordinateSystem
89
 * @see org.opengis.referencing.crs.CoordinateReferenceSystem
90
 */
91
public interface Datum  extends IdentifiedObject {
92
    /**
93
     * A description, possibly including coordinates of an identified point or points, of the
94
     * relationship used to anchor the coordinate system to the Earth or alternate object.
95
     * Also known as the "origin", especially for Engineering and Image Datums.
96
     *
97
     * <ul>
98
     *   <li>For a {@link GeodeticDatum}, this anchor may be a point known as the fundamental point,
99
     *       which is traditionally the point where the relationship between geoid and ellipsoid is defined,
100
     *       together with a direction from that point. In other cases, the anchor may consist of a
101
     *       number of points. In those cases, the parameters defining the geoid/ellipsoid relationship
102
     *       have then been averaged for these points, and the coordinates of the points adopted as the
103
     *       datum definition.</li>
104
     *
105
     *   <li>For an {@link EngineeringDatum}, the anchor may be an identified physical point with the
106
     *       orientation defined relative to the object.</li>
107
     *
108
     *   <li>For an {@link ImageDatum}, the anchor point is usually either the centre of the image or the
109
     *       corner of the image. The coordinate system orientation is defined through the
110
     *       {@link org.opengis.referencing.cs.AxisDirection} class.</li>
111
     *
112
     *   <li>For a {@link TemporalDatum}, this attribute is not defined. Instead of the anchor point,
113
     *       a temporal datum carries a separate {@linkplain TemporalDatum#getOrigin() time origin}
114
     *       of type {@link Date}.</li>
115
     * </ul>
116
     *
117
     * @departure historic
118
     *   This method has been kept conformant with the specification published in 2003 for compatibility reasons.
119
     *   The revision published in 2007 renamed this property as <code>anchorDefinition</code>.
120
     *
121
     * @return a description of the anchor point, or {@code null} if none.
122
     *
123
     * @see VerticalDatum#getVerticalDatumType()
124
     */
125
    String getAnchorPoint();
126

    
127
    /**
128
     * The time after which this datum definition is valid. This time may be precise (e.g. 1997
129
     * for IRTF97) or merely a year (e.g. 1983 for NAD83). In the latter case, the epoch usually
130
     * refers to the year in which a major recalculation of the geodetic control network, underlying
131
     * the datum, was executed or initiated.
132
     *
133
     * <p>An old datum can remain valid after a new datum is defined.
134
     * Alternatively, a datum may be superseded by a later datum, in which case the realization epoch
135
     * for the new datum defines the upper limit for the validity of the superseded datum.</p>
136
     *
137
     * <div class="warning"><b>Upcoming API change - temporal schema</b><br>
138
     * The return type of this method may change in GeoAPI 4.0 release. It may be replaced by a
139
     * type matching more closely either ISO 19108 (<cite>Temporal Schema</cite>) or ISO 19103.
140
     * </div>
141
     *
142
     * @return the datum realization epoch, or {@code null} if not available.
143
     */
144
    Date getRealizationEpoch();
145

    
146
    /**
147
     * Area or region or timeframe in which this datum is valid.
148
     *
149
     * @return the datum valid domain, or {@code null} if not available.
150
     *
151
     * @since 2.1
152
     */
153
    Extent getDomainOfValidity();
154

    
155
    /**
156
     * Description of domain of usage, or limitations of usage, for which this datum object is valid.
157
     *
158
     * @return a description of domain of usage, or {@code null} if none.
159
     *
160
     * @departure historic
161
     *   This method has been kept conformant with the specification published in 2003. The revision
162
     *   published in 2007 replaced the singleton by a collection and changed the obligation
163
     *   from "optional" to "mandatory", requiring a return value of <cite>"not known"</cite>
164
     *   if the scope is unknown.
165
     */
166
    String getScope();
167

    
168
}