public class OsmMercator
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
static double |
MAX_LAT |
static double |
MIN_LAT |
static int |
TILE_SIZE |
Constructor and Description |
---|
OsmMercator() |
Modifier and Type | Method and Description |
---|---|
static int |
falseEasting(int aZoomlevel) |
static int |
falseNorthing(int aZoomlevel) |
static double |
getDistance(double la1,
double lo1,
double la2,
double lo2)
Gets the distance using Spherical law of cosines.
|
static double |
getDistance(int x1,
int y1,
int x2,
int y2,
int zoomLevel)
Transform pixelspace to coordinates and get the distance.
|
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 double |
LatToY(double aLat,
int aZoomlevel)
Transforms latitude to pixelspace
|
static double |
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
|
public static int TILE_SIZE
public static final double MAX_LAT
public static final double MIN_LAT
public static double radius(int aZoomlevel)
public static int getMaxPixels(int aZoomlevel)
aZoomlevel
- zoom level to request pixel datapublic static int falseEasting(int aZoomlevel)
public static int falseNorthing(int aZoomlevel)
public static double getDistance(int x1, int y1, int x2, int y2, int zoomLevel)
x1
- the first x coordinatey1
- the first y coordinatex2
- the second x coordinatey2
- the second y coordinatezoomLevel
- the zoom levelpublic static double getDistance(double la1, double lo1, double la2, double lo2)
la1
- the Latitude in degreeslo1
- the Longitude in degreesla2
- the Latitude from 2nd coordinate in degreeslo2
- the Longitude from 2nd coordinate in degreespublic static double LonToX(double aLongitude, int aZoomlevel)
Mathematical optimization
x = radius(aZoomlevel) * toRadians(aLongitude) + falseEasting(aZoomLevel)
x = getMaxPixels(aZoomlevel) / (2 * PI) * (aLongitude * PI) / 180 + getMaxPixels(aZoomlevel) / 2
x = getMaxPixels(aZoomlevel) * aLongitude / 360 + 180 * getMaxPixels(aZoomlevel) / 360
x = getMaxPixels(aZoomlevel) * (aLongitude + 180) / 360
aLongitude
- [-180..180]public static double LatToY(double aLat, int aZoomlevel)
Mathematical optimization
log(u) := log((1.0 + sin(toRadians(aLat))) / (1.0 - sin(toRadians(aLat))
y = -1 * (radius(aZoomlevel) / 2 * log(u)))) - falseNorthing(aZoomlevel))
y = -1 * (getMaxPixel(aZoomlevel) / 2 * PI / 2 * log(u)) - -1 * getMaxPixel(aZoomLevel) / 2
y = getMaxPixel(aZoomlevel) / (-4 * PI) * log(u)) + getMaxPixel(aZoomLevel) / 2
y = getMaxPixel(aZoomlevel) * ((log(u) / (-4 * PI)) + 1/2)
aLat
- [-90...90]public static double XToLon(int aX, int aZoomlevel)
Mathematical optimization
lon = toDegree((aX - falseEasting(aZoomlevel)) / radius(aZoomlevel))
lon = 180 / PI * ((aX - getMaxPixels(aZoomlevel) / 2) / getMaxPixels(aZoomlevel) / (2 * PI)
lon = 180 * ((aX - getMaxPixels(aZoomlevel) / 2) / getMaxPixels(aZoomlevel))
lon = 360 / getMaxPixels(aZoomlevel) * (aX - getMaxPixels(aZoomlevel) / 2)
lon = 360 * aX / getMaxPixels(aZoomlevel) - 180
aX
- [0..2^Zoomlevel*TILE_WIDTH[public static double YToLat(int aY, int aZoomlevel)
aY
- [0..2^Zoomlevel*TILE_WIDTH[