public class GeoUtils
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
static double |
DEG |
static double |
EPSG_900913_CONST |
static double |
GRAD_KM |
static double |
PI_HALF |
static double |
RAD |
static double |
RAD_HALF |
static double |
RADIUS_EARTH_KM |
Modifier and Type | Method and Description |
---|---|
static double |
calcAngle(double lat1,
double lon1,
double lat2,
double lon2,
boolean clockWise) |
static double |
calcDistance(double lat1,
double lon1,
double lat2,
double lon2)
Liefert die tatsaechliche Distanz zweier LatLon-Koordinaten in Kilometern.
|
static double |
calcDistanceCoarse(float lat1,
float lon1,
float lat2,
float lon2)
Liefert die ungefaehre aber spherische Distanz zweier LatLon-Koordinaten
in Kilometern.
|
static double |
calcDistanceEuklid(double lat1,
double lon1,
double lat2,
double lon2)
Liefert die tatsaechliche Distanz zweier LatLon-Koordinaten in Kilometern.
|
static double |
calcDistanceEuklidCoarse(float lat1,
float lon1,
float lat2,
float lon2)
Liefert die ungefaehre Distanz zweier LatLon-Koordinaten in Kilometern.
|
static float |
calcDistanceManhatten(float lat1,
float lon1,
float lat2,
float lon2)
Liefert die Manhatten-Distanz zweier LatLon-Koordinaten
(EPGS 4326 / WGS84) in Kilometern.
|
static double |
calcDistanceRhumb(double lat1,
double lon1,
double lat2,
double lon2)
Liefert die Rhumb-Distanz zweier LatLon-Koordinaten in Kilometern.
|
static long |
calcQuadTile(double lat,
double lon)
Generiert aus einer Koordinate einen QuadTile-Index.
|
static long |
calcQuadTile(long coord)
Generiert aus einer Koordinate einen QuadTile-Index.
|
static LatLon |
calcUnitVector(double y0,
double x0,
double y1,
double x1)
Berechnet den Einheitsvektor aus einer Strecke.
|
static double |
ccw(double y1,
double x1,
double y2,
double x2,
double y3,
double x3)
Berechnet die Triangulation dreier Punkte
und somit den Abbiege-Winkel.
|
static LatLons |
computeGreatCircleLine(LatLon source,
LatLon target,
int n)
Reichert eine gerade Strecke zwischen Start und Ziel um GreatCircle-Punkte an.
|
static LatLon |
computeGreatCircleLineFraction(double lat1,
double lon1,
double lat2,
double lon2,
double fraction)
Generiert ein Teilstueck einer GreatCircle-Strecke.
|
static LatLon |
computeGreatCircleLineFraction(LatLon source,
LatLon target,
double fraction)
Generiert ein Teilstueck einer GreatCircle-Strecke.
|
static float |
cosDeg(float deg) |
static float |
cosRad(float rad) |
static int[] |
dateLines(LatLons line)
Ermittelt die Indizes der Kanten, die die Dateline kreuzen.
|
static double |
EPSG_4326_TO_900913_Lat(double lat) |
static double |
EPSG_4326_TO_900913_Lon(double lon) |
static double |
EPSG_900913_TO_4326_Lat(double lat) |
static double |
EPSG_900913_TO_4326_Lon(double lon) |
static LatLon |
intersection(double x1,
double y1,
double x2,
double y2,
double x3,
double y3,
double x4,
double y4,
boolean mustCross)
Liefert den Kreuzungspunkt zweier Strecken.
|
static boolean |
isReachableDistance(float dist,
float lat1,
float lon1,
float lat2,
float lon2)
Berechnet die Erreichbarkeit zwischen zwei Punkten.
|
static float |
sinDeg(float deg) |
static float |
sinRad(float rad) |
static LatLons[] |
splitAtDateLine(LatLons line) |
static double |
tile2lat(int y,
int zoom)
Liefert den Breitengrad eines Slippy-Tiles.
|
static double |
tile2lon(int x,
int zoom)
Liefert den Laengengrad eines Slippy-Tiles.
|
public static final double RADIUS_EARTH_KM
public static final double GRAD_KM
public static final double EPSG_900913_CONST
public static final double PI_HALF
public static final double RAD
public static final double DEG
public static final double RAD_HALF
public static final float sinRad(float rad)
public static final float sinDeg(float deg)
public static final float cosRad(float rad)
public static final float cosDeg(float deg)
public static double calcAngle(double lat1, double lon1, double lat2, double lon2, boolean clockWise)
public static double calcDistance(double lat1, double lon1, double lat2, double lon2)
lat1
- y1 doublelon1
- x1 doublelat2
- y2 doublelon2
- x2 doublecalcDistanceEuklid(double, double, double, double)
,
isReachableDistance(float, float, float, float, float)
public static double calcDistanceRhumb(double lat1, double lon1, double lat2, double lon2)
calcDistance(double, double, double, double)
,
zum anderen die 'Rhumb Line'. Erstere liefert die tatsaechliche Distanz. Diese
Variante hier wird hauptsaechlich in der Schiffs-Navigation eingesetzt, die einen
Kurs in Grad vorgibt und nach einer gewissen Strecke einen naechsten Wendepunkt
setzt. Rhumb ist dadurch immer laenger, da 'Great Circle' ein permanentes
Nachfuehren des Ruders erfordert. Rhumb liefert auf einer Mercator projezierten
Karte exakt gerade Strecken, da der Tangens der Projektion herausgerechnet wird.lat1
- y1 doublelon1
- x1 doublelat2
- y2 doublelon2
- x2 doublecalcDistance(double, double, double, double)
public static double calcDistanceCoarse(float lat1, float lon1, float lat2, float lon2)
lat1
- y1 floatlon1
- x1 floatlat2
- y2 floatlon2
- x2 floatcalcDistance(double, double, double, double)
public static double calcDistanceEuklid(double lat1, double lon1, double lat2, double lon2)
lat1
- y1 doublelon1
- x1 doublelat2
- y2 doublelon2
- x2 doublecalcDistance(double, double, double, double)
public static double calcDistanceEuklidCoarse(float lat1, float lon1, float lat2, float lon2)
lat1
- y1 floatlon1
- x1 floatlat2
- y2 floatlon2
- x2 floatcalcDistanceEuklid(double, double, double, double)
public static float calcDistanceManhatten(float lat1, float lon1, float lat2, float lon2)
lat1
- y1 floatlon1
- x1 floatlat2
- y2 floatlon2
- x2 floatcalcDistance(double, double, double, double)
,
calcDistanceEuklid(double, double, double, double)
,
isReachableDistance(float, float, float, float, float)
public static boolean isReachableDistance(float dist, float lat1, float lon1, float lat2, float lon2)
calcDistanceManhatten(float, float, float, float)
und
calcDistance(double, double, double, double)
fuer eine
optimale Performanz.dist
- float Maximale Distanz in kmlat1
- y1 floatlon1
- x1 floatlat2
- y2 floatlon2
- x2 floatpublic static double EPSG_4326_TO_900913_Lon(double lon)
public static double EPSG_900913_TO_4326_Lon(double lon)
public static double EPSG_4326_TO_900913_Lat(double lat)
public static double EPSG_900913_TO_4326_Lat(double lat)
public static double tile2lon(int x, int zoom)
x
- int Tile-X, x=0 ist links.zoom
- int Zoom-Stufetile2lat(int, int)
public static double tile2lat(int y, int zoom)
minLat = tile2lat(y + 1, zoom); minLon = tile2lon(x, zoom); maxLat = tile2lat(y, zoom); maxLon = tile2lon(x + 1, zoom);
y
- int Tile-Y (v.o.n.u.) Hier Achtung: y=0 ist oben!zoom
- int Zoom-Stufetile2lon(int, int)
public static long calcQuadTile(double lat, double lon)
lat
- double Breitengrad.lon
- double Laengengrad.public static long calcQuadTile(long coord)
coord
- LatLon-Darstellung als longpublic static final double ccw(double y1, double x1, double y2, double x2, double y3, double x3)
y1
- Punkt 1 yx1
- Punkt 1 xy2
- Punkt 2 yx2
- Punkt 2 xy3
- Punkt 3 yx3
- Punkt 3 xpublic static final LatLon calcUnitVector(double y0, double x0, double y1, double x1)
y0
- double Startpunkt yx0
- double Startpunkt xy1
- double Endpunkte yx1
- double Endpunkt xLatLon
der den normalisierten Vektor darstellt.public static final LatLon intersection(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4, boolean mustCross)
x1
- double Line 1 Start-Coord xy1
- double Line 1 Start-Coord yx2
- double Line 1 End-Coord xy2
- double Line 1 End-Coord yx3
- double Line 2 Start-Coord xy3
- double Line 2 Start-Coord yx4
- double Line 2 End-Coord xy4
- double Line 2 End-Coord ymustCross
- true: nur echte Kreuzungen liefern, false: auch BeruehrungLatLon
Kreuzungspunkt oder NULL wenn keine Ueberschneidung.public static LatLon computeGreatCircleLineFraction(double lat1, double lon1, double lat2, double lon2, double fraction)
lat1
- double Start-Point Latitudelon1
- double Start-Point Longitudelat2
- double End-Point Latitudelon2
- double End-Point Longitudefraction
- double z.B. 0:Start, 1:End, 0.5:Mittelpunt der GreatCircle-Linie.LatLon
Koordinate, abhaengig vom Anteil (fraction)public static LatLon computeGreatCircleLineFraction(LatLon source, LatLon target, double fraction)
source
- LatLon
Start-Pointtarget
- LatLon
End-Pointfraction
- double z.B. 0:Start, 1:End, 0.5:Mittelpunt der GreatCircle-Linie.LatLon
Koordinate, abhaengig vom Anteil (fraction)public static LatLons computeGreatCircleLine(LatLon source, LatLon target, int n)
public static int[] dateLines(LatLons line)
line
- LatLons
Koordinaten