org.openstreetmap.gui.jmapviewer
Class OsmMercator

java.lang.Object
  extended by org.openstreetmap.gui.jmapviewer.OsmMercator

public class OsmMercator
extends java.lang.Object

This class implements the Mercator Projection as it is used by Openstreetmap (and google). It provides methods to translate coordinates from 'map space' into latitude and longitude (on the WGS84 ellipsoid) and vice versa. Map space is measured in pixels. The origin of the map space is the top left corner. The map space origin (0,0) has latitude ~85 and longitude -180

Author:
Tim Haussmann

Field Summary
static double MAX_LAT
           
static double MIN_LAT
           
private static int TILE_SIZE
           
 
Constructor Summary
OsmMercator()
           
 
Method Summary
static int falseEasting(int aZoomlevel)
           
static int falseNorthing(int aZoomlevel)
           
static int getMaxPixels(int aZoomlevel)
          Returns the absolut number of pixels in y or x, defined as: 2^Zoomlevel * TILE_WIDTH where TILE_WIDTH is the width of a tile in pixels
static int LatToY(double aLat, int aZoomlevel)
          Transforms latitude to pixelspace
static int LonToX(double aLongitude, int aZoomlevel)
          Transform longitude to pixelspace
static double radius(int aZoomlevel)
           
static double XToLon(int aX, int aZoomlevel)
          Transforms pixel coordinate X to longitude
static double YToLat(int aY, int aZoomlevel)
          Transforms pixel coordinate Y to latitude
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TILE_SIZE

private static int TILE_SIZE

MAX_LAT

public static final double MAX_LAT
See Also:
Constant Field Values

MIN_LAT

public static final double MIN_LAT
See Also:
Constant Field Values
Constructor Detail

OsmMercator

public OsmMercator()
Method Detail

radius

public static double radius(int aZoomlevel)

getMaxPixels

public static int getMaxPixels(int aZoomlevel)
Returns the absolut number of pixels in y or x, defined as: 2^Zoomlevel * TILE_WIDTH where TILE_WIDTH is the width of a tile in pixels

Parameters:
aZoomlevel -

falseEasting

public static int falseEasting(int aZoomlevel)

falseNorthing

public static int falseNorthing(int aZoomlevel)

LonToX

public static int LonToX(double aLongitude,
                         int aZoomlevel)
Transform longitude to pixelspace

Parameters:
aLongitude - [-180..180]
Returns:
[0..2^Zoomlevel*TILE_SIZE[

LatToY

public static int LatToY(double aLat,
                         int aZoomlevel)
Transforms latitude to pixelspace

Parameters:
aLat - [-90...90]
Returns:
[0..2^Zoomlevel*TILE_SIZE[

XToLon

public static double XToLon(int aX,
                            int aZoomlevel)
Transforms pixel coordinate X to longitude

Parameters:
aX - [0..2^Zoomlevel*TILE_WIDTH[
Returns:
]-180..180[

YToLat

public static double YToLat(int aY,
                            int aZoomlevel)
Transforms pixel coordinate Y to latitude

Parameters:
aY - [0..2^Zoomlevel*TILE_WIDTH[
Returns:
[MIN_LAT..MAX_LAT] is about [-85..85]