| 1 | // License: GPL. Copyright 2007 by Immanuel Scholz and others
|
|---|
| 2 | package org.openstreetmap.josm.data.projection;
|
|---|
| 3 |
|
|---|
| 4 | import org.openstreetmap.josm.data.coor.EastNorth;
|
|---|
| 5 | import org.openstreetmap.josm.data.coor.LatLon;
|
|---|
| 6 | import org.openstreetmap.josm.data.Bounds;
|
|---|
| 7 |
|
|---|
| 8 | /**
|
|---|
| 9 | * Classes implementing this are able to convert lat/lon values to
|
|---|
| 10 | * planar screen coordinates.
|
|---|
| 11 | *
|
|---|
| 12 | * @author imi
|
|---|
| 13 | */
|
|---|
| 14 | public interface Projection {
|
|---|
| 15 | /**
|
|---|
| 16 | * Minimum difference in location to not be represented as the same position.
|
|---|
| 17 | */
|
|---|
| 18 | public static final double MAX_SERVER_PRECISION = 1e12;
|
|---|
| 19 |
|
|---|
| 20 | /**
|
|---|
| 21 | * List of all available projections.
|
|---|
| 22 | */
|
|---|
| 23 | public static Projection[] allProjections = new Projection[]{
|
|---|
| 24 | new Epsg4326(),
|
|---|
| 25 | new Mercator(),
|
|---|
| 26 | new LambertEST(),
|
|---|
| 27 | new Lambert(),
|
|---|
| 28 | new SwissGrid(),
|
|---|
| 29 | new UTM(),
|
|---|
| 30 | new UTM_20N_Guadeloupe_Ste_Anne(),
|
|---|
| 31 | new UTM_20N_Guadeloupe_Fort_Marigot(),
|
|---|
| 32 | new UTM_20N_Martinique_Fort_Desaix(),
|
|---|
| 33 | new GaussLaborde_Reunion()
|
|---|
| 34 | };
|
|---|
| 35 |
|
|---|
| 36 | /**
|
|---|
| 37 | * Convert from lat/lon to northing/easting.
|
|---|
| 38 | *
|
|---|
| 39 | * @param p The geo point to convert. x/y members of the point are filled.
|
|---|
| 40 | */
|
|---|
| 41 | EastNorth latlon2eastNorth(LatLon p);
|
|---|
| 42 |
|
|---|
| 43 | /**
|
|---|
| 44 | * Convert from norting/easting to lat/lon.
|
|---|
| 45 | *
|
|---|
| 46 | * @param p The geo point to convert. lat/lon members of the point are filled.
|
|---|
| 47 | */
|
|---|
| 48 | LatLon eastNorth2latlon(EastNorth p);
|
|---|
| 49 |
|
|---|
| 50 | /**
|
|---|
| 51 | * Describe the projection converter in one or two words.
|
|---|
| 52 | */
|
|---|
| 53 | String toString();
|
|---|
| 54 |
|
|---|
| 55 | /**
|
|---|
| 56 | * Return projection code.
|
|---|
| 57 | */
|
|---|
| 58 | String toCode();
|
|---|
| 59 |
|
|---|
| 60 | /**
|
|---|
| 61 | * Get a filename compatible string (for the cache directory)
|
|---|
| 62 | */
|
|---|
| 63 | String getCacheDirectoryName();
|
|---|
| 64 |
|
|---|
| 65 | /**
|
|---|
| 66 | * Get the bounds of the world
|
|---|
| 67 | */
|
|---|
| 68 | Bounds getWorldBoundsLatLon();
|
|---|
| 69 | }
|
|---|