de.bsvrz.kex.bwsin.konfig
Class StrassenAbschnitt

java.lang.Object
  extended by java.util.AbstractCollection<E>
      extended by java.util.AbstractList<E>
          extended by java.util.AbstractSequentialList<E>
              extended by java.util.LinkedList<StrassenElement>
                  extended by de.bsvrz.kex.bwsin.konfig.StrassenAbschnitt
All Implemented Interfaces:
Serializable, Cloneable, Iterable<StrassenElement>, Collection<StrassenElement>, Deque<StrassenElement>, List<StrassenElement>, Queue<StrassenElement>

public class StrassenAbschnitt
extends LinkedList<StrassenElement>

Ein Strassenabschnitt repräsentiert eine Liste von zusammengefassten Straßenelementen.

Version:
$Id: StrassenAbschnitt.java 10402 2008-07-10 09:07:00Z gieseler $
Author:
BitCtrl Systems GmbH, Gieseler
See Also:
Serialized Form

Field Summary
private  List<SINASS> assListe
          Die Liste der zugeordneten ASS.
private static de.bsvrz.sys.funclib.debug.Debug DEBUG
          DebugLogger für Debug-Ausgaben.
protected  String endeVP
          Der End-Verbindungspunkt.
private  Verkehrsrichtung richtung
          Die Verkehrsrichtung in Bezug zur Stationierungsrichtung.
private static long serialVersionUID
          serialVersionUID.
protected  String startVP
          Der Start-Verbindungspunkt.
(package private)  List<StrassenTeilAbschnitt> teilAbschnitte
          Liste der Teilabschnitte, asu denen der Abschnitt besteht.
private  ArrayList<KonfigurationsObjekt> teilsegmente
          Die Straßenteilsegmente.
private  boolean zugeordnet
          Flag, ob der Abschnitt bereits einem Straßensegment zugeordnet wurde.
 
Fields inherited from class java.util.AbstractList
modCount
 
Constructor Summary
private StrassenAbschnitt()
          Privater Konstruktor.
  StrassenAbschnitt(StrassenElement strassenelement)
          Erzeugt einen Straßenabschnitt für ein Straßenelement.
 
Method Summary
 void addASS(SINASS ass)
          Fügt ein Element zur Liste der auf diesem Strassenabschnitt liegenden ASS hinzu.
 void addSTS(KonfigurationsObjekt teilsegment)
          Fügt ein Teilsegment hinzu.
 void anfuegenAnfang(StrassenElement strassenelement)
          Fügt ein Strassenelement am Anfang des Strassenabschnittes an.
 void anfuegenEnde(StrassenElement strassenelement)
          Fügt ein Strassenelement am Ende des Strassenabschnittes an.
 List<AufteilungspunktAktuelleKonfiguration> aufteilenKoordinaten(List<AufteilungspunktAktuelleKonfiguration> list)
          Teilt den Strßenabschnitt an einer Liste von Aufteilungspunkten auf.
 boolean aufteilenOffset(float offset)
          Teilt den Strßenabschnitt bei einem Offset.
private  double berechneLaengenkorrektur(de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon polygon, StreckenTeilabschnitte teilabschnitte)
          Berechnet den Längenkorrekturfaktor für den Abschnitt als Verhältnis von Polygonlänge zu ASB-Stationierungslänge.
private  int berechneStationierungsLaenge(List<AsbStationierung> stationierungen)
          Berechnet die Stationierungslänge einer Liste von ASB-Stationierungsangaben.
 StrassenAbschnitt clone()
          
 boolean equals(Object obj)
          
private  void erbeFeatures(List<org.geotools.feature.Feature> vererbteFeatures, Teilungspunkt teilungspunkt)
          Erbt Features.
 String ersterVP()
          Gibt die Feature-ID des Verbindungspunktes zurück, an dem der Straßenabschnitt beginnt.
 void erzeugeTeilAbschnitte(Okstra okstra, TeilungspunkteOkstra tp)
          Erzeugt die Teilabschnittes des Straßenabschnitts durch Aufteilung an den Teilungspunkten der OKSTRA-Datenbasis.
private  List<StrassenTeilAbschnitt> erzeugeTeilAbschnitte(StrassenElement strassenelement, TeilungspunkteOkstra teilungspunkte)
          Erzeugt eine Liste von Straßenteilabschnitten durch Aufteilung des Straßenabschnittes an den Aufteilungspunkten.
 List<SINASS> getASS()
          Gibt die Liste der auf diesem Strassenabschnitt liegenden ASS zurück.
 KonfigurationsObjekt getASSnach(Location location)
          Gibt das auf diesem Strassenabschnitt liegende ASS zurück, welches sich auf eine Location zubewegt.
 KonfigurationsObjekt getASSvon(Location location)
          Gibt das auf diesem Strassenabschnitt liegende ASS zurück, welches sich von einer Location wegbewegt.
 double getLaenge()
          Gibt die Länge des Abschnittes zurück.
 Location getLocationNach()
          Gibt die Liste der Locationen zurück, auf die sich der Straßen- abschnitt zubewegt.
 Location getLocationVon(Location nach)
          Bestimmt den Anfangs-Locationcode des Strassenabschnittes.
 Verkehrsrichtung getOkstraRichtung()
          Gibt die Verkehrsrichtung des Straßenabschnittes zurück.
 de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon getPolygon()
          Gibt den Polygonzug des Abschnittes zurück.
 Verkehrsrichtung getRichtung()
          Gibt die Verkehrsrichtung des Straßenabschnittes zurück.
 List<KonfigurationsObjekt> getSTS()
          Gibt die Liste der Straßenteilsegmente zurück.
 List<StrassenTeilAbschnitt> getTeilabschnitte()
          Gibt die Liste der Teilabschnitte zurück, aus denen der Abschnitt gebildet wird.
private  StreckenTeilabschnitte getTeilabschnitte(org.geotools.feature.Feature strassenelement)
          Gibt die Streckenteilabschnitte der OKSTRA-Datensasis zu einem Straßenelement zurück.
 int hashCode()
          
 boolean istASS()
          Test, ob der Straßenabschnitt zu einem äußeren Straßensegment gehört.
 boolean istISSAnfang(ImportNetz netz)
          Test, ob der Straßenabschnitt der Beginn eines inneren Straßensegmentes ist.
private  boolean istSegmentAnfang(ImportNetz netz)
          Test, ob der Straßenabschnitt der Anfang eines Segmentes ist, d.h.
 boolean istZugeordnet()
          Test, ob dieser StrassenAbschnitt bereits einem Straßen- segment zugeordnet wurde.
 boolean kannVerbundenWerden(StrassenElement strelement)
          Test, ob der Straßenabschnitt mit dem Straßenelement verbunden werden kann.
 String kurzInfo()
          Gibt eine Kurzbeschreibung des Abschnittes zurück.
 String letzterVP()
          Gibt die Feature-ID des Verbindungspunktes zurück, an dem der Straßenabschnitt endet.
 void setRichtung(Verkehrsrichtung richtung)
          Setzt die Verkehrsrichtung des Straßenabschnittes.
 void setRichtungSTS()
          Setzt die Verkehrsrichtung des Straßenabschnittes.
 void setZugeordnet()
          Setzt das Flag, das diesen StrassenAbschnitt als einem Straßen- segment zugeordnet markiert.
private  boolean teilabschnittAufteilen(int index, AufteilungspunktAktuelleKonfiguration ap)
          Teilt einen Teilabschnitt an einer Koordinate auf, wenn die Koordinate auf dem Teilabschnitt liegt.
private  boolean teilabschnittAufteilen(int index, double offset)
          Teilt einen Teilabschnitt an einem Offset auf.
 String toString()
          
 
Methods inherited from class java.util.LinkedList
add, add, addAll, addAll, addFirst, addLast, clear, contains, descendingIterator, element, get, getFirst, getLast, indexOf, lastIndexOf, listIterator, offer, offerFirst, offerLast, peek, peekFirst, peekLast, poll, pollFirst, pollLast, pop, push, remove, remove, remove, removeFirst, removeFirstOccurrence, removeLast, removeLastOccurrence, set, size, toArray, toArray
 
Methods inherited from class java.util.AbstractSequentialList
iterator
 
Methods inherited from class java.util.AbstractList
listIterator, removeRange, subList
 
Methods inherited from class java.util.AbstractCollection
containsAll, isEmpty, removeAll, retainAll
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.List
containsAll, isEmpty, iterator, listIterator, removeAll, retainAll, subList
 
Methods inherited from interface java.util.Deque
iterator
 

Field Detail

serialVersionUID

private static final long serialVersionUID
serialVersionUID.

See Also:
Constant Field Values

DEBUG

private static final de.bsvrz.sys.funclib.debug.Debug DEBUG
DebugLogger für Debug-Ausgaben.


teilsegmente

private final ArrayList<KonfigurationsObjekt> teilsegmente
Die Straßenteilsegmente.


startVP

protected String startVP
Der Start-Verbindungspunkt.


endeVP

protected String endeVP
Der End-Verbindungspunkt.


zugeordnet

private boolean zugeordnet
Flag, ob der Abschnitt bereits einem Straßensegment zugeordnet wurde.


assListe

private final List<SINASS> assListe
Die Liste der zugeordneten ASS.


richtung

private Verkehrsrichtung richtung
Die Verkehrsrichtung in Bezug zur Stationierungsrichtung.


teilAbschnitte

List<StrassenTeilAbschnitt> teilAbschnitte
Liste der Teilabschnitte, asu denen der Abschnitt besteht.

Constructor Detail

StrassenAbschnitt

private StrassenAbschnitt()
Privater Konstruktor.


StrassenAbschnitt

public StrassenAbschnitt(StrassenElement strassenelement)
Erzeugt einen Straßenabschnitt für ein Straßenelement.

Parameters:
strassenelement - StrassenElement
Method Detail

addASS

public void addASS(SINASS ass)
Fügt ein Element zur Liste der auf diesem Strassenabschnitt liegenden ASS hinzu.

Parameters:
ass - SINASS

addSTS

public void addSTS(KonfigurationsObjekt teilsegment)
Fügt ein Teilsegment hinzu.

Parameters:
teilsegment - Teilsegment

anfuegenAnfang

public void anfuegenAnfang(StrassenElement strassenelement)
Fügt ein Strassenelement am Anfang des Strassenabschnittes an.

Parameters:
strassenelement - anzufügendes Strassenelement

anfuegenEnde

public void anfuegenEnde(StrassenElement strassenelement)
Fügt ein Strassenelement am Ende des Strassenabschnittes an.

Parameters:
strassenelement - anzufügendes Strassenelement

aufteilenKoordinaten

public List<AufteilungspunktAktuelleKonfiguration> aufteilenKoordinaten(List<AufteilungspunktAktuelleKonfiguration> list)
Teilt den Strßenabschnitt an einer Liste von Aufteilungspunkten auf. Der Abschnitt wird nur geteilt, wenn der Punkt auf ihm liegt.

Parameters:
list - Liste von Aufteilungspunkten
Returns:
Liste von Aufteilungspunkten, die bei der Aufteilung des Abschnittes benutzt wurden

aufteilenOffset

public boolean aufteilenOffset(float offset)
Teilt den Strßenabschnitt bei einem Offset.

Parameters:
offset - Offset Liste von Aufteilungspunkten
Returns:
aufgeteilt ja/nein

berechneLaengenkorrektur

private double berechneLaengenkorrektur(de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon polygon,
                                        StreckenTeilabschnitte teilabschnitte)
Berechnet den Längenkorrekturfaktor für den Abschnitt als Verhältnis von Polygonlänge zu ASB-Stationierungslänge.

Parameters:
polygon - Polygonzug
teilabschnitte - die Streckenteilabschnitte des Abschnittes
Returns:
Längenkorrekturfaktor als Verhältnis von Polygonlänge zu ASB-Stationierungslänge.

berechneStationierungsLaenge

private int berechneStationierungsLaenge(List<AsbStationierung> stationierungen)
Berechnet die Stationierungslänge einer Liste von ASB-Stationierungsangaben.

Parameters:
stationierungen - Liste von ASB-Stationierungsangaben
Returns:
Stationierungslänge

clone

public StrassenAbschnitt clone()

Overrides:
clone in class LinkedList<StrassenElement>
See Also:
LinkedList.clone()

equals

public boolean equals(Object obj)

Specified by:
equals in interface Collection<StrassenElement>
Specified by:
equals in interface List<StrassenElement>
Overrides:
equals in class AbstractList<StrassenElement>
See Also:
AbstractList.equals(java.lang.Object)

erbeFeatures

private void erbeFeatures(List<org.geotools.feature.Feature> vererbteFeatures,
                          Teilungspunkt teilungspunkt)
Erbt Features.

Parameters:
vererbteFeatures - Liste der bereits geerbten Features
teilungspunkt - Teilungspunkt, von dem die Features geerbt werden sollen

ersterVP

public String ersterVP()
Gibt die Feature-ID des Verbindungspunktes zurück, an dem der Straßenabschnitt beginnt.

Returns:
Feature-ID des ersten Verbindungspunktes

erzeugeTeilAbschnitte

public void erzeugeTeilAbschnitte(Okstra okstra,
                                  TeilungspunkteOkstra tp)
Erzeugt die Teilabschnittes des Straßenabschnitts durch Aufteilung an den Teilungspunkten der OKSTRA-Datenbasis.

Parameters:
okstra - Die Okstra-Datenbasis
tp - Teilungspunkte

erzeugeTeilAbschnitte

private List<StrassenTeilAbschnitt> erzeugeTeilAbschnitte(StrassenElement strassenelement,
                                                          TeilungspunkteOkstra teilungspunkte)
                                                   throws ImportException
Erzeugt eine Liste von Straßenteilabschnitten durch Aufteilung des Straßenabschnittes an den Aufteilungspunkten.

Parameters:
strassenelement - Straßenelement
teilungspunkte - Aufteilungspunkte
Returns:
Liste von Teilabschnitten
Throws:
ImportException - bei Ausnahmen

getASS

public List<SINASS> getASS()
Gibt die Liste der auf diesem Strassenabschnitt liegenden ASS zurück.

Returns:
Liste von SINASS

getASSnach

public KonfigurationsObjekt getASSnach(Location location)
Gibt das auf diesem Strassenabschnitt liegende ASS zurück, welches sich auf eine Location zubewegt.

Parameters:
location - Location
Returns:
KonfigurationsObjekt

getASSvon

public KonfigurationsObjekt getASSvon(Location location)
Gibt das auf diesem Strassenabschnitt liegende ASS zurück, welches sich von einer Location wegbewegt.

Parameters:
location - Location
Returns:
KonfigurationsObjekt

getLaenge

public double getLaenge()
Gibt die Länge des Abschnittes zurück.

Returns:
Länge

getLocationNach

public Location getLocationNach()
Gibt die Liste der Locationen zurück, auf die sich der Straßen- abschnitt zubewegt.

Returns:
Liste von Location

getLocationVon

public Location getLocationVon(Location nach)
                        throws ImportException
Bestimmt den Anfangs-Locationcode des Strassenabschnittes.

Parameters:
nach - Location, auf die sich der Abschnitt zubewegt
Returns:
Locationcode Anfangs-Location
Throws:
ImportException - wenn keine Vorgängerlocation bestimmt werden kann

getOkstraRichtung

public Verkehrsrichtung getOkstraRichtung()
Gibt die Verkehrsrichtung des Straßenabschnittes zurück.

Returns:
Verkehrsrichtung

getPolygon

public de.bsvrz.sys.funclib.bitctrl.geolib.WGS84Polygon getPolygon()
Gibt den Polygonzug des Abschnittes zurück.

Returns:
Polygonzug

getRichtung

public Verkehrsrichtung getRichtung()
Gibt die Verkehrsrichtung des Straßenabschnittes zurück.

Returns:
Verkehrsrichtung

getSTS

public List<KonfigurationsObjekt> getSTS()
Gibt die Liste der Straßenteilsegmente zurück.

Returns:
Liste von KonfigurationsObjekt

getTeilabschnitte

public List<StrassenTeilAbschnitt> getTeilabschnitte()
Gibt die Liste der Teilabschnitte zurück, aus denen der Abschnitt gebildet wird.

Returns:
Liste von Teilabschnitten

getTeilabschnitte

private StreckenTeilabschnitte getTeilabschnitte(org.geotools.feature.Feature strassenelement)
                                          throws ImportException
Gibt die Streckenteilabschnitte der OKSTRA-Datensasis zu einem Straßenelement zurück.

Parameters:
strassenelement - Straßenelement
Returns:
Streckenteilabschnitte zum Straßenelement
Throws:
ImportException - wenn die Streckenteilabschnitte nicht bestimmt werden können

hashCode

public int hashCode()

Specified by:
hashCode in interface Collection<StrassenElement>
Specified by:
hashCode in interface List<StrassenElement>
Overrides:
hashCode in class AbstractList<StrassenElement>
See Also:
AbstractList.hashCode()

istASS

public boolean istASS()
Test, ob der Straßenabschnitt zu einem äußeren Straßensegment gehört.

Returns:
true, wenn der Straßenabschnitt zu einem äußeren Straßensegment gehört, ansonsten false

istISSAnfang

public boolean istISSAnfang(ImportNetz netz)
Test, ob der Straßenabschnitt der Beginn eines inneren Straßensegmentes ist.

Parameters:
netz - Importnetz
Returns:
true, wenn der Straßenabschnitt der Beginn eines inneren Straßensegmentes ist, ansonsten false

istSegmentAnfang

private boolean istSegmentAnfang(ImportNetz netz)
Test, ob der Straßenabschnitt der Anfang eines Segmentes ist, d.h. es gibt keinen Vorgängerabschnitt

Parameters:
netz - das Importnetz
Returns:
true, wenn der Straßenabschnitt der Anfang eines Segmentes ist, sonst false

istZugeordnet

public boolean istZugeordnet()
Test, ob dieser StrassenAbschnitt bereits einem Straßen- segment zugeordnet wurde.

Returns:
true, wenn bereits zugeordnet, sonst false

kannVerbundenWerden

public boolean kannVerbundenWerden(StrassenElement strelement)
Test, ob der Straßenabschnitt mit dem Straßenelement verbunden werden kann. Folgende Bedingungen müssen dazu erfüllt sein: - der Strassenabschnitt muss einem äußeren Straßensegment zugeordnet sein - die Verkehrsrichtung muss übereinstimmen - die TMC-Locationen müssen übereinstimmen

Parameters:
strelement - Straßenelement
Returns:
true, wenn o.g. Bedingungen erfüllt sind, sonst false

kurzInfo

public String kurzInfo()
Gibt eine Kurzbeschreibung des Abschnittes zurück.

Returns:
textuelle Kurzbeschreibung

letzterVP

public String letzterVP()
Gibt die Feature-ID des Verbindungspunktes zurück, an dem der Straßenabschnitt endet.

Returns:
Feature-ID des letzten Verbindungspunktes

setRichtung

public void setRichtung(Verkehrsrichtung richtung)
Setzt die Verkehrsrichtung des Straßenabschnittes.

Parameters:
richtung - Verkehrsrichtung

setRichtungSTS

public void setRichtungSTS()
Setzt die Verkehrsrichtung des Straßenabschnittes.


setZugeordnet

public void setZugeordnet()
Setzt das Flag, das diesen StrassenAbschnitt als einem Straßen- segment zugeordnet markiert.


teilabschnittAufteilen

private boolean teilabschnittAufteilen(int index,
                                       AufteilungspunktAktuelleKonfiguration ap)
Teilt einen Teilabschnitt an einer Koordinate auf, wenn die Koordinate auf dem Teilabschnitt liegt.

Parameters:
index - Index des Teilabschnittes in der Liste der Teilabschnitte
ap - Aufteilungspunkt
Returns:
true, wenn der Abschnitt geteilt wurde, sonst false

teilabschnittAufteilen

private boolean teilabschnittAufteilen(int index,
                                       double offset)
Teilt einen Teilabschnitt an einem Offset auf.

Parameters:
index - Index des Teilabschnittes in der Liste der Teilabschnitte
offset - Offset, bei dem geteilt werden soll
Returns:
true, wenn der Abschnitt geteilt wurde, sonst false

toString

public String toString()

Overrides:
toString in class AbstractCollection<StrassenElement>
See Also:
AbstractCollection.toString()