source: josm/trunk/src/org/openstreetmap/josm/data/projection/proj/Proj.java@ 5067

Last change on this file since 5067 was 5066, checked in by bastiK, 12 years ago

Proj parameter refactoring (see #7495)

  • Property svn:eol-style set to native
File size: 2.1 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.data.projection.proj;
3
4import org.openstreetmap.josm.data.projection.ProjectionConfigurationException;
5
6/**
7 * A projection (in the narrow sense).
8 *
9 * Converts lat/lon the east/north and the other way around.
10 *
11 * Datum conversion, false easting / northing, origin of longitude
12 * and general scale factor is already applied when the projection is invoked.
13 *
14 * Lat/lon is not in degrees, but in radians (unlike other parts of JOSM).
15 * Additional parameters in the constructor arguments are usually still in
16 * degrees. So to avoid confusion, you can follow the convention, that
17 * coordinates in radians are called lat_rad/lon_rad or phi/lambda.
18 *
19 * East/north values are not in meters, but in meters divided by the semi major
20 * axis of the ellipsoid (earth radius). (Usually this is what you get anyway,
21 * unless you multiply by 'a' somehow implicitly or explicitly.)
22 *
23 */
24public interface Proj {
25 /**
26 * A Human readable name of this projection.
27 */
28 String getName();
29
30 /**
31 * The Proj.4 identifier.
32 *
33 * (as reported by cs2cs -lp)
34 * If no id exists, return null.
35 */
36 String getProj4Id();
37
38 /**
39 * Initialize the projection using the provided parameters.
40 *
41 * @throws ProjectionConfigurationException in case parameters are not suitable
42 */
43 void initialize(ProjParameters params) throws ProjectionConfigurationException;
44
45 /**
46 * Convert lat/lon to east/north.
47 *
48 * @param lat_rad the latitude in radians
49 * @param lon_rad the longitude in radians
50 * @return array of length 2, containing east and north value in meters,
51 * divided by the semi major axis of the ellipsoid.
52 */
53 double[] project(double lat_rad, double lon_rad);
54
55 /**
56 * Convert east/north to lat/lon.
57 *
58 * @param east east value in meters, divided by the semi major axis of the ellipsoid
59 * @param north north value in meters, divided by the semi major axis of the ellipsoid
60 * @return array of length 2, containing lat and lon in radians.
61 */
62 double[] invproject(double east, double north);
63
64}
Note: See TracBrowser for help on using the repository browser.