sascha@3657: FLYS3-Importer
sascha@3657:
sascha@3657: Der FLYS3-Importer dient dazu, hydrologische und morphologische
sascha@3657: Gewässerdaten aus dem Dateisystem in die FLYS3-Datenbank zu importieren.
sascha@3657: Das Werkzeug orientiert sich hierbei an der Dateihierachie,
sascha@3657: so wie sie auch von Desktop-FLYS ausgelesen wird.
sascha@3657:
sascha@3657: Als Startargument bekommt der Importer den Pfad zu einer
sascha@3657: GEW-Datei übergeben.
sascha@3657:
sascha@3657: Wichtig für den Importer sind in dieser Datei
sascha@3657: die Zeilen, die mit "WSTDatei:" beginnen. In ihnen wird der
sascha@3657: Pfad zu der zentralen WST-Datei des jeweiligen Gewässers angegeben.
sascha@3657: Alle anderen importierten Dateien werden in ihrer Lage relativ zur
sascha@3657: Lage dieser Datei betrachtet.
sascha@3657:
sascha@3657: Das Verhalten des Importes kann mit sogenannten
sascha@3657: System-Properties gesteuert werden. Diese werden im
sascha@3657: Allgemeinen in der Form -Dkey=value angegeben.
sascha@3657:
sascha@3657: Will man z.B. mit dem Importer nur in simulierierten Import
sascha@3657: durchführen, dann kann dies über die Angabe von
sascha@3657: '-Dflys.backend.importer.dry.run=true' erfolgen.
sascha@3657:
sascha@3657: !!! Der Import geht wie Desktop-FLYS davon aus, dass die Dateien
sascha@3657: !!! Latin-1 encodiert vorliegen.
sascha@3657:
sascha@3657: Für den Importer stellt jeweils der Import eines Gewässers eine
sascha@3657: transaktionale Einheit dar. Wird der Import während eines Gewässers
sascha@3657: abgebrochen, werden alle Änderungen bzgl. dieses Gewässers zurück gerollt.
sascha@3657:
sascha@3657: Importierte Daten:
sascha@3657:
sascha@3657: Der Importer importiert folgende Datentypen:
sascha@3657:
sascha@3657: - Streckenfavoriten (*.km-Dateien)
sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.annotations=true'
sascha@3657: unterdrückt werden.
sascha@3657:
sascha@3664: Zur Klassifikation von Streckenfavoriten kann mit
sascha@3664: -Dflys.backend.importer.annotation.types=DATEI
sascha@3664: der Pfad zu einer XML-Datei angegeben werden, in der über
sascha@3664: Regeln festgelegt wird, wie diese geschehen soll.
sascha@3664: Details hierzu im Anhang 'Klassifikation von Streckenfavoriten'.
sascha@3657:
sascha@3657: - Pegel, Stammdaten (*.glt, *.sta-Dateien):
sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.gauges=true'
sascha@3657: unterdrückt werden.
sascha@3665: Die .glt-Datei, die neben der .wst-Datei liegt, wird zuerst
sascha@3665: ausgelesen. Es werden nur *.sta-Datei von Pegeln geladen, die
sascha@3665: in der .glt-Datei vermerkt sind.
sascha@3657:
sascha@3660: Wenn "-Dflys.backend.sta.parse.gauge.numbers=true' wird versucht,
sascha@3660: die offiziellen Pegelnummern aus den Stammdaten zu extrahieren.
sascha@3660: !!! Dies ist mit Vorsicht zu behandeln, denn die meisten STA-Dateien
sascha@3660: !!! Enthalten invalide Pegelnummern.
sascha@3660:
sascha@3660: Die System-Property "flys.backend.main.value.types" kann einen
sascha@3662: String mit gültigen Typen von Stammdaten enthalten. Vorbelegt
sascha@3660: ist "QWTD". In der Praxis ist "QWD" eine sinnvolle Belegung.
sascha@3660:
sascha@3657: - Basis-Wasserstände (gewaesser.wst-Dateien):
sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.wst=true'
sascha@3657: unterdrückt werden.
sascha@3657:
sascha@3657: - Zusätzliche Längsschnitte (*.zus, *.wst-Dateien)
sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.extra.wsts=true'
sascha@3657: unterdrückt werden.
sascha@3665: Es werden die *.zus- und *.wst-Dateien aus dem Verzeichnis
sascha@3665: "../Zus.Längsschnitte" relativ zur gewaesser.wst-Datei betrachtet.
sascha@3657:
sascha@3657: - Fixierungen (*.wst-Dateien)
sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.fixations=true'
sascha@3657: unterdrückt werden.
sascha@3665: Es werden die *.wst-Dateien aus dem Verzeichnis
sascha@3665: "../Fixierungen" relativ zur gewaesser.wst-Datei betrachtet.
sascha@3657:
sascha@3657: - Amtliche Linien (*.wst-Dateien)
sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.official.lines=true'
sascha@3657: unterdrückt werden.
sascha@3665: Es werden die "Amtl_Linien.wst"-Dateien aus dem Verzeichnis
sascha@3665: "../Basisdaten" und "../Fixierungen" relativ zur gewaesser.wst-Datei betrachtet.
sascha@3657:
sascha@3657: - Profilspuren (*.prf-Dateien)
sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.prfs=true'
sascha@3657: unterdrückt werden.
sascha@3665: Es werden rekursiv alle *.prf-Dateien aus "../../.." relativ
sascha@3665: zur gewaesser.wst-Datei betrachtet. Vor dem Import werden
sascha@3665: mithilfe eines Längen- und eines MD5-Summen-Vergleichs
sascha@3665: inhaltliche Duplikate ausgeschlossen.
sascha@3657:
sascha@3657: - Hydraulische Kennzahlen (*.hyk)
sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.hyks=true'
sascha@3657: unterdrückt werden.
sascha@3665: Es werden rekursiv alle *.hyk-Dateien aus "../../.." relativ
sascha@3665: zur gewaesser.wst-Datei betrachtet. Vor dem Import werden
sascha@3665: mithilfe eines Längen- und eines MD5-Summen-Vergleichs
sascha@3665: inhaltliche Duplikate ausgeschlossen.
sascha@3657:
sascha@3665: - Hochwassermarken (*.zus, *.wst)
sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.flood.water=true'
sascha@3657: unterdrückt werden.
sascha@3665: Es werden die *.zus- und *.wst-Dateien aus dem Verzeichnis
sascha@3665: "../HW-Marken" relativ zur gewaesser.wst-Datei betrachtet.
sascha@3657:
sascha@3657: - Hochwasserschutzanlagen (*.zus)
sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.flood.protection=true'
sascha@3657: unterdrückt werden.
sascha@3665: Es werden die *.zus- und *.wst-Dateien aus dem Verzeichnis
sascha@3665: "../HW-Schutzanlagen" relativ zur gewaesser.wst-Datei betrachtet.
sascha@3657:
sascha@3657: TODO INGO:
sascha@3657:
sascha@3657: flys.backend.importer.skip.bed.height.single
sascha@3657: flys.backend.importer.skip.bed.height.epoch
sascha@3657: flys.backend.importer.skip.sediment.density
sascha@3657: flys.backend.importer.skip.morphological.width
sascha@3657: flys.backend.importer.skip.flow.velocity
sascha@3657: flys.backend.importer.skip.sediment.yield
sascha@3657: flys.backend.importer.skip.waterlevels
sascha@3657: flys.backend.importer.skip.waterlevel.differences
sascha@3657: flys.backend.importer.skip.sq.relation
sascha@3657:
sascha@3663: Für die Verbindung zur Datenbank ist es nötig, dem Import
sascha@3663: die Verbindungsdaten zu übergeben. Dies geschieht ebenfalls
sascha@3663: über System-Properties:
sascha@3657:
sascha@3663: -Dflys.backend.user=NUTZER
sascha@3663: Datenbanknutzer
sascha@3663:
sascha@3663: -Dflys.backend.password=PASSWORT
sascha@3663: Datenbankpasswort
sascha@3663:
sascha@3663: -Dflys.backend.url=URL
sascha@3663: URL zur Datenbank. Typische wäre im Fall einer Oracle-XE-Edition z.B.:
sascha@3663: jdbc:oracle:thin:@//RECHNER:PORT/XE
sascha@3663: mit RECHNER Name des Servers, auf dem die Datenbank läuft
sascha@3663: und PORT der Port auf dem die Datenbank konkret zu erreichen ist.
sascha@3663: Weitere Details unter http://www.orafaq.com/wiki/JDBC
sascha@3663:
sascha@3663: -Dflys.backend.driver=TREIBER
sascha@3663: mit TREIBER dem Namen des JDBC-Treibers, der es erlaubt
sascha@3663: das Protokoll der Datenbank zu sprechen. Im Falle
sascha@3663: einer Oracle XE wäre dies z.B.:
sascha@3663: oracle.jdbc.OracleDriver
sascha@3663:
sascha@3663: -Dflys.backend.dialect=DIALECT
sascha@3663: mit DIALECT dem Hibernate-Dialekt, den die Datenbank versteht.
sascha@3663: Im Falle eine Oracle-XE wäre dies z.B.:
sascha@3663: org.hibernate.dialect.OracleDialect
sascha@3663:
sascha@3663:
sascha@3663: Hinweise zum Betrieb:
sascha@3663: ---------------------
sascha@3662:
sascha@3662: Der Speicherverbrauch des Importers ist sehr hoch. Es ist empfehlenswert,
sascha@3662: der JVM mindestens 8GiB Hauptspeicher zuzuordnen: '-Xmx8192m'
sascha@3662: Besonders speicherintensiv ist der Import der HYKs und der PRFs.
sascha@3662: Hier ist es unter Umständen empfehlenswert, diese in zwei oder drei
sascha@3662: Schritten zu importieren. Zuerst die sonstigen hydrologischen Daten
sascha@3662: (hierbei mit flys.backend.importer.skip.hyks=true und flys.backend.importer.skip.prfs
sascha@3662: den Import der HYKs und PRFs verhindern). Dann die HYKs (mit flys.backend.importer.skip.*
sascha@3662: der anderen Daten) und im finalen Schritt dann die PRFs.
sascha@3662:
sascha@3664: Anhang 'Klassifikation von Streckenfavoriten'
sascha@3664: ---------------------------------------------
sascha@3664: Streckenfavoriten werden aus KM-Dateien importiert. Um die einzelnen Einträge
sascha@3664: eine Kategorie (Brücken, Pegel, etc.) zuzuordnen, kann eine XML angegeben werden,
sascha@3664: in der Regeln für diese Klassifikation definiert werden. Schematisch gliedert
sascha@3664: sich diese Datei in die zwei Bereiche 'types' und 'patterns':
sascha@3664:
sascha@3664:
sascha@3664: ...
sascha@3664: ...
sascha@3664:
sascha@3664:
sascha@3664: In der Sektion 'types' werden die Kategorien vereinbart, in die
sascha@3664: klassifiziert werden sollen. Die geschieht mit einzelnen
sascha@3664:
sascha@3664:
sascha@3664:
sascha@3664: ...
sascha@3664:
sascha@3664:
sascha@3664: Das Attribut 'default' kann einmal vergeben werden und
sascha@3664: besagt, dass diese Kategorie gewählt werden soll, wenn
sascha@3664: keine andere Kategorie zugeordnet werden kann.
sascha@3664:
sascha@3664: In der Sektion 'patterns' werden dann die Regel
sascha@3664: definiert, die einzelne Einträge den definierten Kategorien
sascha@3664: zuordnet. Hierfür können zwei Arten von Definitionen
sascha@3664: angegeben werden:
sascha@3664:
sascha@3664:
sascha@3664:
sascha@3664: oder
sascha@3664:
sascha@3664:
sascha@3664:
sascha@3664: Die erste Variante bestimmt die Kategorie, die pro KM-Datei
sascha@3664: gelten soll. 'pattern' ist hierbei ein regulärer Ausdruck,
sascha@3664: der auf den Dateinamen angewandt wird. Passt der Name
sascha@3664: der Datei auf den regulären Ausdruck, wird 'type' als
sascha@3664: Vorgabe angenommen. Treffen mehrere -Regeln zu,
sascha@3664: wird der erste Treffer angewandt. Findet keine der -Regeln
sascha@3664: Anwendung, wird die Kategorie ausgewählt, die in der -Section
sascha@3664: das Attribut 'default' gesetzt hat.
sascha@3664:
sascha@3664: Die zweite Regel-Variante wird auf jeden Eintrag
sascha@3664: innerhalb einer KM-Datei auf den Bezeichner der Streckenfavoriten
sascha@3664: angewandt. Als Muster dient auch hier ein regulärer Ausdruck,
sascha@3664: der über das Attribut 'pattern' definiert wird. Die Kategorie
sascha@3664: wird in Trefferfall über das Attribut 'type' bestimmt. Treffen
sascha@3664: mehrere Regeln zu, wird die Kategorie gewählt, die zum ersten
sascha@3664: Treffer gehört. Trifft keine Regel zu wird der Eintrag der
sascha@3664: Kategorie zugeteilt, die für die beinhaltende Datei als Vorgabe
sascha@3664: gilt.
sascha@3664:
sascha@3664: Anhang 'Fehler und Warnungen':
sascha@3664: =============================
sascha@3657:
sascha@3660: Fehler:
sascha@3660: -------
sascha@3659:
sascha@3659: - 'error while parsing gew'
sascha@3659: Die GEW-Datei ist fehlerhaft oder konnte nicht geöffnet werden.
sascha@3659:
sascha@3659: - 'File 'XYZ' is broken!'
sascha@3659: Die Datei XYZ ist inkonsistent und führt zu Fehlern.
sascha@3659:
sascha@3659: - 'Error while parsing file for morph. width.'
sascha@3659: Beim Lesen der morphologischen Breite trat ein Fehler auf.
sascha@3659:
sascha@3659: - 'Error while storing flow velocity model.'
sascha@3659: Beim Schreiben eines Fliessgeschwindigkeitsmodells trat ein Fehler auf.
sascha@3659:
sascha@3659: - 'Error while storing flow velocity measurement.'
sascha@3659: Beim Schreiben einer Fliessgeschwindigkeitsmessung trat ein Fehler auf.
sascha@3659:
sascha@3659: - 'Error while storing sediment yield.'
sascha@3659: Beim Schreiben einer Sedimentablagerung trat ein Fehler auf.
sascha@3659:
sascha@3659: - 'Error while storing waterlevel diff.'
sascha@3659: Beim Schreiben einer Wassspiegeldifferenz trat ein Fehler auf.
sascha@3659:
sascha@3659: - 'Error while storing sq relation.'
sascha@3659: Beim Schreiben einer S(Q) Beziehung trat ein Fehler auf.
sascha@3659:
sascha@3659: - 'Error reading PRF file.'
sascha@3659: Beim Lesen einer PRF-Datei trat ein Fehler auf.
sascha@3659:
sascha@3659: - 'Error closing PRF file.'
sascha@3659: Beim Schliessen einer PRF-Datei trat ein Fehler auf.
sascha@3659:
sascha@3659: - 'HYK 1: not enough elements in line #'
sascha@3659: - 'HYK 2: not enough elements in line #'
sascha@3659: - 'HYK 5: not enough elements in line #'
sascha@3659: - 'HYK 6: not enough elements in line #'
sascha@3659: Eine Zeile in einer HYK-Datei hat nicht genügend Elemente.
sascha@3659:
sascha@3659: - 'HYK: parsing num zones, bottom or top height failed in line #'
sascha@3659: - 'HYK: HYK: number of flow zones mismatches in line #'
sascha@3659: Die Anzahl der Zonen oder Daten über die Zonen sind nicht korrekt.
sascha@3659:
sascha@3659: - 'HYK: cannot parse number in line #'
sascha@3659: Eine Zahl wurde erwartet.
sascha@3659:
sascha@3659: - 'HYK: Error reading file.'
sascha@3659: Beim Lesen einer HYK-Datei trat ein Fehler auf.
sascha@3659:
sascha@3659: - 'HYK: Error closing file.'
sascha@3659: Beim Schliessen einer HYK-Datei trat ein Fehler auf.
sascha@3659:
sascha@3660: Warnungen:
sascha@3660: ----------
sascha@3659:
sascha@3660: - 'annotation type file 'XYZ' is not readable.'
sascha@3660: Die Datein XYZ kann nicht gelesen werden.
sascha@3659:
sascha@3660: - 'cannot parse annotation types file.'
sascha@3660: Während der Verarbeitung der Annotationsdatei ist Fehler aufgetreten.
sascha@3660:
sascha@3660: - 'Cannot read directory.'
sascha@3660: verzeichnis konnte nicht gelesen werden.
sascha@3660:
sascha@3660: - 'no official lines wst file found'
sascha@3660: Keine Datei mit amtlichen Linien gefunden.
sascha@3660:
sascha@3660: - 'cannot read fixations wst file directory'
sascha@3660: Das Verzeichnis mit den Fixierungen kann nicht gelesen werden.
sascha@3660:
sascha@3660: - 'cannot read extra longitudinal wst file directory'
sascha@3660: Das Verzeichnis mit den zusätzlichen Längsschnitten kann nicht gelesen werden.
sascha@3660:
sascha@3660: - 'cannot read gauges from 'XYZ''
sascha@3660: Die Pegelgültigkeiten können nicht gelesen werden.
sascha@3660:
sascha@3660: - 'HYK file 'XYZ' seems to be a duplicate.'
sascha@3660: Die HYK-Datei wurde unter anderem Namen aber gleichen Inhalts
sascha@3660: bereits gefunden.
sascha@3660:
sascha@3660: - 'PRF file 'XYZ' seems to be a duplicate.'
sascha@3660: Die PRF-Datei wurde unter anderem Namen aber gleichen Inhalts
sascha@3660: bereits gefunden.
sascha@3660:
sascha@3660: - 'Skip invalid SedimentYield: time interval or unit null!'
sascha@3660: Eine Sedimentablagerung ist ungültig und wurde ausgelassen.
sascha@3660:
sascha@3660: - 'skip flow velocity model: No discharge zone specified.'
sascha@3660: Da kein Abflussbereich angegeben wurde, wurde das Fliessgeschwindigkeitsmodell ausgelassen.
sascha@3660:
sascha@3660: - 'skip invalid waterlevel - no unit set!'
sascha@3660: Ein einheitenloser Wasserstand wurde ausgelassen.
sascha@3660:
sascha@3660: - 'Cannot parse time range.'
sascha@3660: Das Zeitformat wurde nicht erkannt.
sascha@3660:
sascha@3660: - 'skip invalid data line #'
sascha@3660: Ungültige Datenzeile wurde ausgelassen.
sascha@3660:
sascha@3660: - 'Error while parsing sq relation row #'
sascha@3660: Eine Zeile in der S(Q)-Beziehung ist ungültig.
sascha@3660:
sascha@3660: - 'GLT: no gauge found in line #'
sascha@3660: In der GLT-Datei wurde ein Pegel erwartet, aber nicht gefunden.
sascha@3660:
sascha@3660: - 'GLT: line # has not enough columns.'
sascha@3660: Eine Zeile in der Pegelgültigkeitsdatei hat nicht genug spalten.
sascha@3660:
sascha@3660: - 'Error while parsing flow velocity values.'
sascha@3660: - 'skip invalid data line: #'
sascha@3660: Invalide Datenzeile in einer Datei mit einer Fliessgeschwindigkeitsmessung.
sascha@3660:
sascha@3660: - 'skip invalid waterlevel line: #'
sascha@3660: - 'Error while parsing value: #'
sascha@3660: - 'Error while parsing station: #'
sascha@3660: Invalide Datenzeile in einer Datei mit Wasserstandsdifferenzen.
sascha@3660:
sascha@3660: - 'skip invalid MainValue part: #'
sascha@3660: - 'skip invalid gauge part: #'
sascha@3660: - 'Error while parsing Q value: '
sascha@3660: - 'skip invalid data line: #'
sascha@3660: - 'Error while parsing flow velocity values.'
sascha@3660: Invalide Datenzeile in einer Datei Fliessgeschwindigkeitsmodellen.
sascha@3660:
sascha@3660: - 'Error while parsing number from data row: #'
sascha@3660: TODO INGO
sascha@3660:
sascha@3660: - 'Unknown meta line: #'
sascha@3660: - 'Error while parsing numbers in: #'
sascha@3660: - 'skip invalid data line: #'
sascha@3660: - 'Error while parsing numbers in #'
sascha@3660: Invalide Datenzeile in einer Datei mit Sedimentdichten.
sascha@3660:
sascha@3660: - 'STA file is empty'
sascha@3660: - 'STA file has not enough lines'
sascha@3660: - 'STA file is too short'
sascha@3660: Stammdatendatei ist leer oder hat zu wenige Zeilen.
sascha@3660:
sascha@3660: - 'First line in STA file is too short.'
sascha@3660: Die erste Zeile der Stammdaten ist zu kurz.
sascha@3660:
sascha@3660: - 'STA: second line is too short'
sascha@3660: Die zweite Zeile ist zu kurz.
sascha@3660:
sascha@3660: - 'STA: parsing of the datum of the gauge failed'
sascha@3660:
sascha@3660: - 'STA: 'XYZ' is not a valid long number.'
sascha@3660: Die Pegelnummer ist invalide.
sascha@3660:
sascha@3660: - 'STA: Not enough columns for aeo and datum.
sascha@3660: AEO und Pegelnullpunkt können nicht ermittelt werden.
sascha@3660:
sascha@3660: - 'STA: cannot parse aeo or datum.'
sascha@3660: AEO oder Pegelnullpunkt sind invalide.
sascha@3660:
sascha@3660: - 'STA: value not parseable in line #'
sascha@3660: Wert ist nicht als Zahl zu interpretieren.
sascha@3660:
sascha@3660: - 'PRF: cannot open file '
sascha@3660: Die PRF kann nicht geöffnet werden.
sascha@3660:
sascha@3660: - PRF: file is empty
sascha@3660: - PRF: First line does not look like a PRF data pattern.
sascha@3660: - PRF: premature EOF. Expected integer in line 2
sascha@3660: - PRF: Expected in line 2
sascha@3660: - PRF: invalid integer in line 2
sascha@3660: - PRF: premature EOF. Expected pattern for km extraction
sascha@3660: - PRF: line 4 does not look like a PRF km extraction pattern.
sascha@3660: - PRF: premature EOF. Expected skip row count.
sascha@3660: - PRF: line 5 is not an positive integer.
sascha@3660: - PRF: cannot extract km in line #
sascha@3660: Das PRF-Format ist komplex. Hier sollten weitere Information
sascha@3660: zur genaueren Analyse herangezogen werden.
sascha@3660:
sascha@3660: - 'cannot access WST file '
sascha@3660: Die WST-Datei konnte nicht gefunden werden.
sascha@3660:
sascha@3660: - 'Found an invalid row in the AT file.'
sascha@3660: Eine Zeile in einer AT-Datei ist nicht korrekt.
sascha@3660:
sascha@3660: - 'AT: invalid number '
sascha@3660: Eine Zahl wurde erwartet aber nicht gefunden.
sascha@3660:
sascha@3662: - 'Try to add Q range without waterlevel!'
sascha@3662: Q-Bereich ohne Wasserstand gefunden.
sascha@3657:
sascha@3662: - 'Error while parsing Q range: #'
sascha@3662: Invalider Q-Bereich
sascha@3662:
sascha@3662: - 'skip invalid waterlevel line: #'
sascha@3662: Ungültige Wasserstandslinie
sascha@3662:
sascha@3662: - 'Error while parsing number values: #'
sascha@3662: Ungültige Zahlenwerte.
sascha@3662:
sascha@3662: - 'ANN: not enough columns in line #'
sascha@3662: Nicht genug Zeichenspalten in KM-Datei
sascha@3662:
sascha@3662: - 'ANN: invalid number in line #'
sascha@3662: Ungültige Zahl.
sascha@3662:
sascha@3662: - 'ANN: cannot parse 'Unterkante' in line #'
sascha@3662: Die Unterkante in einer KM-Datei konnte nicht gelesen werden.
sascha@3662:
sascha@3662: - 'ANN: cannot parse 'Unterkante' or 'Oberkante' in line #'
sascha@3662: Unter- oder Oberkannte liegen in einem falschen Format vor.
sascha@3662:
sascha@3662: - 'ANN: duplicated annotation 'XYZ' in line #'
sascha@3662: Ein Duplikat eines Streckenfavoriten wurde gefunden.
sascha@3662:
sascha@3662: - 'ANN: 'XYZ' is not a directory.'
sascha@3662: Unterverzeichnis konnte nicht geöffnet werden.
sascha@3662:
sascha@3662: - 'ANN: cannot list directory 'XYZ''
sascha@3662: Unterverzeichnis konnte nicht durchsucht werden.
sascha@3662:
sascha@3662: - 'BHP: Meta line did not match any known type: #'
sascha@3662: Unbekannter Typ.
sascha@3662:
sascha@3662: - 'BHP: Error while parsing timeinterval!'
sascha@3662: Ungültiges Zeitinterval.
sascha@3662:
sascha@3662: - 'BHP: Error while parsing year!'
sascha@3662: Ungültige Jahresangabe.
sascha@3662:
sascha@3662: - 'BHP: Error while parsing sounding width!'
sascha@3662: Unbekannte Peilungsbreite.
sascha@3662:
sascha@3662: - 'BHP: Error while parsing range!'
sascha@3662: Bereichsangabe fehlerhaft.
sascha@3662:
sascha@3662: - 'MWP: Unknown meta line: #'
sascha@3662: Meta-Informationen ungültig.
sascha@3662:
sascha@3662: - 'MWP: skip invalid data line: #'
sascha@3662: Ungültige Datenzeile wurde übersprungen.
sascha@3662:
sascha@3662: - 'MWP: Error while parsing numbers in #'
sascha@3662: Falsche Zahlenformat.
sascha@3662:
sascha@3662: - 'ANNCLASS: rule has no name'
sascha@3662: Klassifizierungsregel für Streckenfavoriten hat keinen Namen.
sascha@3662:
sascha@3662: - 'ANNCLASS: pattern has no 'pattern' attribute.'
sascha@3662: Klassifizierungsmuster für Streckenfavoriten hat kein Muster.
sascha@3662:
sascha@3662: - 'ANNCLASS: pattern has unknown type 'XYZ''
sascha@3662: Klassifizierungsmuster für Streckenfavoriten konnte keinem Typ zugeordnet werden.
sascha@3662:
sascha@3662: - 'ANNCLASS: pattern 'XYZ' is invalid.'
sascha@3662: Klassifizierungsmuster für Streckenfavoriten ist ungültig.
sascha@3662:
sascha@3662: - 'BSP: Error while parsing data row.'
sascha@3662: Ungültige Datenzeile.
sascha@3662:
sascha@3662: - 'SYP: Unknown meta line: #'
sascha@3662: Ungültige Metadatenzeile.
sascha@3662:
sascha@3662: - 'SYP: skip invalid data line #'
sascha@3662: Ungültige Datenzeile wurde übersprungen.
sascha@3662:
sascha@3662: - 'SYP: Error while parsing numbers in #'
sascha@3662: Ungültige Zahlenformatierung.
sascha@3662:
sascha@3662: - 'SYP: Unknown time interval string '
sascha@3662: Falsches Datumformat.
sascha@3662:
sascha@3662: - 'SYP: Error while parsing years '
sascha@3662: Falsches Jahreszahlformat.
sascha@3662:
sascha@3662: - 'SYP: Error while parsing ranges of '
sascha@3662: Bereichsangaben fehlerhaft.
sascha@3662:
sascha@3662: - 'SYP: Unknown grain fraction '
sascha@3662: Unbekannte Kornfraktion.
sascha@3662:
sascha@3662: - 'WST: invalid number.'
sascha@3662: Ungültige Zahl.
sascha@3662:
sascha@3662: - 'WST: km () found more than once. -> ignored.'
sascha@3662: Ein Kilometer ist doppelt in einer WST-Datei enthalten.
sascha@3662:
sascha@3662: - 'HYK: zone coordinates swapped in line #'
sascha@3662: Fliesszonenkordinaten wurden in umgekehrter Reihenfolge angeben.
sascha@3662:
sascha@3662: - 'BHS: Skip invalid file 'XYZ''
sascha@3662: Die Inhalte der Datei sind ungültig.
sascha@3662:
sascha@3662: - 'ISQ: Unable to store sq relation value.'
sascha@3662: S(Q) Beziehung konnte nicht gespeichert werden.
sascha@3662:
sascha@3662: - 'ISQ: Cannot determine sq relation without time interval.'
sascha@3662: Einer S(Q)-Beziehung ist keine zeitliche Gültigkeit zugeordnet.
sascha@3662:
sascha@3662: - 'IWD: skip invalid waterlevel difference - no unit set!'
sascha@3662: Wasserstandsdifferenz hat keine Einheit.
sascha@3662:
sascha@3662: - 'BHE: Skip file - invalid current elevation model.'
sascha@3662: Höhenmodell ungültig.
sascha@3662:
sascha@3662: - 'BHE: Skip file - invalid time range.'
sascha@3662: Zeitbereich ungültig.
sascha@3662:
sascha@3662: - 'BHE: Skip file - invalid km range.'
sascha@3662: Kilometerbereich ungültig.
sascha@3662: