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@3657: TODO SLT: flys.backend.importer.annotation.types erklären! 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@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@3660: String mit gültigen Typen von Stamdaten 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@3657: sascha@3657: - Fixierungen (*.wst-Dateien) sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.fixations=true' sascha@3657: unterdrückt werden. 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@3657: sascha@3657: - Profilspuren (*.prf-Dateien) sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.prfs=true' sascha@3657: unterdrückt werden. 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@3657: sascha@3657: - Hochwassermarken (*.zus) sascha@3657: Der Import kann mit '-Dflys.backend.importer.skip.flood.water=true' sascha@3657: unterdrückt werden. 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@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@3657: TODO SLT: Datenbank-Credentials dokumentieren. sascha@3657: 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@3660: Betrieb: sascha@3659: -------- sascha@3657: sascha@3657: Der Speicherverbrauch des Importers ist sehr hoch. Es ist empfehlenswert, sascha@3659: der JVM mindestens 8GiB Hauptspeicher zuzuordnen: '-Xmx8192m' sascha@3657: Besonders speicherintensiv ist der Import der HYKs und der PRFs. sascha@3657: Hier ist es unter Umständen empfehlenswert, diese in zwei oder drei sascha@3657: Schritten zu importieren. Zuerst die sonstigen hydrologischen Daten sascha@3657: (hierbei mit flys.backend.importer.skip.hyks=true und flys.backend.importer.skip.prfs sascha@3657: den Import der HYKs und PRFs verhindern). Dann die HYKs (mit flys.backend.importer.skip.* sascha@3657: der anderen Daten) und im finalen Schritt dann die PRFs.