public final class LatLons extends java.lang.Object implements Var<LatLons>
Var
.
Bietet zudem einige Geo-Funktionalitaeten, die je nach
Betrachtungsweise, z.B. als Polygon, wirken.Modifier and Type | Method and Description |
---|---|
LatLons |
append(double lat,
double lon) |
LatLons |
append(LatLon latLon)
Fuegt eine neue Koordinate hinten an.
|
LatLons |
append(long coord)
Fuegt eine neue Koordinate hinten an.
|
double |
area()
Interpretiert die Koordinaten als Huellpunkte und liefert die Flaeche.
|
double |
calcLengthInsidePolyRingKm()
Interpretiert die Koordinaten als Streckenpunkte und liefert die Laenge
in Kilometern, allerdings unter Beruecksichtung etwaiger mittels
splitAtPolyRing(LatLons) gesetzter Marker. |
double |
calcLengthKm()
Interpretiert die Koordinaten als Streckenpunkte
und liefert die Laenge in Kilometern.
|
LatLon |
center()
Interpretiert die Koordinaten als Wolke von
Punkten und liefert den Masseschwerpunkt der Haeufung.
|
LatLon |
centroid()
Interpretiert die Koordinaten als Huellpunkte und liefert
den Mittelpunkt als Masse-Schwerpunkt bzw.
|
void |
clear() |
boolean |
concat(LatLons latLons,
boolean allowReverse)
Kettet Koordinaten eines anderen
LatLons an. |
boolean |
contains(double lat,
double lon)
Interpretiert die Koordinaten als Huellpunkte und prueft,
ob die uebergebene Koordinate in diesem Polygon liegt.
|
boolean |
contains(LatLons latLons,
boolean fully)
Interpretiert die Koordinaten als Huellpunkte und prueft,
ob die uebergebenen Koordinaten in diesem Polygon liegen.
|
LatLons |
copy() |
LatLons |
crop(int newSize)
Kuerzt diese Koordinatenkette auf eine neue Laenge und liefert
den abgeschnittenen Rest als neues Objekt zurueck.
|
boolean |
equals(java.lang.Object obj) |
int |
findLastRing()
Ueberprueft auf Ring-Bildung und Ueberschneidungen.
|
long |
getCoord(int idx) |
long[] |
getCoords() |
LatLon |
getLatLon(int idx) |
int |
getSize() |
int[] |
getZoneIds(int zoneSize)
Interpretiert diese Koordinaten als Kette von Teilstrecken
und rastert sie mittels
ZoneUtils.raytraceZones(double, double, double, double, int) |
boolean |
isRing()
Ueberprueft die Koordinaten auf Ring-Bildung.
|
void |
orderByDistanceTo(double lat,
double lon)
Sortiert die Koordinaten nach Distanz zu einer uebergebenen Koordinate.
|
static LatLons |
partitionLine(LatLon c0,
LatLon c1,
int n)
Zerhackt eine Strecke in n Teilstuecke, so dass eine Darstellung
auf Merkator projizierten Karten dem krummen Tangens bei langen
Geraden exakter folgt.
|
LatLons |
readFromStream(InStream inStream)
De-Serialisiert dieses Objekt aus einem Cache-Stream.
|
LatLons |
reverse()
Dreht die Koordinaten um.
|
LatLons |
setCoords(LatLon[] latLons) |
LatLons |
setCoords(long[] coords) |
LatLons |
splitAtPolyRing(LatLons poly)
Prueft diese Koordinatenkette gegen einen Polygon-Ring und ermittelt
die Schnittpunkte.
|
LatLon[] |
toLatLonArray() |
java.lang.String |
toString() |
void |
writeToStream(OutStream outStream)
Serialisiert dieses Objekt in einen Stream.
|
public LatLons()
public LatLons(LatLon[] latLonArr)
public void clear()
public int getSize()
public final LatLons copy()
public final long[] getCoords()
public final LatLon[] toLatLonArray()
public final long getCoord(int idx)
public final LatLon getLatLon(int idx)
public final LatLons crop(int newSize)
newSize
- int,
Neue Laenge, bzw. erster Koordinaten-Index
ab dem abgeschnitten werden soll.LatLons
,
Hinten abgeschnittener Teil oder null, wenn
len >= this.sizepublic static final LatLons partitionLine(LatLon c0, LatLon c1, int n)
public final boolean concat(LatLons latLons, boolean allowReverse)
LatLons
an.
Die erste Koordinate der anzufuegenden Kette muss mit der
letzten dieser Kette uebereinstimmen und wird dann entfernt.
Besitzt dieses Objekt noch keine Koordinaten, so wird eine
Kopie erstellt und true zurueckgeliefert.latLons
- LatLons
anzufuegende KoordinatenallowReverse
- true: evtl. anzufuegende Kette umdrehen.public final LatLons reverse()
public final boolean isRing()
public final int findLastRing()
public final double calcLengthKm()
public final double calcLengthInsidePolyRingKm()
splitAtPolyRing(LatLons)
gesetzter Marker.public final void orderByDistanceTo(double lat, double lon)
lat
- double Breitengradlon
- double Laengengradpublic final LatLons setCoords(long[] coords)
public final LatLons append(double lat, double lon)
public final LatLons append(LatLon latLon)
latLon
- LatLon
public final LatLons append(long coord)
coord
- long Koordinatepublic final double area()
public final LatLon centroid()
public final LatLon center()
LatLon
Mittelpunkt NOT NULLcentroid()
public final boolean contains(double lat, double lon)
lat
- double Breitengradlon
- double Laengengradpublic final boolean contains(LatLons latLons, boolean fully)
contains(double, double)
fuer jeden Punkt.latLons
- LatLons
zu pruefende Koordinatenfully
- boolean
true: Alle Punkte muessen in der Huelle liegen.
false: Mindestens ein Punkt muss innerhalb liegen.public final void writeToStream(OutStream outStream)
Var
writeToStream
in interface Var<LatLons>
outStream
- OutStream
public final LatLons readFromStream(InStream inStream)
Var
readFromStream
in interface Var<LatLons>
inStream
- InStream
this
zurueckgeben.public final boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
public final java.lang.String toString()
toString
in class java.lang.Object
public final int[] getZoneIds(int zoneSize)
ZoneUtils.raytraceZones(double, double, double, double, int)
zoneSize
- int Groesse einer Zonen-Zelle.public final LatLons splitAtPolyRing(LatLons poly)
LatLon.NULL_COORDINATE
hinter die entsprechenden Koordinaten im
Ergebnis gesetzt. Liegt der erste Punkt innerhalb des Polygons, so
befindet sich der erste Marker im Ergebnis bereits an Position 2.
Das bedeutet, die Iteration startet mit der Annahme, dass der erste Punkt
ausserhalb des Polygons liegt. Jeder NULL-Wert markiert also alternierend
die Zustaende Inside-Outside-Inside- und so weiter.