de.inovat.kex.bast.exporter
Class DataChannelBAStVV2007

java.lang.Object
  extended by de.inovat.kex.bast.exporter.FileDataChannel
      extended by de.inovat.kex.bast.exporter.AbstractDataChannelBASt
          extended by de.inovat.kex.bast.exporter.DataChannelBAStVV2007
All Implemented Interfaces:
ResultDataChannel

public class DataChannelBAStVV2007
extends AbstractDataChannelBASt

Channel zur Ausgabe von Verkehrsmengen und Geschwindigkeitsdaten in das BASt-Bestandsbandformat für Geschwindigkeitsdaten in der Version 2007.

BASt-FORMATVORGABE FÜR GESCHWINDIGKEITSDATEN VERSION 2007
Dokument V6z – F1100.6606002
Herausgegeben von der Bundesanstalt für Straßenwesen
15. November 2007
A. Fitschen und N. Faerber

Die zur Verarbeitung benötigten Daten werden nur an ausgewählten Zählstellen erhoben und in einer speziellen TLS-Datenversion bereitgestellt. Da für die Geschwindigkeitsdaten keine Folgeverarbeitung definiert und implementiert ist (die Daten werden nur für die BASt erfasst), müssen die zu verarbeitenden Daten mit der Attributgruppe für die TLS-Datenversion 24 atg.tlsLveErgebnisMeldungVersion24 und Aspekt asp.tlsAntwort übergeben werden.

Aufbau des Dateinamens:
Der Dateiname enthält Informationen zum Bundesland, zur Zählstelle, zur Datenart und über den Erfassungszeitraum.
In der Regel besteht der Dateiname aus 11 Stellen und einem dreistelligen Suffix (z.B.: „NW5033v0307.dat“).
Ändert sich die Datenstruktur im Jahresverlauf z. B. durch Umstellung von zwei auf drei Fahrstreifen, so ist dieses durch einen Eintrag an zwölfter und dreizehnter Stelle des Namens kenntlich zu machen z. B. durch „_1“ ( „NW5033v0308_1.dat“). Alle weiteren Dateien des Jahres behalten dann diese Versionskennung bei. Die Dateinamen des nachfolgenden Jahres sind wieder ohne Versionskennung zu vergeben. Der Erfassungszeitraum nach der Kennung „v“ (Datenart: Geschwindigkeiten) enthält in den ersten beiden Stellen das Jahr und in den beiden Folgenden den Monat des betreffenden Jahres.

Bezeichnung der Dateien am Beispiel von "NW5033v0308_1.dat":

 Position     1-2         3-6          7                 8-9   10-11   12-13     . Suffix 1-3
 Beschreibung Bundesland: Zählstellen- Datenart          Jahr  Monats- Version
              Kürzel      nummer       Geschwindigkeiten (yy)  Code    (optional)
 Beispiel     NW          5033         v                 03    08      _1        . dat
 

Einschränkung: Mit dem DataChannelBAStVV2007 kann nur der Standard-Dateiname erzeugt werden, da historische Konfigurationsdaten nicht ausgewertet werden. Bei der Übergabe an die BASt müssen die entsprechenden Suffixe durch den Bearbeiter manuell angehängt werden.

MESZ/MEZ Umstellung:
An Position 7 der Stundendatensätze steht die einzige Statuskennung im Datensatz. Die Statuskennung "m" ist bei der Zeitumstellung auf MESZ (letzter Sonntag im März) zu vergeben. Pro Richtung wird ein Datensatz eingefügt, dessen Werte auf "0" gesetzt sind. Die Statuskennung "o" ist bei der Umstellung auf MEZ (letzter Sonntag im Oktober) zu vergeben. Die Werte dieser dritten Stunde sind aus der doppelten dritten Stunde zu berechnen. Dazu sind die Verkehrsmengen über beide Stunden zu addieren und die Geschwindigkeitskenngrößen vm, svm, v15 und v85 aus den Daten beider Stunden zu ermitteln. Alle anderen Stundendatensätze enthalten an Position 7 ein Leerzeichen " ".

Geschwindigkeiten 'nicht ermittelbar'
Gemäß ergänzender Vorgabe der BASt (EMail vom 01.09.2009 an Logos) sind fehlende Geschwindigkeiten bzw. implausible Mengen in den Fahrzeugklassen so zu behandeln als lägen für eine Stunde keine Daten vor, d.h. auch in diesen Fällen besteht die Datenzeile nur aus dem Zeilenheader (14 Zeichen).

Version:
$Id: DataChannelBAStVV2007.java 2515 2009-09-04 06:55:39Z Strey $
Author:
LOGOS GmbH Rostock (www.logos-ib.de), K. Strey

Field Summary
protected  int _FSCountGgRichtung
          Anzahl Fahrstreifen in Gegen-Richtung (Richtung 2)
protected  int _FSCountInRichtung
          Anzahl Fahrstreifen in In-Richtung (Richtung 1)
protected  de.bsvrz.dav.daf.main.Dataset[] _LastArrayAtTime
          Zähldaten der letzten (verarbeiteten) Stunde, um bei Wechsel von MESZ->MEZ die zwei 2°°Uhr Stunden addieren zu können
protected static java.text.SimpleDateFormat DATE_FORMAT
          Datumformat für Datenzeilen
protected static int KEIN_WERT_255
          Kennung für einen nicht ermittelbaren Wert (8Bit) gemäß TLS.
protected static double KEIN_WERT_6553_5
          Kennung für einen nicht ermittelbaren Wert (16Bit mit Skalierung 0.1).
protected static int KEIN_WERT_65535
          Kennung für einen nicht ermittelbaren Wert (16Bit) gemäß TLS: "Lassen sich (z.
protected static int VK_ANZAHL_BPA
          Soll-Anzahl Geschwindigkeitsklassen BPA
protected static int VK_ANZAHL_LV
          Soll-Anzahl Geschwindigkeitsklassen LVo
protected static int VK_ANZAHL_SGV
          Soll-Anzahl Geschwindigkeitsklassen SGV
 
Fields inherited from class de.inovat.kex.bast.exporter.AbstractDataChannelBASt
_CountOfFS, _LastHour, _ZaehlStelle, MONATE, TWO_DIGIT_FORMAT
 
Constructor Summary
DataChannelBAStVV2007(SendeBAStStatusDaten bastStatusDaten)
          erzeugt einen DataChannel, der mit einer reset-Methode und eventuell AbstractDataChannelBASt.setZaehlstelle(LangZeitZaehlStelle) initialisiert werden muss.
 
Method Summary
protected  java.lang.String constructFilename(LangZeitZaehlStelle zaehlStelle, int year, int month)
          Gibt den Dateinamen für den gewählten Zeitraum zurück.
protected  java.lang.String constructFilename(LangZeitZaehlStelle zaehlStelle, int year, int month, int day)
          gibt den Dateinamen zurück, der sich aus den Daten der Zählstelle, dem Jahr, dem Monat und dem Tag ergibt.
protected  java.lang.String extractData(de.bsvrz.dav.daf.main.Dataset[] rsArray, de.bsvrz.dav.daf.main.Dataset[] rsArrayMEZ, boolean isInRichtung)
          Extrahiert die Werte für die angegebene Richtung aus den Dataset und baut einen String mit den Werten für die Ausgabe in die Datei zusammen.
protected  java.lang.String getHeaderRow01()
          Liefert die 1.
protected  java.lang.String getHeaderRow02()
          Liefert die 2.
protected  java.lang.String getHeaderRow03()
          Liefert die 3.
protected  double getScaledValueAsDouble(de.bsvrz.dav.daf.main.Data data, java.lang.String itemName)
          Prüft, ob das Datum einen gültigen Wert (innerhalb des Wertebereichs liegender Zahlenwert) oder einen speziellen Zustand hat und gibt danach entweder den skalierten Zahlenwert als double oder Double.NaN im Falle eines Zustands zurück.
 void processRecord(de.bsvrz.dav.daf.main.Dataset[] rsArrayAtTime, java.util.Calendar calendar)
          Erzeugt die BASt-Format-Daten und spooled diese.
 void setZaehlstelle(LangZeitZaehlStelle zaehlstelle)
          Setzt die zu verarbeitende Zählstelle und initialisiert die zur Verarbeitung benötigten Header- und Richtungsangaben.
protected  java.lang.String trim(java.lang.String string, int length)
          Formatiert den String linksbündig und füllt bis zur angegebenen Länge mit ' ' auf.
protected  java.lang.String trimQ(int value)
          Formatiert die Fahrzeugmenge als rechtsbündigen String.
protected  java.lang.String trimV15V85(double value)
          Formatiert die v15 und v85 Geschwindigkeit rechtsbündig ganzzahlig.
protected  java.lang.String trimVmStdabw(double value)
          Formatiert die mittlere Geschwindigkeit und deren Standardabweichung rechtsbündig mit einer Nachkommastelle.
protected  void writeHeader(java.io.PrintWriter writer)
          Schreibt die Headerzeilen 1, 2 und 3 in die Datei.
protected  void writeHeaderFTP(java.io.BufferedOutputStream bos)
           
 
Methods inherited from class de.inovat.kex.bast.exporter.AbstractDataChannelBASt
hasData, reset, reset
 
Methods inherited from class de.inovat.kex.bast.exporter.FileDataChannel
close, deleteLastLine, flush, reset, spool
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

KEIN_WERT_255

protected static final int KEIN_WERT_255
Kennung für einen nicht ermittelbaren Wert (8Bit) gemäß TLS.

See Also:
Constant Field Values

KEIN_WERT_65535

protected static final int KEIN_WERT_65535
Kennung für einen nicht ermittelbaren Wert (16Bit) gemäß TLS: "Lassen sich (z. B. aufgrund von Schleifendefekten) einzelne Werte des Blocks nicht ermitteln, ohne dass ein Totalausfall des DE vorliegt, werden die betroffenen Bytes auf den Wert 255 (65535) gesetzt.".
Wird für Geschwindigkeiten und in den Geschwindigkeitsklassen verwendet.

See Also:
Constant Field Values

KEIN_WERT_6553_5

protected static final double KEIN_WERT_6553_5
Kennung für einen nicht ermittelbaren Wert (16Bit mit Skalierung 0.1).

See Also:
Constant Field Values

DATE_FORMAT

protected static final java.text.SimpleDateFormat DATE_FORMAT
Datumformat für Datenzeilen


VK_ANZAHL_BPA

protected static final int VK_ANZAHL_BPA
Soll-Anzahl Geschwindigkeitsklassen BPA

See Also:
Constant Field Values

VK_ANZAHL_LV

protected static final int VK_ANZAHL_LV
Soll-Anzahl Geschwindigkeitsklassen LVo

See Also:
Constant Field Values

VK_ANZAHL_SGV

protected static final int VK_ANZAHL_SGV
Soll-Anzahl Geschwindigkeitsklassen SGV

See Also:
Constant Field Values

_LastArrayAtTime

protected de.bsvrz.dav.daf.main.Dataset[] _LastArrayAtTime
Zähldaten der letzten (verarbeiteten) Stunde, um bei Wechsel von MESZ->MEZ die zwei 2°°Uhr Stunden addieren zu können


_FSCountGgRichtung

protected int _FSCountGgRichtung
Anzahl Fahrstreifen in Gegen-Richtung (Richtung 2)


_FSCountInRichtung

protected int _FSCountInRichtung
Anzahl Fahrstreifen in In-Richtung (Richtung 1)

Constructor Detail

DataChannelBAStVV2007

public DataChannelBAStVV2007(SendeBAStStatusDaten bastStatusDaten)
erzeugt einen DataChannel, der mit einer reset-Methode und eventuell AbstractDataChannelBASt.setZaehlstelle(LangZeitZaehlStelle) initialisiert werden muss.

Parameters:
bastStatusDaten - Statusinformationen.
Method Detail

constructFilename

protected java.lang.String constructFilename(LangZeitZaehlStelle zaehlStelle,
                                             int year,
                                             int month,
                                             int day)
Description copied from class: AbstractDataChannelBASt
gibt den Dateinamen zurück, der sich aus den Daten der Zählstelle, dem Jahr, dem Monat und dem Tag ergibt.

Specified by:
constructFilename in class AbstractDataChannelBASt
Parameters:
zaehlStelle - Zählstelle.
year - Jahr.
month - Monat.
day - Tag.
Returns:
Filename als String.

constructFilename

protected java.lang.String constructFilename(LangZeitZaehlStelle zaehlStelle,
                                             int year,
                                             int month)

Gibt den Dateinamen für den gewählten Zeitraum zurück.

Der Aufruf ist in Verbindung mit dem DataChannelBAStVV2007 nur zulässig, wenn ein Monatsbereich angegeben wird.

Gemäß BASt-Vorgabe enthält der Dateiname Informationen zum Bundesland, zur Zählstelle, zur Datenart und über den Erfassungszeitraum. In der Regel besteht der Dateiname aus 11 Stellen und einem dreistelligen Suffix (z.B.: "NW5033v0307.dat").

Der Erfassungszeitraum nach der Kennung "v" (Datenart: Geschwindigkeiten) enthält in den ersten beiden Stellen das Jahr und in den beiden Folgenden den Monat des betreffenden Jahres.

Specified by:
constructFilename in class AbstractDataChannelBASt
Parameters:
zaehlStelle - Zählstelle.
year - Jahr.
month - Monat.
Returns:
String vollständig klassifizierter Dateiname
Throws:
java.lang.IllegalArgumentException - wird ausgelöst, wenn kein Monatsbereich angegeben wird (s.o.)

Die Methode wird um die Erzeugung eines Filenamen ohne path erweitert. Diese Erweiterung wird benötigt, wenn die Datei anstelle des lokalen Verzeichnissystems auf den FTP-Server in einem spezfisichen Verzeichnis abgelegt werden soll. Dagmar Rostek (DR) inovat.


extractData

protected java.lang.String extractData(de.bsvrz.dav.daf.main.Dataset[] rsArray,
                                       de.bsvrz.dav.daf.main.Dataset[] rsArrayMEZ,
                                       boolean isInRichtung)

Extrahiert die Werte für die angegebene Richtung aus den Dataset und baut einen String mit den Werten für die Ausgabe in die Datei zusammen. Der String ist ab Position 15 hinter Datum+Kennung+Richtungskennung in die Datenzeile einzufügen (er beginnt mit einem Leerzeichen)!

Die Unterscheidung nach Richtungen kommt daher, dass für jede einzelne Stunde genau zwei Datensätze (Zeilen) erzeugt werden müssen.

Für den Sonderfall bei der Sommerzeitumstellung im Herbst (MESZ->MEZ), müssen die zwei 2°° Uhr Stundendatensätze zusammengefasst werden. Dazu können durch rsArrayMEZ[] die zusätzlichen Daten angegeben werden. Für das Ergebnis sind die Verkehrsmengen über beide Stunden zu addieren und die Geschwindigkeitskenngrößen vm, svm, v15 und v85 aus den Daten beider Stunden zu ermitteln.

Parameters:
rsArray - auszugebende Intervalldaten (ATG für TLS-Datenverion 24)
rsArrayMEZ - optionale Angabe für Intervalldaten, die mit denen aus rsArray zusammenzufassen sind (ist für die 2°° Stunde bei der Sommerzeitumstellung MESZ->MEZ im Oktober vorgesehen)
isInRichtung - Nummer der Fahrtrichtung der die Daten zugeordnet sind (1 = IN-Richtung, 2 = GEGEN-Richtung)
Returns:
String mit den jeweils rechtsbündig formatierten Werten

getHeaderRow01

protected java.lang.String getHeaderRow01()

Liefert die 1. Headerzeile

Der erste Header-Datensatz der Stundenwertedatei enthält eine allgemeine Beschreibung zur Identifizierung und Lage der Dauerzählstelle. Die einzelnen Merkmale stehen linksbündig und sind teilweise durch Leerzeichen voneinander getrennt. Die Satzlänge umfasst genau 67 Stellen.

 Position Beschreibung                      Beispiel
 1 - 4    Blatt-Nr. der TK25                4807
 5 - 8    Zählstellennummer                 5033
 9        Leerzeichen
 10 - 11  Bundesland: Kennung               05
 12       Leerzeichen
 13       Straßenklasse                     A
 14       Leerzeichen
 15 - 20  Straßennummer und ggf. Buchstabe  3
 21       Leerzeichen
 22 - 61  Zählstellenname                   Opladen II
 62       Leerzeichen
 63 - 66  Versionsnummer der Struktur       V2.0
 67       Zeilenende                        ;
 

Returns:
String 1. Headerzeile

getHeaderRow02

protected java.lang.String getHeaderRow02()

Liefert die 2. Headerzeile

Auch der zweite Header-Datensatz der Stundenwertedatei hat eine feste Satzlänge (168 Zeichen). Der Datensatz enthält Angaben zur Fahrstreifenanzahl und zu den Fern- und Nahzielen der beiden Fahrtrichtungen. Die Merkmale, linksbündig und mit Leerzeichen getrennt, sind wie folgt angeordnet:

 Position  Beschreibung                           Beispiel
 1         Anzahl der Fahrstreifen in Richtung I  3
 2         Leerzeichen
 3         Anzahl der Fahrstreifen in Richtung II 3
 4         Leerzeichen
 5 - 39    Fernziel in Richtung I                 Oberhausen
 40        Leerzeichen
 41 - 85   Nahziel in Richtung I                  AS Solingen
 86        Leerzeichen
 87 - 121  Fernziel in Richtung II                Köln
 122       Leerzeichen
 123 - 167 Nahziel in Richtung II                 AS Opladen
 168       Zeilenende                             ;
 

Returns:
String 2. Headerzeile

getHeaderRow03

protected java.lang.String getHeaderRow03()

Liefert die 3. Headerzeile.

Der dritte Header-Datensatz benennt die Fahrzeuggruppen (FzGr) mit ihren Bezeichnungen und der Anzahl der Geschwindigkeitsklassen. Danach wird die Richtungskennung und die Fahrzeugmenge des Schwerverkehrs aufgeführt. Es folgen die Bezeichnungen fahrzeuggruppenspezifischer Kenngrößen und die Grenzen der Geschwindigkeitsklassen der Fahrzeuggruppen. Die Grenze der niedrigsten Geschwindigkeitsklasse liegt bei 0 km/h, und die höchste Geschwindigkeitsklasse ist nach oben hin unbegrenzt.

Alle Angaben im dritten Header-Datensatz sind linksbündig einzutragen.

Dauerzählstellen, die für die Auswertung von Geschwindigkeitsdaten herangezogen werden, sollten die Fahrzeugarten zu 3 Fahrzeuggruppen zusammenfassen können. In Ausnahmefällen kann in Abstimmung mit der BASt auf die dritte Fahrzeuggruppe BPA (Busse und Pkw mit Anhänger) verzichtet werden.

Hinweis: Im Zusammenspiel mit der TLS Datenversion 24 muss auf keine Fahrzeuggruppe verzichtet werden. Daher ist das Format für 2 Fahrzeuggruppen nicht relevant und wird von der Funktion auch nicht unterstützt!

Returns:
String 3. Headerzeile für Datenformat mit 3 Fahrzeuggruppen

getScaledValueAsDouble

protected double getScaledValueAsDouble(de.bsvrz.dav.daf.main.Data data,
                                        java.lang.String itemName)

Prüft, ob das Datum einen gültigen Wert (innerhalb des Wertebereichs liegender Zahlenwert) oder einen speziellen Zustand hat und gibt danach entweder den skalierten Zahlenwert als double oder Double.NaN im Falle eines Zustands zurück.

Die Funktion ist bei Lesen von Geschwindigkeitswerten zu verwenden, bei denen es laut TLS den Zustand "Wert nicht ermittelbar" geben kann. Beim Datentyp 79 triff dies auf folgende Attribute zu:

  • mittlere Geschwindigkeit (0..6553,4 km/h, 65535="Wert nicht ermittelbar")
  • Standardabweichung (0..6553,4 km/h, 65535="Wert nicht ermittelbar")
  • v85 Geschwindigkeit (0..254 km/h, 255="Wert nicht ermittelbar")
  • v15 Geschwindigkeit (0..254 km/h, 255="Wert nicht ermittelbar")

Parameters:
data - Data.
itemName - Item Name.
Returns:
Double.NaN wenn kein gültiger Wert vorliegt oder sich der skalierte Wert nicht innerhalb des Wertebereichs befindet, ansonsten der skalierte Wert als double

processRecord

public void processRecord(de.bsvrz.dav.daf.main.Dataset[] rsArrayAtTime,
                          java.util.Calendar calendar)
                   throws ChannelException

Erzeugt die BASt-Format-Daten und spooled diese.

Die übergebenen Daten müssen vom Typ atg.tlsLveErgebnisMeldungVersion24 sein und vor dem ersten Aufruf muss der Channel vollständig initialisiert werden.

Die BASt-Datei beginnt mit 3 Headerzeilen.

Nach dem dritten Header-Datensatz folgen die einzelnen Stundendatensätze. Dabei werden für jede einzelne Stunde genau zwei Datensätze (Zeilen) erzeugt, für jede Fahrtrichtung einen. Die Länge der Datensätze ist von der Anzahl der Fahrstreifen und der Fahrzeuggruppen abhängig.
Die ersten 6 Positionen enthalten das Datum (Pos. 1-6, Format: „yymmdd“). Nach einer Statuskennung – für MESZ/MEZ – folgt die Stunde (Pos. 8-12, Format: „hh:mm“, beginnend mit „01:00“). Ein Leerzeichen an Position 13 trennt die Richtungskennung („1“ bzw. „2“) ab. Alle weiteren Angaben sind ebenfalls durch Leerzeichen voneinander getrennt.
Es folgen für den ersten (rechten) Fahrstreifen der Richtung die Fahrzeugmenge des Schwerverkehrs qSV und anschließend fahrzeuggruppenbezogen die Fahrzeugmenge qGr der Fahrzeuggruppe 1, die mittlere Geschwindigkeit vm dieser Fahrzeuggruppe auf eine Nachkommastelle gerundet mit „,“ als Trennzeichen (nicht mit dem amerikanischen Dezimalzeichen „.“) und die zugehörige Standardabweichung svm, ebenfalls auf eine Nachkommastelle gerundet mit „,“ als Trennzeichen sowie die v15 und v85. Anschließend werden die Verkehrsmengen jeder Geschwindigkeitsklasse der ersten Fahrzeuggruppe angegeben.
Eine analoge Auflistung für den rechten Fahrstreifen erfolgt für die Fahrzeuggruppe 2 und, falls eine dritte Fahrzeuggruppe erfasst wird, auch für sie. Die Werte für weitere Fahrstreifen dieser Richtung sind von außen zur Fahrbahnmitte anzugeben.
Liegen für eine Stunde keine Daten vor, so bestehen die beiden Datenzeilen lediglich aus Datum, Statuskennung, Stunde und Richtungskennung (Länge: 14 Zeichen). [Anmerkung: auch fehlende Fahrzeugraster werden wie Datenausfälle behandelt, siehe DataChannelBAStVV2007(de.inovat.kex.bast.SendeBAStStatusDaten)].
Die Angaben in den Stundendatensätzen sind im Gegensatz zu den drei Header- Datensätzen rechtsbündig ausgerichtet.

Parameters:
rsArrayAtTime - ResultData[]
calendar - Intervallbeginn der Datens&auuml;
Throws:
ChannelException

setZaehlstelle

public void setZaehlstelle(LangZeitZaehlStelle zaehlstelle)
                    throws ChannelException

Setzt die zu verarbeitende Zählstelle und initialisiert die zur Verarbeitung benötigten Header- und Richtungsangaben.

Specified by:
setZaehlstelle in class AbstractDataChannelBASt
Parameters:
zaehlstelle - LangZeitZaehlStelle
Throws:
ChannelException - .
See Also:
AbstractDataChannelBASt.setZaehlstelle(de.inovat.kex.bast.common.objectwrapper.LangZeitZaehlStelle)

trim

protected java.lang.String trim(java.lang.String string,
                                int length)

Formatiert den String linksbündig und füllt bis zur angegebenen Länge mit ' ' auf. Ist der String null, wird vollständig mit Leerzeichen aufgefüllt. Überzählige Zeichen werden abgeschnitten.

Parameters:
string - auszugebender String, null ist erlaubt und wird als "" interpretiert
length - Länge bis zu der mit ' ' aufgefüllt wird oder nach der der String abgeschnitten wird
Returns:
linksbündig ausgerichteter String der Länge length

trimQ

protected java.lang.String trimQ(int value)

Formatiert die Fahrzeugmenge als rechtsbündigen String.

Gemäß Vorgabe sind die Angaben in den Stundendatensätzen im Gegensatz zu den drei Header- Datensätzen rechtsbündig ausgerichtet.
Bei Sonderwerten der TLS für nicht ermittelbare bzw. fehlerhafte Werte, wird " 0" in die Ausgabedatei geschrieben. Das betrifft negative Werte oder alle >=65535.

Parameters:
value - auszugebender Wert (Fahrzeuganzahl, die Werte müssen zwischen 0 und 65534 liegen, Wert 65535 = Zustand "nicht ermittelbar")
Returns:
String mit dem rechtsbündig formatierten Wert

trimV15V85

protected java.lang.String trimV15V85(double value)

Formatiert die v15 und v85 Geschwindigkeit rechtsbündig ganzzahlig.

Gemäß Vorgabe sind die v15 und v85 (entsprechend der Erfassung) als ganzzahligen Wert.

Bei Sonderwerten der TLS für nicht ermittelbare bzw. fehlerhafte Werte, wird " 0" in die Ausgabedatei geschrieben. Das betrifft negative Werte und alle >=255

Parameters:
value - auszugebender Wert (Geschwindigkeit, die Werte müssen zwischen 0 und 254 liegen, Wert 255="nicht ermittelbar)
Returns:
String mit rechtsbündig formatiertem Wert

trimVmStdabw

protected java.lang.String trimVmStdabw(double value)

Formatiert die mittlere Geschwindigkeit und deren Standardabweichung rechtsbündig mit einer Nachkommastelle.

Gemäß Vorgabe ist die mittlere Geschwindigkeit vm auf eine Nachkommastelle zu runden mit ',' als Trennzeichen (nicht mit dem amerikanischen Dezimalzeichen '.) und die zugehörige Standardabweichung svm ebenfalls auf eine Nachkommastelle gerundet mit ',' als Trennzeichen.

Bei Sonderwerten der TLS für nicht ermittelbare bzw. fehlerhafte Werte, wird " 0,0" in die Ausgabedatei geschrieben. Das betrifft negative Werte und alle >=6553.5.

Parameters:
value - auszugebender Wert (Geschwindigkeit, die Werte müssen zwischen 0 und 6553,5 liegen, Wert 6553.5 = Zustand "nicht ermittelbar")
Returns:
String mit rechtsbündig formatiertem Wert

writeHeader

protected void writeHeader(java.io.PrintWriter writer)

Schreibt die Headerzeilen 1, 2 und 3 in die Datei.

Specified by:
writeHeader in class FileDataChannel
Parameters:
writer - PrintWriter.

writeHeaderFTP

protected void writeHeaderFTP(java.io.BufferedOutputStream bos)
                       throws java.io.IOException
Specified by:
writeHeaderFTP in class FileDataChannel
Throws:
java.io.IOException