Class WGS84Polygon

  • All Implemented Interfaces:
    java.lang.Cloneable

    public class WGS84Polygon
    extends java.lang.Object
    implements java.lang.Cloneable
    Polygonzug in WGS84-Koordinaten. Alle Längenangaben für Offsets u. ä. werden, wenn nicht anders angegeben, in Meter notiert.
    • Constructor Detail

      • WGS84Polygon

        public WGS84Polygon​(double[] laenge,
                            double[] breite)
        Konstruktor für Polygon mit WGS84-Koordinaten in Dezimalnotation. Beispiel +4.354551 +50.839402 bedeutet 4°. 354551 O 50°. 839402 N
        Parameters:
        laenge - Länge
        breite - Breite
        Throws:
        java.lang.IllegalArgumentException - wenn die beiden Felder eine unterschliedliche Länge besitzen.
      • WGS84Polygon

        public WGS84Polygon​(java.util.List<WGS84Punkt> punktliste)
        Konstruktor für Polygon aus Liste von Punkten.
        Parameters:
        punktliste - Punktliste
    • Method Detail

      • bildPunktAufStrecke

        public static WGS84Punkt bildPunktAufStrecke​(WGS84Punkt s1,
                                                     WGS84Punkt s2,
                                                     double offset)
        Berechnet die Koordinaten des Punktes auf der Strecke, der einen gegebenen Offset vom Anfangspunkt der Strecke entfernt ist. Die Strecke ist definiert durch einen Anfangs- und Endpunkt. Wenn der gegebene Offset größer als die Länge der Strecke ist, wird eine IllegalArgumentException geworfen.
        Parameters:
        s1 - der Anfangspunkt der Strecke
        s2 - der Endpunkt der Strecke
        offset - der Offset (in Meter) beginnend vom Anfang der Strecke, bei dem der Punkt liegen soll
        Returns:
        der Punkt.
        Throws:
        java.lang.IllegalArgumentException - die übergebenen Argumente sind in ihrer Kombination nicht zulässig
      • bildPunktAufStrecke

        public static WGS84Punkt bildPunktAufStrecke​(WGS84Punkt s1,
                                                     WGS84Punkt s2,
                                                     WGS84Punkt punkt)
        Berechnet die Koordinaten der Abbildung eines Punktes auf eine Strecke. Die Strecke ist definiert durch einen Anfangs- und Endpunkt. Wenn der Punkt nicht auf der Strecke liegt, wird die Bildpunkt-Koordinate durch das Lot vom Punkt auf die Strecke berechnet. Kann kein Lot gefällt werden, wird als Ergebnis der Punkt der Linie zurückgeliefert, welcher dem Punkt am nächsten liegt, also entweder der Anfangs- oder der Endpunkt.
        Parameters:
        s1 - der Anfangspunkt der Strecke
        s2 - der Endpunkt der Strecke
        punkt - der abzubildende Punkt
        Returns:
        die Koordinaten des Bildpunktes
      • punktAbstandStrecke

        public static double punktAbstandStrecke​(WGS84Punkt l1,
                                                 WGS84Punkt l2,
                                                 WGS84Punkt punkt)
        Bestimmt den Abstand eines Punktes von einer Strecke.
        Parameters:
        l1 - Startpunkt der Strecke
        l2 - Endpunkt der Strecke
        punkt - Punkt
        Returns:
        Abstand des Punktes von der Strecke in Meter
      • punktLiegtAufStrecke

        public static boolean punktLiegtAufStrecke​(WGS84Punkt l1,
                                                   WGS84Punkt l2,
                                                   WGS84Punkt punkt)
        Test, ob ein Punkt auf einer Strecke liegt.
        Parameters:
        l1 - Startpunkt der Strecke
        l2 - Endpunkt der Strecke
        punkt - Punkt
        Returns:
        true, wenn der Punkt auf der Strecke liegt, sonst false.
      • punktLiegtAufStrecke

        public static boolean punktLiegtAufStrecke​(WGS84Punkt l1,
                                                   WGS84Punkt l2,
                                                   WGS84Punkt punkt,
                                                   double maxAbweichungMeter)
        Test, ob ein Punkt mit einer zulässigen Abweichung auf einer Strecke liegt.
        Parameters:
        l1 - Startpunkt der Strecke
        l2 - Endpunkt der Strecke
        punkt - Punkt
        maxAbweichungMeter - maximal zulässige Abweichung in m
        Returns:
        true, wenn der Punkt auf der Strecke liegt, sonst false.
      • anfangAbschneiden

        public WGS84Polygon anfangAbschneiden​(double offset)
        Schneidet den Anfangsteil des Polygones bis zur Länge des angegebenen Offsets ab und gibt diesen Teil zurück. Das Polygon wird um den entsprechenden Teil gekürzt. Wenn der gegebene Offset größer als die Länge des Polygones ist, wird eine IllegalArgumentException geworfen.
        Parameters:
        offset - der Offset (in Meter) beginnend vom Anfang des Polygones, bei dem der Schnittpunkt liegen soll
        Returns:
        Teil des Polygones bis zum Offset-Punkt.
        Throws:
        java.lang.IllegalArgumentException - die übergebenen Argumente sind in ihrer Kombination nicht zulässig
      • anfangAbschneiden

        public WGS84Polygon anfangAbschneiden​(WGS84Punkt punkt)
        Schneidet den Anfangsteil des Polygones bis zu einem gegebenen Punkt ab und gibt diesen Teil zurück. Das Polygon wird um den entsprechenden Teil gekürzt. Wenn der gegebene Punkt nicht auf dem Polygon liegt, wird eine IllegalArgumentException geworfen.
        Parameters:
        punkt - Schnittpunkt
        Returns:
        Teil des Polygones bis zum Offset-Punkt.
        Throws:
        java.lang.IllegalArgumentException - wenn der Punkt nicht auf dem Polygon liegt
      • berecheneOffset

        public double berecheneOffset​(WGS84Punkt punkt)
        Berechnet den Offset eines Punktes auf dem Polygon.
        Parameters:
        punkt - Punkt, für den der Offset berechnet werden soll
        Returns:
        Offset (in m).
        Throws:
        java.lang.IllegalArgumentException - wenn der Punkt nicht auf dem Polygon liegt.
      • bildPunkt

        public WGS84Punkt bildPunkt​(double offset)
        Berechnet die Koordinaten des Punktes auf dem Polygonzug, der einen gegebenen Offset vom Anfangspunkt entfernt ist. Wenn der gegebene Offset größer als die Länge des Polygones ist, wird eine IllegalArgumentException geworfen.
        Parameters:
        offset - der Offset (in Meter) beginnend vom Anfang des Polygones, bei dem der Punkt liegen soll
        Returns:
        der berechnete Punkt.
        Throws:
        java.lang.IllegalArgumentException - wenn der Offset länger als das Polygon ist.
      • bildPunkt

        public WGS84Punkt bildPunkt​(WGS84Punkt punkt)
        Berechnet die Koordinaten der Abbildung eines Punktes auf das Polygon. Wenn der Punkt nicht auf dem Polygon liegt, wird die Bildpunkt-Koordinate durch das Lot vom Punkt auf den Streckenteil des Polygones mit dem kleinsten Abstand zum Punkt berechnet. Kann kein Lot gefällt werden, wird als Ergebnis der Punkt der Linie zurückgeliefert, welcher dem Punkt am nächsten liegt, also entweder der Anfangs- oder der Endpunkt.
        Parameters:
        punkt - der abzubildende Punkt
        Returns:
        Punkt.
        Throws:
        java.lang.IllegalArgumentException - wenn der Bildpunkt nicht bestimmt werden kann
      • bildPunktTest

        public WGS84Punkt bildPunktTest​(WGS84Punkt punkt)
        Berechnet die Koordinaten der Abbildung eines Punktes auf das Polygon. Wenn der Punkt nicht auf dem Polygon liegt, wird die Bildpunkt-Koordinate durch das Lot vom Punkt auf den Streckenteil des Polygones mit dem kleinsten Abstand zum Punkt berechnet. Kann kein Lot gefällt werden, wird als Ergebnis der Punkt der Linie zurückgeliefert, welcher dem Punkt am nächsten liegt, also entweder der Anfangs- oder der Endpunkt.
        Parameters:
        punkt - der abzubildende Punkt
        Returns:
        der Punkt.
        Throws:
        java.lang.IllegalArgumentException - wenn der Bildpunkt nicht ermittelt werden kann
      • findeTeilstreckeKleinsterAbstand

        public WGS84Polygon findeTeilstreckeKleinsterAbstand​(WGS84Punkt punkt)
        Berechnet die Teilstrecke des Polygons, für die der Abstand eines gegebenen Punktes von dieser Strecke minimal ist.
        Parameters:
        punkt - Punkt
        Returns:
        gefundene Teilstrecke als Polygon oder null
      • getKoordinaten

        public java.util.ArrayList<WGS84Punkt> getKoordinaten()
        Gibt die Koordinaten des Polygons als Punktliste zurück.
        Returns:
        Punktkoordinaten
      • istAnfangsOderEndPunkt

        public boolean istAnfangsOderEndPunkt​(WGS84Punkt punkt)
        Test, ob ein Punkt der Anfangs- oder Endpunkt des Polygon ist.
        Parameters:
        punkt - zu testender Punkt
        Returns:
        true, wenn der Punkt der Anfangs- oder Endpunkt des Polygons ist, sonst false
      • istAnfangsOderEndPunkt

        public boolean istAnfangsOderEndPunkt​(WGS84Punkt punkt,
                                              double maxAbstandMeter)
        Test, ob ein Punkt der Anfangs- oder Endpunkt des Polygon ist oder in der Nähe dieser liegt.
        Parameters:
        punkt - zu testender Punkt
        maxAbstandMeter - max. zulässiger Abstand in Meter
        Returns:
        true, wenn der Punkt der Anfangs- oder Endpunkt des Polygons ist oder maximal maxAbstandMeter vom Anfangs- oder Endpunkt entfernt ist, sonst false
      • istAnfangsPunkt

        public boolean istAnfangsPunkt​(WGS84Punkt punkt)
        Test, ob ein Punkt der Anfangspunkt des Polygon ist.
        Parameters:
        punkt - zu testender Punkt
        Returns:
        true, wenn der Punkt der Anfangspunkt des Polygons ist, sonst false
      • istAnfangsPunkt

        public boolean istAnfangsPunkt​(WGS84Punkt punkt,
                                       double maxAbstandMeter)
        Test, ob ein Punkt der Anfangspunkt des Polygon ist oder in dessen Nähe liegt.
        Parameters:
        punkt - zu testender Punkt
        maxAbstandMeter - max. zulässiger Abstand in Meter
        Returns:
        true, wenn der Punkt der Anfangpunkt des Polygons ist oder maximal maxAbstandMeter vom Anfangspunkt entfernt ist, sonst false
      • istEndPunkt

        public boolean istEndPunkt​(WGS84Punkt punkt)
        Test, ob ein Punkt der Endpunkt des Polygon ist.
        Parameters:
        punkt - zu testender Punkt
        Returns:
        true, wenn der Punkt der Endpunkt des Polygons ist, sonst false
      • istEndPunkt

        public boolean istEndPunkt​(WGS84Punkt punkt,
                                   double maxAbstandMeter)
        Test, ob ein Punkt der Endpunkt des Polygon ist oder in dessen Nähe liegt..
        Parameters:
        punkt - zu testender Punkt
        maxAbstandMeter - max. zulässiger Abstand in Meter
        Returns:
        true, wenn der Punkt der Endpunkt des Polygons ist oder maximal maxAbstandMeter vom Endpunkt entfernt ist, sonst false
      • istIdentisch

        public boolean istIdentisch​(WGS84Polygon testpolygon,
                                    double maxabweichungGrad)
        Test, ob das Polygon gleich einem anderen Polygon ist, wobei eine bestimmte Abweichung der Koordinaten nicht überschritten werden darf.
        Parameters:
        testpolygon - Das zu testende Polgon
        maxabweichungGrad - maximal zulässige Abweichung in Grad
        Returns:
        true, wenn die Polygone im o.g. Sinne identisch sind, sonst false
      • kleinsterPunktAbstand

        public double kleinsterPunktAbstand​(WGS84Punkt punkt)
        Bestimmt den kleinsten Abstand eines Punktes vom Polygon.
        Parameters:
        punkt - Der Punkt, für den der Abstand bestimmt werden soll
        Returns:
        der kleinste Abstand des Punktes vom Polygon (in m)
      • groessterPunktAbstand

        public double groessterPunktAbstand​(WGS84Punkt punkt)
        Bestimmt den grössten Abstand eines Punktes vom Polygon.
        Parameters:
        punkt - Der Punkt, für den der Abstand bestimmt werden soll
        Returns:
        der grösste Abstand des Punktes vom Polygon (in m)
      • laenge

        public double laenge()
        Berechnet die Länge des Polygonzuges in m.
        Returns:
        Länge in Meter.
      • laengeAppr

        public double laengeAppr()
        Berechnet die Länge des Polygonzuges in m.
        Returns:
        Länge in Meter.
      • laengeExakt

        public double laengeExakt()
        Berechnet die Länge des Polygonzuges in m.
        Returns:
        Länge in Meter.
      • laengeKartesisch

        public double laengeKartesisch()
        Berechnet die Länge des Polygonzuges in m.
        Returns:
        Länge in Meter.
      • liegtAufPolygon

        public boolean liegtAufPolygon​(WGS84Punkt punkt)
        Test, ob ein Punkt auf dem Polygon liegt.
        Parameters:
        punkt - Punkt
        Returns:
        true, wenn der Punkt auf dem Polygonzug liegt, sonst false
      • liegtAufPolygon

        public boolean liegtAufPolygon​(WGS84Punkt punkt,
                                       double maxAbweichungMeter)
        Test, ob ein Punkt auf dem Polygon liegt.
        Parameters:
        punkt - Punkt
        maxAbweichungMeter - maximal zulässige Abweichung in m
        Returns:
        true, wenn der Punkt auf dem Polygonzug liegt, sonst false
      • sort

        public void sort()
        Sortiert das Polygon.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • clone

        public WGS84Polygon clone()
        Overrides:
        clone in class java.lang.Object