de.bsvrz.kex.bwsin.konfig
Class ImportNetz

java.lang.Object
  extended by java.util.AbstractMap<K,V>
      extended by java.util.TreeMap<String,Verbindungspunkt>
          extended by de.bsvrz.kex.bwsin.konfig.ImportNetz
All Implemented Interfaces:
Serializable, Cloneable, Map<String,Verbindungspunkt>, NavigableMap<String,Verbindungspunkt>, SortedMap<String,Verbindungspunkt>

public class ImportNetz
extends TreeMap<String,Verbindungspunkt>

Netzrepräsentation des zu importierenden Netzes auf der Basis der Verbindungspunkte. Über diese Klasse können die Straßenabschnitte und die inneren Straßensegmente gebildet werden. Das Netz wird zunächst mit den Straßenelementen der OKSTRA- Datenbasis initialisiert. Die Straßenelemente werden dabei entsprechend ihrer Verkehrsrichtung den Verbindungspunkten zugeordnet. Straßen- elemente, die in beiden Verkehrsrichtungen definiert sind, werden gedoppelt. Die gebildeten Straßenabschnitte werden ebenfalls den Verbindungspunkten zugewiesen. Über den Straßenabschnitte können dann die inneren Straßensegmente durch Bildung der Routen gefunden werden.

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

Nested Class Summary
 
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
 
Field Summary
private  de.bsvrz.sys.funclib.debug.Debug debug
          DebugLogger für Debug-Ausgaben.
private  ArrayList<Route> routen
          gefundene Routen.
private  ArrayList<StrassenElement> selemente
          HashSet der importierten Straßenelemente.
private static long serialVersionUID
          serialVersionUID.
(package private)  VerboteneFahrbeziehungen verboteneFahrbeziehungen
          Die verbotenen Fahrbeziehungen.
 
Constructor Summary
ImportNetz(Okstra okstradb)
          Konstruktor aus OKSTRA-Datenbasis.
 
Method Summary
private  List<StrassenElement> bildeStrassenElementeAusLocations(StrassenElement element)
          Erzeugt aus einem Straßenelement für jede Location, auf die es zufährt, eine eigene Instanz.
private  void cleanupUsed()
          Löscht die 'benutzt'-Flags aller Verbindungspunkte.
private  StrassenAbschnitt erzeugeAbschnitt(StrassenElement startelement)
          Erzeugt einen Strassenabschnitt beginnend bei einem Straßenelement.
 List<StrassenAbschnitt> erzeugeStrassenabschnitte()
          Bildet Straßenabschnitte aus zusammengehörenden Straßenelementen über den Verbindungspunkten.
 StrassenAbschnitt findeAssAnkommend(String vpunktid)
          Sucht ein an einem Verbindungspunkt ankommendes ASS.
private  void findeInnereStrassenelemente(String vpunktid, Route route)
          Findet weitere Straßenelemente zu einer Route ausgehend von einem Verbindungspunkt.
 ArrayList<Route> findeInnereStrassenSegmente(StrassenAbschnitt startabschnitt)
          Findet die inneren Straßensegmente beginnend bei einem Straßenabschnitt.
private  Comparator<Route> getComparator()
          Erzeugt einen Comparator zum Ordnen der erzeugten Routen.
 List<StrassenAbschnitt> getNachfolger(StrassenAbschnitt abschnitt)
          Bestimmt die Nachfolger eines Abschnittes.
 StrassenAbschnitt getVorgaenger(StrassenAbschnitt strassenAbschnitt)
          Bestimmt einen noch nicht zugeordneten Vorgängerabschnitt zu einem Abschnitt.
private  void importiereStrassenElemente(Okstra okstradb)
          Importiert alle Straßenelemente der OKSTRA-Datenbasis.
 boolean istNeuerAnfangAusVerbotenerFahrbeziehung(StrassenAbschnitt abschnitt)
          Bestimmt, ob ein Abschnitt ein gültiger Anfang eines Straßen- segmentes aus einer verbotenen Fahrbeziehung ist.
private  void zuweisenStrassenabschnitt(StrassenAbschnitt abschnitt)
          Weist dem Netz einen Straßenabschnitt zu.
 
Methods inherited from class java.util.TreeMap
ceilingEntry, ceilingKey, clear, clone, comparator, containsKey, containsValue, descendingKeySet, descendingMap, entrySet, firstEntry, firstKey, floorEntry, floorKey, get, headMap, headMap, higherEntry, higherKey, keySet, lastEntry, lastKey, lowerEntry, lowerKey, navigableKeySet, pollFirstEntry, pollLastEntry, put, putAll, remove, size, subMap, subMap, tailMap, tailMap, values
 
Methods inherited from class java.util.AbstractMap
equals, hashCode, isEmpty, toString
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Map
equals, hashCode, isEmpty
 

Field Detail

serialVersionUID

private static final long serialVersionUID
serialVersionUID.

See Also:
Constant Field Values

debug

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


selemente

private final ArrayList<StrassenElement> selemente
HashSet der importierten Straßenelemente.


verboteneFahrbeziehungen

VerboteneFahrbeziehungen verboteneFahrbeziehungen
Die verbotenen Fahrbeziehungen.


routen

private ArrayList<Route> routen
gefundene Routen.

Constructor Detail

ImportNetz

public ImportNetz(Okstra okstradb)
           throws ImportException
Konstruktor aus OKSTRA-Datenbasis. Es wird ein Netz aus den Verbindungspunkten der OKSTRA-Datenbasis und den Straßenelementen erzeugt. Die Zuordnung der Straßenelemente erfolgt entsprechend ihrer Verkehrsrichtung, d.h. bei Straßenelementen mit der Verkehrsrichtung 'GEGEN_STATIONIERUNGSRICHTUNG' werden die Ver- bindungspunkte getauscht. Straßenelemente mit Verkehrsrichtung 'BEIDE_RICHTUNGEN' werden ge- doppelt und ein Element für jede Richtung in das Netz integriert.

Parameters:
okstradb - Okstra
Throws:
ImportException - bei Ausnahmen
Method Detail

bildeStrassenElementeAusLocations

private List<StrassenElement> bildeStrassenElementeAusLocations(StrassenElement element)
Erzeugt aus einem Straßenelement für jede Location, auf die es zufährt, eine eigene Instanz.

Parameters:
element - StrassenElement
Returns:
Liste von StrassenElement

cleanupUsed

private void cleanupUsed()
Löscht die 'benutzt'-Flags aller Verbindungspunkte.


erzeugeAbschnitt

private StrassenAbschnitt erzeugeAbschnitt(StrassenElement startelement)
Erzeugt einen Strassenabschnitt beginnend bei einem Straßenelement. Mehrere Straßenelemente werden unter folgenden Bedingungen zu einem Straßenabschnitt zusammengefaßt: 1. Die Verbindungspunkte an den Enden des Straßenelementes haben genau ein eingehendes Straßenelement (endet am Verbindungspunkt) und genau ein abgehendes Straßenelemente (beginnt bei Verbindungs- punkt). 2. Die TMC-Richtungsangaben der zu verbindenden Straßenelemente sind gleich. Der Algoritmus arbeitet wie folgt: Vom Start-Straßenelement aus wird zuerst vorwärts und dann rückwärts über die Verbindungspunkte nach Straßenelementen gesucht, die o.g. Kriterien entsprechen.

Parameters:
startelement - Strassenelement
Returns:
neuer Strassenabschnitt

erzeugeStrassenabschnitte

public List<StrassenAbschnitt> erzeugeStrassenabschnitte()
Bildet Straßenabschnitte aus zusammengehörenden Straßenelementen über den Verbindungspunkten.

Returns:
Liste von StrassenAbschnitten

findeAssAnkommend

public StrassenAbschnitt findeAssAnkommend(String vpunktid)
Sucht ein an einem Verbindungspunkt ankommendes ASS.

Parameters:
vpunktid - Feature-ID des Verbindungspunktes
Returns:
Straßenabschnitt oder null, wenn kein ankommendes ASS existiert

findeInnereStrassenelemente

private void findeInnereStrassenelemente(String vpunktid,
                                         Route route)
Findet weitere Straßenelemente zu einer Route ausgehend von einem Verbindungspunkt.

Parameters:
vpunktid - ID des Start-Verbindungspunktes
route - Route

findeInnereStrassenSegmente

public ArrayList<Route> findeInnereStrassenSegmente(StrassenAbschnitt startabschnitt)
Findet die inneren Straßensegmente beginnend bei einem Straßenabschnitt. Es werden alle Verbindungen ausgehend von dem Straßenabschnitt gesucht, bis entweder ein äußeres Straßenelement erreicht wird oder kein weiterer Straßenabschnitt mehr folgt. Das Ergebnis ist eine Liste von Routen, wobei jede Route durch eine Liste von Straßenabschnitten gebildet wird. Die berechneten Routen werden auf enthaltene verbotene Fahrbeziehungen getestet und bei Bedarf korrigiert. Die Routen werden am Ende geordnet. Die Ordnung wird durch den über die Methode ImportNetz erzeugten Comparator bestimmt.

Parameters:
startabschnitt - Straßenabschnitt, mit dem das Routing beginnt
Returns:
Liste von Routen

getComparator

private Comparator<Route> getComparator()
Erzeugt einen Comparator zum Ordnen der erzeugten Routen. Die Routen werden nach ihrer Berechnung in der von diesem Comparator bestimmten Reihenfolge abgearbeitet. Gefordert ist eine Ordnung entsprechende der 'verkehrstechnischen Bedeutung'. Dies wird hier als Länge in dem Sinne interpretiert, dass die 'verkehrstechnische Bedeutung' mit zunehmender Länge abnimmt.

Returns:
Comparator zum Vergleich zweier Routen

getNachfolger

public List<StrassenAbschnitt> getNachfolger(StrassenAbschnitt abschnitt)
Bestimmt die Nachfolger eines Abschnittes.

Parameters:
abschnitt - Der Straßenabschnitt, dessen Nachfolger bestimmt werden sollen
Returns:
die Liste aller Nachfolger

getVorgaenger

public StrassenAbschnitt getVorgaenger(StrassenAbschnitt strassenAbschnitt)
Bestimmt einen noch nicht zugeordneten Vorgängerabschnitt zu einem Abschnitt.

Parameters:
strassenAbschnitt - Abschnitt, zu dem der Vorgänger bestimmt werden soll
Returns:
nicht zugeordneter Vorgängerabschnitt oder null, falls kein Vorgänger gefunden werden kann

importiereStrassenElemente

private void importiereStrassenElemente(Okstra okstradb)
                                 throws ImportException
Importiert alle Straßenelemente der OKSTRA-Datenbasis.

Parameters:
okstradb - OKSTRA-Datenbasis
Throws:
ImportException - bei Ausnahmen

istNeuerAnfangAusVerbotenerFahrbeziehung

public boolean istNeuerAnfangAusVerbotenerFahrbeziehung(StrassenAbschnitt abschnitt)
Bestimmt, ob ein Abschnitt ein gültiger Anfang eines Straßen- segmentes aus einer verbotenen Fahrbeziehung ist.

Parameters:
abschnitt - StrassenAbschnitt
Returns:
true, wenn der Abschnitt ein gültiger Anfang eines Straßen- segmentes aus einer verbotenen Fahrbeziehung ist, sonst false

zuweisenStrassenabschnitt

private void zuweisenStrassenabschnitt(StrassenAbschnitt abschnitt)
Weist dem Netz einen Straßenabschnitt zu.

Parameters:
abschnitt - Straßenabschnitt