|
|
|
|
@@ -0,0 +1,853 @@
|
|
|
|
|
{
|
|
|
|
|
"cells": [
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "2bc687b1b4adb7bd",
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:09.512813Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:07.910581Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 1: Import von Python-Modulen und Bibliotheken\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"from datetime import datetime\n",
|
|
|
|
|
"import importlib\n",
|
|
|
|
|
"from IPython.display import HTML\n",
|
|
|
|
|
"from IPython.display import display\n",
|
|
|
|
|
"import numpy as np\n",
|
|
|
|
|
"import pandas as pd\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"import Berechnungen\n",
|
|
|
|
|
"import Datenbank\n",
|
|
|
|
|
"import Export\n",
|
|
|
|
|
"import Funktionales_Modell\n",
|
|
|
|
|
"import Import\n",
|
|
|
|
|
"import Koordinatentransformationen\n",
|
|
|
|
|
"import Netzqualitaet_Genauigkeit\n",
|
|
|
|
|
"import Netzqualitaet_Zuverlaessigkeit\n",
|
|
|
|
|
"from Parameterschaetzung import Iterationen\n",
|
|
|
|
|
"import Proben\n",
|
|
|
|
|
"import Varianzkomponentenschaetzung"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": 1
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "4f7efd7ba6ec18f9",
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:09.522346Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:09.520187Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 2: Allgemeine Einstellungen\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Auswahl der Datumsdefinition (Aktuell ist lediglich die weiche Lagerung implementiert)\n",
|
|
|
|
|
"datumfestlegung = \"weiche Lagerung\"\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Übergabe der großen und kleinen Halbachse des Referenzellipsoids (aktuell GRS80)\n",
|
|
|
|
|
"a = 6378137.0 #m\n",
|
|
|
|
|
"b = 6356752.314 #m\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Pfad zur SQLite-Datenbank (wird angelegt, falls nicht vorhanden)\n",
|
|
|
|
|
"pfad_datenbank = r\"Campusnetz.db\"\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Pfad zum Quasigeoid-Modell GCG 2016 des BKG\n",
|
|
|
|
|
"pfad_tif_quasigeoidundolation = r\"Daten\\GCG2016v2023.tif\"\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Alle während jeder Iteration der Parameterschätzung erstellten Vektoren und Matrizenin einer CSV-Datei im Ordner Zwischenergebnisse speichern (Auf True setzen, wenn gewünscht)\n",
|
|
|
|
|
"speichern_in_csv = False"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": 2
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "57fcd841405b7866",
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:09.763148Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:09.708149Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 3: SQLite-Datenbank initialisieren und Klassen laden\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Datenbank anlegen (falls nicht vorhanden)\n",
|
|
|
|
|
"Datenbank.Datenbank_anlegen(pfad_datenbank)\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Klassen aus eigenen Pythondateien initialisieren\n",
|
|
|
|
|
"db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)\n",
|
|
|
|
|
"fm = Funktionales_Modell.FunktionalesModell(pfad_datenbank, a, b, pfad_tif_quasigeoidundolation)\n",
|
|
|
|
|
"imp = Import.Import(pfad_datenbank, a, b)\n",
|
|
|
|
|
"iterat = Iterationen(pfad_datenbank, pfad_tif_quasigeoidundolation, a, b)\n",
|
|
|
|
|
"trafos = Koordinatentransformationen.Transformationen(pfad_datenbank)\n",
|
|
|
|
|
"vks = Varianzkomponentenschaetzung.VKS(pfad_datenbank)"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": 3
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:10.248982Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:10.242901Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 4: Ausgabe der bereits vorhandenen Instrumente\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"db_zugriff.tabelle_instrumente_aus_db()"
|
|
|
|
|
],
|
|
|
|
|
"id": "2cf681b8ca7f268",
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
|
|
|
|
"Es wurden noch keine Instrumente angelegt. Bitte in der folgenden Zelle nachholen und diese Zelle erneut ausführen!\n"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"execution_count": 4
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:10.710361Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:10.684088Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 5: Instrumente anlegen\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Syntax: db_zugriff.set_instrument(Instrumententyp, Bezeichnung, [Beobachtungsgruppen])\n",
|
|
|
|
|
"# Hinweis: Alle GNSS-Rover sind als ein Instrument anzulegen!\n",
|
|
|
|
|
"# Sind Instrumente bereits in der Datenbank vorhanden, wird der Import übersprungen.\n",
|
|
|
|
|
"# Änderungen an bestehenden Instrumenten sind nicht möglich. In diesem Fall ist ein neues Instrument anlegen.\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"db_zugriff.set_instrument(\n",
|
|
|
|
|
" \"Tachymeter\", \"Trimble S9\", [\"Tachymeter_Streckenbeobachtungen\", \"Tachymeter_Richtungsbeobachtungen\", \"Tachymeter_Zenitwinkelbeobachtungen\"\n",
|
|
|
|
|
" ])\n",
|
|
|
|
|
"db_zugriff.set_instrument(\n",
|
|
|
|
|
" \"Nivellier\", \"Trimble DiNi 0.3\", [\"Nivellier_Hoehendifferenzbeobachtungen\"\n",
|
|
|
|
|
" ])\n",
|
|
|
|
|
"db_zugriff.set_instrument(\n",
|
|
|
|
|
" \"GNSS\", \"GNSS-Rover\", [\"GNSS-Rover_Basislinienbeobachtungen\"\n",
|
|
|
|
|
" ])"
|
|
|
|
|
],
|
|
|
|
|
"id": "990c372312c1d8f9",
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
|
|
|
|
"Das Instrument Trimble S9 wurde erfolgreich hinzugefügt.\n",
|
|
|
|
|
"Das Instrument Trimble DiNi 0.3 wurde erfolgreich hinzugefügt.\n",
|
|
|
|
|
"Das Instrument GNSS-Rover wurde erfolgreich hinzugefügt.\n"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"execution_count": 5
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:11.161918Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:11.156510Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 6: Ausgabe der bereits vorhandenen Genauigkeitsangaben a-priori\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"db_zugriff.tabelle_genauigkeiten_aus_db()"
|
|
|
|
|
],
|
|
|
|
|
"id": "3a90f746c44a1ebb",
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
|
|
|
|
"Es wurden noch keine apriori Genauigkeiten zu den Beobachtungsgruppen erfasst. Bitte in der folgenden Zelle nachholen und diese Zelle erneut ausführen.\n"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"execution_count": 6
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:11.784546Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:11.763928Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 7: Genauigkeiten a-priori zu den Instrumenten erfassen\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Syntax: db_zugriff.set_genauigkeiten(InstrumentenID, Beobachtungsgruppe, Standardabweichung_konstant, Standardabweichung_streckenproportional)\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Einheit der Eingaben:\n",
|
|
|
|
|
"# - stabw_konstant:\n",
|
|
|
|
|
"# - Winkelbeobachtungen (Richtung, Zenitwinkel): Standardabweichung in mgon\n",
|
|
|
|
|
"# - Strecken: Standardabweichung in m (auf die Strecke bezogener absoluter Anteil)\n",
|
|
|
|
|
"# - Nivellement: Standardabweichung in m pro 1 km Doppelnivellement\n",
|
|
|
|
|
"# - stabw_streckenproportional (optional): streckenproportionaler Anteil in ppm\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Sind Genauigkeitsangaben bereits in der Datenbank vorhanden, wird der Import übersprungen.\n",
|
|
|
|
|
"# Änderungen sind möglich.\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"db_zugriff.set_genauigkeiten(1, \"Tachymeter_Richtung\", 0.15)\n",
|
|
|
|
|
"db_zugriff.set_genauigkeiten(1, \"Tachymeter_Strecke\", 0.8, 1)\n",
|
|
|
|
|
"db_zugriff.set_genauigkeiten(1, \"Tachymeter_Zenitwinkel\", 0.15)\n",
|
|
|
|
|
"db_zugriff.set_genauigkeiten(3, \"Geometrisches_Nivellement\", 0.1, 0.3)"
|
|
|
|
|
],
|
|
|
|
|
"id": "107d51b8dd3b82cf",
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
|
|
|
|
"Die Genauigkeitsangabe für Tachymeter_Richtung (Instrument: Trimble S9) wurde erfolgreich hinzugefügt.\n",
|
|
|
|
|
"Die Genauigkeitsangabe für Tachymeter_Strecke (Instrument: Trimble S9) wurde erfolgreich hinzugefügt.\n",
|
|
|
|
|
"Die Genauigkeitsangabe für Tachymeter_Zenitwinkel (Instrument: Trimble S9) wurde erfolgreich hinzugefügt.\n",
|
|
|
|
|
"Die Genauigkeitsangabe für Geometrisches_Nivellement (Instrument: Trimble DiNi 0.3) wurde erfolgreich hinzugefügt.\n"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"execution_count": 7
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "b28afe0c64aa59d6",
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:12.490480Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:12.356523Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 8: Import Tachymeter-Datensätze\n",
|
|
|
|
|
"# Hinweis: Sind die Dateien bereits für den Import verwendet worden, wird der Import abgebrochen.\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# CSV-Datei mit den Koordinaten im Lokalen-Horizontsystem aus dem Tachymeterexport\n",
|
|
|
|
|
"pfad_datei_tachymeter_koordinaten = r\"Daten\\campsnetz_koordinaten_plus_nachmessungen.csv\"\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# CSV-Datei mit den Beobachtungen aus dem Tachymeterexport\n",
|
|
|
|
|
"pfad_datei_tachymeter_beobachtungen_csv = r\"Daten\\campsnetz_beobachtungen_plus_nachmessungen.csv\"\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# JXL-Datei mit den Beobachtungen aus dem Tachymeterexport (für die Korrektur der gerundeten Daten in der CSV-Datei)\n",
|
|
|
|
|
"pfad_datei_tachymeter_beobachtungen_jxl = r\"Daten\\campusnetz_bereinigt_plus_nachmessung_neu.jxl\"\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Dateiname der korrigierten und erweiterten CSV-Datei mit den Tachymeterbeobachtungen\n",
|
|
|
|
|
"pfad_datei_tachymeterbeobachtungen_korrigiert = r\"Daten\\campsnetz_beobachtungen_plus_nachmessungen_korrigiert.csv\"\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# InstrumentenID des Tachymeters (siehe Zelle 4)\n",
|
|
|
|
|
"instrumentenID_Tachymeter = 1\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Verarbeitung und Import der Tachymeterdatensätze\n",
|
|
|
|
|
"imp.import_koordinaten_lh_tachymeter(pfad_datei_tachymeter_koordinaten)\n",
|
|
|
|
|
"imp.korrigiere_beobachtungen_tachymeter_csv_mit_jxl(pfad_datei_tachymeter_beobachtungen_csv, pfad_datei_tachymeter_beobachtungen_jxl, pfad_datei_tachymeterbeobachtungen_korrigiert)\n",
|
|
|
|
|
"imp.import_beobachtungen_tachymeter(pfad_datei_tachymeterbeobachtungen_korrigiert, instrumentenID_Tachymeter)"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
|
|
|
|
"Der Import der Näherungskoordinaten wurde erfolgreich abgeschlossen\n",
|
|
|
|
|
"Korrektur erfolgreich abgeschlossen. Ausgabe: Daten\\campsnetz_beobachtungen_plus_nachmessungen_korrigiert.csv\n",
|
|
|
|
|
"Ersetzungen in der CSV-Datei (Rundung -> JXL volle Nachkommastellen): {'Hz': 1639, 'Z': 1838, 'SD': 747}\n",
|
|
|
|
|
"Der Import der Datei Daten\\campsnetz_beobachtungen_plus_nachmessungen_korrigiert.csv wurde erfolgreich abgeschlossen.\n"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"execution_count": 8
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:12.916365Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:12.899749Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 9: Import GNSS-Datensätze\n",
|
|
|
|
|
"# Hinweis: Sind die Dateien bereits importiert, wird der Import übersprungen.\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# CSV-Datei mit den Koordinaten der statischen GNSS-Messung als export aus LeicaGeoOffice\n",
|
|
|
|
|
"pfad_koordinaten_gnss = r\"Daten\\Koordinaten_ohne0648und10002.csv\"\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# TXT-Datei mit den Basislinien und den Kovarianzen als Export aus LeicaGeoOffice\n",
|
|
|
|
|
"pfad_basislinien_gnss = r\"Daten\\Basislinien_ohne0648und10002.asc.txt\"\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Standardabweichung a priori der Koordinaten der SAPOS-Referenzstationen in X, Y und Z für die weiche Lagerung\n",
|
|
|
|
|
"genauigkeit_sapos_referenzstationen = [0.005, 0.005, 0.008]\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# InstrumentenID aller GNSS-Empfänger (siehe Zelle 4)\n",
|
|
|
|
|
"instrumentenID_GNSS_Empfaenger = 4\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Import ausführen\n",
|
|
|
|
|
"imp.import_koordinaten_gnss(pfad_koordinaten_gnss, genauigkeit_sapos_referenzstationen)\n",
|
|
|
|
|
"imp.import_basislinien_gnss(pfad_basislinien_gnss, instrumentenID_GNSS_Empfaenger)"
|
|
|
|
|
],
|
|
|
|
|
"id": "75d9d9edbbbc7bb7",
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
|
|
|
|
"Der Import der Datei Daten\\Basislinien_ohne0648und10002.asc.txt wurde erfolgreich abgeschlossen.\n"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"execution_count": 9
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "2d8a0533726304a8",
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:14.974452Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:13.540713Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 10: Helmerttransformation\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Transformationsparameter zwischen lokalem-Horizontsystem aus dem Tachymeterexport und ETRS89 / DREF 91 (Realisierung 2025) berechnen\n",
|
|
|
|
|
"transformationsparameter = trafos.Helmerttransformation_Euler_Transformationsparameter_berechnen()\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Transformationsparameter anwenden und Koordinaten im Zielsystem berechnen\n",
|
|
|
|
|
"koordinaten_transformiert = trafos.Helmerttransformation(transformationsparameter)\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Koordinaten als Näherungen für die Ausgleichung in die Datenbank speichern\n",
|
|
|
|
|
"db_zugriff.set_koordinaten(koordinaten_transformiert, \"naeherung_us\")"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
|
|
|
|
"Anzahl verwendete Punkte für die Helmerttransformation: 9\n",
|
|
|
|
|
"Iteration Nr.1 abgeschlossen\n",
|
|
|
|
|
"Iteration Nr.2 abgeschlossen\n",
|
|
|
|
|
"Iteration Nr.3 abgeschlossen\n",
|
|
|
|
|
"Iteration Nr.4 abgeschlossen\n",
|
|
|
|
|
"Iteration Nr.5 abgeschlossen\n",
|
|
|
|
|
"Iteration Nr.6 abgeschlossen\n",
|
|
|
|
|
"Koordinaten berechnet aus Helmerttransformation:\n",
|
|
|
|
|
"10001: 3794901.521, 546745.584, 5080065.755\n",
|
|
|
|
|
"10008: 3794783.870, 546746.646, 5080152.758\n",
|
|
|
|
|
"10014: 3794838.746, 546812.367, 5080105.181\n",
|
|
|
|
|
"10026: 3794753.858, 546827.445, 5080167.092\n",
|
|
|
|
|
"10028: 3794889.671, 546908.764, 5080056.920\n",
|
|
|
|
|
"10037: 3794800.626, 546960.749, 5080117.709\n",
|
|
|
|
|
"10044: 3794752.686, 546958.324, 5080154.237\n",
|
|
|
|
|
"10054: 3794889.163, 547086.949, 5080038.116\n",
|
|
|
|
|
"10059: 3794736.830, 547079.447, 5080152.362\n",
|
|
|
|
|
"Streckendifferenzen zwischen Näherungskoordinate aus statischer GNSS-Messung und ergebnis der Helmerttransformation:\n",
|
|
|
|
|
"[0.027793, 0.025879, 0.016527, 0.01604, 0.066139, 0.07164, 0.025138, 0.125881, 0.142477]\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"Differenz Schwerpunkt zwischen Näherungskoordinate aus statischer GNSS-Messung und ergebnis der Helmerttransformation::\n",
|
|
|
|
|
"Matrix([[3.10e-10], [1.16e-10], [1.03e-10]])\n",
|
|
|
|
|
"Betrag der Schwerpunkt-Differenz zwischen Näherungskoordinate aus statischer GNSS-Messung und ergebnis der Helmerttransformation::\n",
|
|
|
|
|
"0.000m\n"
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"execution_count": 10
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "ed9be38e35cfc619",
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:15.067892Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:15.058891Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 11: Anschlusspunkte für die weiche Lagerung festlegen\n",
|
|
|
|
|
"# Definieren Sie hier die Punktnummern, die als Anschlusspunkte für die weiche Lagerung verwendet werden sollen.\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# X-Koordinate der Punkte verwenden\n",
|
|
|
|
|
"liste_koordinaten_x = []\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Y-Koordinate der Punkte verwenden\n",
|
|
|
|
|
"liste_koordinaten_y = []\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Z-Koordinate der Punkte verwenden\n",
|
|
|
|
|
"liste_koordinaten_z = []\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# X, Y und Z-Koordinate der Punkte verwenden\n",
|
|
|
|
|
"liste_koordinaten_x_y_z = [\"0645\", \"0656\", \"0995\", \"1675\", \"ESTE\", \"GNA2\"]\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Änderungen der zu verwendenden Anschlusspunkte in die Datenbank übernehmen\n",
|
|
|
|
|
"db_zugriff.set_datumskoordinaten(liste_koordinaten_x, liste_koordinaten_y, liste_koordinaten_z, liste_koordinaten_x_y_z)"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": 11
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "2d2156381d974d94",
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:15.151220Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:15.146192Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 12: Anschlusspunkte für die weiche Lagerung entfernen\n",
|
|
|
|
|
"# Definieren Sie hier die Punktnummern, die aus den Anschlusspunkten entfernt werden sollen.\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# X-Koordinate der Punkte entfernen\n",
|
|
|
|
|
"liste_koordinaten_x = []\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Y-Koordinate der Punkte verwenden\n",
|
|
|
|
|
"liste_koordinaten_y = []\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Z-Koordinate der Punkte verwenden\n",
|
|
|
|
|
"liste_koordinaten_z = []\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# X, Y und Z-Koordinate der Punkte verwenden\n",
|
|
|
|
|
"liste_koordinaten_x_y_z = []\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Änderungen der zu verwendenden Anschlusspunkte in die Datenbank übernehmen\n",
|
|
|
|
|
"db_zugriff.set_datumskoordinaten_to_neupunkte(liste_koordinaten_x, liste_koordinaten_y, liste_koordinaten_z, liste_koordinaten_x_y_z)"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": 12
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "c2db29680c53f8c4",
|
|
|
|
|
"metadata": {
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"end_time": "2026-02-05T12:24:15.928494Z",
|
|
|
|
|
"start_time": "2026-02-05T12:24:15.908077Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 13: Nivellement-Beobachtungen importieren\n",
|
|
|
|
|
"# Hinweis: Ist die Datei bereits importiert, wird der Import übersprungen.\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# CSV-Datei mit den Beobachtungen des geometrischen Nivellements\n",
|
|
|
|
|
"pfad_datei_nivellement = r\"Daten\\Niv_bereinigt.DAT.csv\"\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# InstrumentenID des Nivelliers (siehe Zelle 4)\n",
|
|
|
|
|
"instrumentenID_Nivellier = 3\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Datenvorverarbeitung und Import in die Datenbank ausführen\n",
|
|
|
|
|
"dict_punkthoehen_naeherung_niv, liste_punkte_in_db = imp.vorbereitung_import_beobachtungen_nivellement_naeherung_punkthoehen(pfad_datei_nivellement, instrumentenID_Nivellier)\n",
|
|
|
|
|
"imp.import_beobachtungen_nivellement_RVVR(pfad_datei_nivellement, instrumentenID_Nivellier)"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [
|
|
|
|
|
{
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
"text": [
|
|
|
|
|
"Folgende Stand- und Zielpunkte des geometrischen Nivellements werden für die Beobachtungsgruppe ausgeglichen: ['812', '10047', '10046', '10045', '10034', 'FH14', 'FH11', '10035', '10029', '10030', '10031', '10017', '10013', '10012', '10014', '10015', '10016', '10007', 'FH13', '666', '10054', '10056', '10058', '10052', '10043', '10026', '10010', '10006', '816', '10048', 'FH3', '10049', '10053', '10050', '10051', 'FH4', '10040', '10037', '10038', '10039', '10032', 'FH15', '10033', '10025', '10024', '10023', '10022', '10021', '10020', '10019', '10036', '10028', '10011', '10001', '10003', '10008', '10005', '10004', '10002', '10055', '10057', '10059', '10044', '10041', '10042', '10027', '10018', '10009']\n",
|
|
|
|
|
"Für folgende Punkte wird aktuell keine Höhe in der Ausgleichung berechnet: ['80001', '80002', '90001', '90002', '90003', '90004', '90005', '90006', '90007', '90008', '90009', '90010', '90011', '90012', '90013', '90014', '70001', '70002', '60001', 'FH5', '60002', '60003', '60004', '60005', '60006', '60007', '60008', '60009', '60010', '30001', '30002', '30003', '30004', '30005', '30006', '30007', '30008']. Bei Bedarf im folgenden Schritt ändern!\n"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"data": {
|
|
|
|
|
"text/plain": [
|
|
|
|
|
"'Die Beobachtungen aus der Datei Daten\\\\Niv_bereinigt.DAT.csv wurden erfolgreich importiert.'"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"execution_count": 13,
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"execution_count": 13
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {
|
|
|
|
|
"jupyter": {
|
|
|
|
|
"is_executing": true
|
|
|
|
|
},
|
|
|
|
|
"ExecuteTime": {
|
|
|
|
|
"start_time": "2026-02-05T12:24:17.017690Z"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 14: Parameterschätzung iterativ berechnen\n",
|
|
|
|
|
"# Hinweis: Die Ausführung dauert je nach Rechenkapazität zwischen 13 und 20 Minuten.\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Berechnung durchführen\n",
|
|
|
|
|
"A_matrix_numerisch, Jacobimatrix_symbolisch_liste_unbekannte, Jacobimatrix_symbolisch_liste_beobachtungsvektor, x, dx, dl_k, ausgabe_parameterschaetzung = iterat.iterationen(datumfestlegung, speichern_in_csv)\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Koordinaten der letzten Iteration speichern\n",
|
|
|
|
|
"dict_koordinaten_ausgleichungsergebnis = fm.unbekanntenvektor_numerisch_to_dict_unbekanntenvektor(Jacobimatrix_symbolisch_liste_unbekannte, x)"
|
|
|
|
|
],
|
|
|
|
|
"id": "7d025ca293d73188",
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 15: Proben\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Rechenprobe (ATPV-Probe)\n",
|
|
|
|
|
"Proben.atpv_probe(A_matrix_numerisch, ausgabe_parameterschaetzung[\"P\"], ausgabe_parameterschaetzung[\"v\"])\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Hauptprobe\n",
|
|
|
|
|
"Proben.hauptprobe(A_matrix_numerisch, dx, dl_k, ausgabe_parameterschaetzung[\"v\"])"
|
|
|
|
|
],
|
|
|
|
|
"id": "de8f624059005fdd",
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": "# ------------------------------- Netzqualitätsmaße -------------------------------",
|
|
|
|
|
"id": "7d53274224166103",
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "84075bea1f2c44d7",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 16: Gesamtredundanz r\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"r_gesamt = Netzqualitaet_Zuverlaessigkeit.Zuverlaessigkeit.gesamtredundanz(A_matrix_numerisch.shape[0], A_matrix_numerisch.shape[1])"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "1797726c5b3af9bf",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 17: s0 a posteriori\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"s0_aposteriori = Netzqualitaet_Genauigkeit.Genauigkeitsmaße.berechne_s0apost(ausgabe_parameterschaetzung[\"v\"], ausgabe_parameterschaetzung[\"P\"], r_gesamt)"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "a2fe23d9a19ac2f9",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 18: Redundanzanteile ri\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"R, ri, EVi, Redundanzanteile = Netzqualitaet_Zuverlaessigkeit.Zuverlaessigkeit.redundanzanteile_ri(ausgabe_parameterschaetzung[\"Q_vv\"], ausgabe_parameterschaetzung[\"P\"], Jacobimatrix_symbolisch_liste_beobachtungsvektor)"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "14db90a3d4d9118b",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 19: Globaltest des Ausgleichungsmodells\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"globaltest = Netzqualitaet_Zuverlaessigkeit.Zuverlaessigkeit.globaltest(r_gesamt=r_gesamt, sigma0_apost=s0_aposteriori, sigma0_apriori=1)"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "1a84fbfb3db101c9",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 20: Lokaltest und innere Zuverlässigkeit\n",
|
|
|
|
|
"# Bei der Auswahl einer GNSS-Komponente, wie z.B. bx werden automatisch die anderen beiden Kompontenen aus-, bzw. abgewählt. Bitte warten, bis dies automatisch durchführt wurde.\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"lokaltest, beta = Netzqualitaet_Zuverlaessigkeit.Zuverlaessigkeit.aufruf_lokaltest(Jacobimatrix_symbolisch_liste_beobachtungsvektor, globaltest[\"alpha\"], ausgabe_parameterschaetzung, ri, s0_aposteriori)\n"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "ebf2c9ef0a1899dc",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 21: Ausgewählte Beobachtungen für weitere Iterationen ausschalten\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"db_zugriff.set_beobachtung_ausschalten(lokaltest)"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 22: Varianzkomponentenschätzung\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"vks.varianzkomponten_berechnen(Jacobimatrix_symbolisch_liste_beobachtungsvektor, ausgabe_parameterschaetzung, R)"
|
|
|
|
|
],
|
|
|
|
|
"id": "dd7bfa4df762a4a7",
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 23: Varianzkomponten anpassen\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"vks.vks_ausfuehren()\n",
|
|
|
|
|
"vks.zeige_vks_tabelle()"
|
|
|
|
|
],
|
|
|
|
|
"id": "edb14958ee00130c",
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "256f4a0805b69e14",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 24: Äußere Zuverlässigkeit\n",
|
|
|
|
|
"importlib.reload(Netzqualitaet_Zuverlaessigkeit)\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"bezeichnungen = [str(s) for s in Jacobimatrix_symbolisch_liste_beobachtungsvektor]\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"bezeichnungen = [str(s) for s in Jacobimatrix_symbolisch_liste_beobachtungsvektor]\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"lokaltest_ergebnisse = Netzqualitaet_Zuverlaessigkeit.Zuverlaessigkeit.lokaltest_innere_Zuverlaessigkeit(\n",
|
|
|
|
|
" ausgabe_parameterschaetzung[\"v\"],\n",
|
|
|
|
|
" ausgabe_parameterschaetzung[\"Q_vv\"],\n",
|
|
|
|
|
" ri,\n",
|
|
|
|
|
" bezeichnungen,\n",
|
|
|
|
|
" s0_aposteriori,\n",
|
|
|
|
|
" globaltest[\"alpha\"],\n",
|
|
|
|
|
" beta\n",
|
|
|
|
|
")\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"Aussen = Netzqualitaet_Zuverlaessigkeit.Zuverlaessigkeit.aeussere_zuverlaessigkeit(\n",
|
|
|
|
|
" Lokaltest=lokaltest_ergebnisse,\n",
|
|
|
|
|
" bezeichnung=bezeichnungen,\n",
|
|
|
|
|
" Qxx=ausgabe_parameterschaetzung[\"Q_xx\"],\n",
|
|
|
|
|
" A=A_matrix_numerisch,\n",
|
|
|
|
|
" P=ausgabe_parameterschaetzung[\"P\"],\n",
|
|
|
|
|
" s0_apost=s0_aposteriori,\n",
|
|
|
|
|
" unbekannten_liste=Jacobimatrix_symbolisch_liste_unbekannte,\n",
|
|
|
|
|
" x=x,\n",
|
|
|
|
|
" ausschliessen=\"lA\"\n",
|
|
|
|
|
")\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"display(HTML(Aussen.to_html(index=False)))\n",
|
|
|
|
|
"Aussen.to_excel(r\"Zwischenergebnisse\\Aeussere_Zuverlaessigkeit.xlsx\", index=False)"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 25: Standardabweichungen der einzelnen Punkte und Helmert'scher Punktfehler (3D)\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"Helmertscher_Punktfehler = Netzqualitaet_Genauigkeit.Genauigkeitsmaße.helmert_punktfehler(ausgabe_parameterschaetzung[\"Q_xx\"], s0_aposteriori,Jacobimatrix_symbolisch_liste_unbekannte)"
|
|
|
|
|
],
|
|
|
|
|
"id": "9e6624251a23847d",
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "89fbcfe85fb6e4bb",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 26: Standardellipse bzw. Helmert'sche Fehlerellipsen\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"Standardellipse = Netzqualitaet_Genauigkeit.Genauigkeitsmaße.standardellipse(ausgabe_parameterschaetzung[\"Q_xx\"], s0_aposteriori, Jacobimatrix_symbolisch_liste_unbekannte)\n"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"id": "7de561d7eaebb1c2",
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 27: Konfidenzellipsen\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"Konfidenzellipse = Netzqualitaet_Genauigkeit.Genauigkeitsmaße.konfidenzellipse(ausgabe_parameterschaetzung[\"Q_xx\"], s0_aposteriori, Jacobimatrix_symbolisch_liste_unbekannte, r_gesamt, False)"
|
|
|
|
|
],
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 28: Konfidenzellipsen im ENU-System\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"Konfidenzellipse_ENU, R0 = Netzqualitaet_Genauigkeit.Genauigkeitsmaße.konfidenzellipsen_enu(a, b, ausgabe_parameterschaetzung, Jacobimatrix_symbolisch_liste_unbekannte, dict_koordinaten_ausgleichungsergebnis, s0_aposteriori, r_gesamt)"
|
|
|
|
|
],
|
|
|
|
|
"id": "ddc157c0ff21c93e",
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# Zelle 29: Netzplot mit Konfidenzellipsen (im ENU-System)\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"Koord_ENU = Berechnungen.ENU.transform_Koord_zu_KoordENU(dict_koordinaten_ausgleichungsergebnis, R0)\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"Netzqualitaet_Genauigkeit.Plot.netzplot_ellipsen(\n",
|
|
|
|
|
" Koord_ENU=Koord_ENU,\n",
|
|
|
|
|
" unbekannten_labels=Jacobimatrix_symbolisch_liste_unbekannte,\n",
|
|
|
|
|
" beobachtungs_labels=Jacobimatrix_symbolisch_liste_beobachtungsvektor,\n",
|
|
|
|
|
" df_konf_ellipsen_enu=Konfidenzellipse_ENU,\n",
|
|
|
|
|
" skalierung=1000\n",
|
|
|
|
|
")"
|
|
|
|
|
],
|
|
|
|
|
"id": "94a42bd0a62875ea",
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"from Koordinatentransformationen import Transformationen\n",
|
|
|
|
|
"trafos = Transformationen(pfad_datenbank)\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"dict_koordinaten_utm = trafos.ecef_to_utm(\n",
|
|
|
|
|
" dict_koordinaten_ausgleichungsergebnis,\n",
|
|
|
|
|
" pfad_tif_quasigeoidundolation)\n",
|
|
|
|
|
"koordinaten_utm = (dict_koordinaten_utm)\n",
|
|
|
|
|
"print(koordinaten_utm)"
|
|
|
|
|
],
|
|
|
|
|
"id": "844b818e7a3db233",
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"# 1. Wir nutzen dein existierendes 'dict_koordinaten'\n",
|
|
|
|
|
"# Da stehen nur die echten Punkte drin (74 Stück)\n",
|
|
|
|
|
"namen = list(dict_koordinaten_ausgleichungsergebnis.keys())\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Die SymPy-Matrizen aus dem Dictionary in flache Listen umwandeln\n",
|
|
|
|
|
"koordinaten_liste = []\n",
|
|
|
|
|
"for k in namen:\n",
|
|
|
|
|
" matrix_werte = dict_koordinaten_ausgleichungsergebnis[k]\n",
|
|
|
|
|
" # Umwandlung von SymPy Matrix zu einfachen Floats\n",
|
|
|
|
|
" koordinaten_liste.append([float(matrix_werte[0]), float(matrix_werte[1]), float(matrix_werte[2])])\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# 2. DataFrame direkt aus der gefilterten Liste erstellen\n",
|
|
|
|
|
"# Hier passen index (74) und Daten (74 Zeilen) nun perfekt zusammen!\n",
|
|
|
|
|
"df_x_final = pd.DataFrame(koordinaten_liste, columns=['X [m]', 'Y [m]', 'Z [m]'], index=namen)\n",
|
|
|
|
|
"df_x_final.index.name = 'Punktnummer'\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# 3. UTM-Daten aufbereiten (wie gehabt)\n",
|
|
|
|
|
"# Wir stellen sicher, dass wir die Werte aus koordinaten_utm flachklopfen\n",
|
|
|
|
|
"utm_flach = {k: np.array(v).flatten().tolist() for k, v in koordinaten_utm.items()}\n",
|
|
|
|
|
"df_utm_final = pd.DataFrame.from_dict(utm_flach, orient='index', columns=['Rechtswert [m]', 'Hochwert [m]', 'Höhe [m]'])\n",
|
|
|
|
|
"df_utm_final.index.name = 'Punktnummer'\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# 4. Zahlenformatierung (Wissenschaftliche Notation unterdrücken)\n",
|
|
|
|
|
"df_x_final = df_x_final.map(lambda val: f\"{val:.4f}\")\n",
|
|
|
|
|
"df_utm_final = df_utm_final.map(lambda val: f\"{val:.4f}\")\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# 5. Export-Dictionary\n",
|
|
|
|
|
"ergebnisse = {\n",
|
|
|
|
|
" \"df_globaltest\": globaltest,\n",
|
|
|
|
|
" \"df_redundanz\": Redundanzanteile,\n",
|
|
|
|
|
" \"df_ellipsen\": Standardellipse,\n",
|
|
|
|
|
" \"df_konfidenzellipsen\": Konfidenzellipse,\n",
|
|
|
|
|
" \"df_koordinaten_geozentrisch_kartesisch\": df_x_final,\n",
|
|
|
|
|
" \"df_koordinaten_utm\": df_utm_final\n",
|
|
|
|
|
"}\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Für die geozentrischen Koordinaten\n",
|
|
|
|
|
"df_x_final.index.name = 'Punktnummer'\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Für die UTM-Koordinaten\n",
|
|
|
|
|
"df_utm_final.index.name = 'Punktnummer'"
|
|
|
|
|
],
|
|
|
|
|
"id": "343b70a659e335f8",
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"source": [
|
|
|
|
|
"importlib.reload(Export)\n",
|
|
|
|
|
"# Zelle XX: Erzeugung eines Protokolls der hybriden Netzausgleichung\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"# Input (später: an den Anfang des Notebooks schieben)\n",
|
|
|
|
|
"bearbeiter = input(\"Bearbeiter: \")\n",
|
|
|
|
|
"projekt = input(\"Projektname: \")\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"metadaten = {\n",
|
|
|
|
|
" \"bearbeiter\": bearbeiter,\n",
|
|
|
|
|
" \"projekt\": projekt,\n",
|
|
|
|
|
" \"datum\": datetime.now().strftime(\"%d.%m.%Y\")\n",
|
|
|
|
|
"}\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"ergebnisse = {\n",
|
|
|
|
|
" \"df_globaltest\": globaltest,\n",
|
|
|
|
|
" \"df_redundanz\": Redundanzanteile,\n",
|
|
|
|
|
" \"df_ellipsen\": Standardellipse,\n",
|
|
|
|
|
" \"df_konfidenzellipsen\": Konfidenzellipse,\n",
|
|
|
|
|
" \"df_koordinaten_geozentrisch_kartesisch\": df_x_final,\n",
|
|
|
|
|
" \"df_koordinaten_utm\": df_utm_final\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"}\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"Export.Export.speichere_html_protokoll(metadaten, ergebnisse)"
|
|
|
|
|
],
|
|
|
|
|
"id": "23aa13721f563c90",
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"execution_count": null
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"metadata": {
|
|
|
|
|
"kernelspec": {
|
|
|
|
|
"display_name": "Python 3 (ipykernel)",
|
|
|
|
|
"language": "python",
|
|
|
|
|
"name": "python3"
|
|
|
|
|
},
|
|
|
|
|
"language_info": {
|
|
|
|
|
"codemirror_mode": {
|
|
|
|
|
"name": "ipython",
|
|
|
|
|
"version": 3
|
|
|
|
|
},
|
|
|
|
|
"file_extension": ".py",
|
|
|
|
|
"mimetype": "text/x-python",
|
|
|
|
|
"name": "python",
|
|
|
|
|
"nbconvert_exporter": "python",
|
|
|
|
|
"pygments_lexer": "ipython3",
|
|
|
|
|
"version": "3.14.0"
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"nbformat": 4,
|
|
|
|
|
"nbformat_minor": 5
|
|
|
|
|
}
|