Statistics
| Revision:

root / org.gvsig.proj / branches / refactor2018 / org.gvsig.proj / org.gvsig.proj.lib / org.gvsig.proj.lib.api / src / main / java / org / gvsig / proj / CoordinateOperation.java @ 794

History | View | Annotate | Download (3.01 KB)

1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2018 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.proj;
24

    
25
import org.gvsig.proj.catalogue.TransformationDefinition;
26

    
27
/**
28
 * Representation of a conversion or transformation between map
29
 * {@link CoordinateReferenceSystem}s.
30
 * 
31
 * @see http://en.wikipedia.org/wiki/Map_projection
32
 * @see http://en.wikipedia.org/wiki/Coordinate_reference_system
33
 * @author gvSIG Team
34
 */
35
public interface CoordinateOperation {
36
        
37
    /**
38
     * Returns the {@link CoordinateReferenceSystem} of the coordinates to be
39
     * converted from.
40
     * 
41
     * @return the coordinates original {@link CoordinateReferenceSystem}
42
     */
43
    CoordinateReferenceSystem getSource();
44

    
45
    /**
46
     * Returns the {@link CoordinateReferenceSystem} of the coordinates to be
47
     * converted to.
48
     * 
49
     * @return the coordinates target {@link CoordinateReferenceSystem}
50
     */
51
    CoordinateReferenceSystem getTarget();
52

    
53
    /**
54
     * Converts coordinates from their source projection to the target one.
55
     * 
56
     * @param point
57
     *            values of the coordinates to convert.
58
     *            The converted values will be written over the same array given
59
     *            as parameter
60
     */
61
    void apply(double[] point);
62

    
63
    /**
64
     * Converts coordinates from their source projection to the target one.
65
     * 
66
     * @param srcPoint
67
     *            values of the coordinates to convert.
68
     * @param srcPoint
69
     *            a target array to hold the converted coordinates
70
     */
71
    void apply(double[] srcPoint, double[] dstPoint);
72

    
73
    /**
74
     * Returns a {@link CoordinateTransformation} object which is able to
75
     * convert coordinates, but performing the opposite conversion, using this
76
     * transformation source projection as the target one, and using the
77
     * target projection as the source one.
78
     * 
79
     * @return a {@link CoordinateTransformation} for the opposite conversion
80
     */
81
    CoordinateOperation getInverse();
82
    
83
    /**
84
     * Gets the definition of the coordinate operation. The CoordinateOperationDefinition
85
     * fully defines the operation
86
     * 
87
     * @return
88
     */
89
    TransformationDefinition getDefinition();
90
}