995 lines
38 KiB
Plaintext
995 lines
38 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"id": "2bc687b1b4adb7bd",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-02-05T14:00:31.786023Z",
|
|
"start_time": "2026-02-05T14:00:29.848681Z"
|
|
}
|
|
},
|
|
"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-05T14:00:31.793259Z",
|
|
"start_time": "2026-02-05T14:00:31.788027Z"
|
|
}
|
|
},
|
|
"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-05T14:00:31.938578Z",
|
|
"start_time": "2026-02-05T14:00:31.798396Z"
|
|
}
|
|
},
|
|
"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-05T14:00:32.562111Z",
|
|
"start_time": "2026-02-05T14:00:32.496934Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"# Zelle 4: Ausgabe der bereits vorhandenen Instrumente\n",
|
|
"\n",
|
|
"db_zugriff.tabelle_instrumente_aus_db()"
|
|
],
|
|
"id": "2cf681b8ca7f268",
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<pandas.io.formats.style.Styler at 0x273311d82c0>"
|
|
],
|
|
"text/html": [
|
|
"<style type=\"text/css\">\n",
|
|
"</style>\n",
|
|
"<table id=\"T_cef2d\">\n",
|
|
" <thead>\n",
|
|
" <tr>\n",
|
|
" <th id=\"T_cef2d_level0_col0\" class=\"col_heading level0 col0\" >InstrumenteID</th>\n",
|
|
" <th id=\"T_cef2d_level0_col1\" class=\"col_heading level0 col1\" >Typ</th>\n",
|
|
" <th id=\"T_cef2d_level0_col2\" class=\"col_heading level0 col2\" >Bezeichnung</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <td id=\"T_cef2d_row0_col0\" class=\"data row0 col0\" >1</td>\n",
|
|
" <td id=\"T_cef2d_row0_col1\" class=\"data row0 col1\" >Tachymeter</td>\n",
|
|
" <td id=\"T_cef2d_row0_col2\" class=\"data row0 col2\" >Trimble S9</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <td id=\"T_cef2d_row1_col0\" class=\"data row1 col0\" >2</td>\n",
|
|
" <td id=\"T_cef2d_row1_col1\" class=\"data row1 col1\" >Anschlusspunkte</td>\n",
|
|
" <td id=\"T_cef2d_row1_col2\" class=\"data row1 col2\" >lA</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <td id=\"T_cef2d_row2_col0\" class=\"data row2 col0\" >3</td>\n",
|
|
" <td id=\"T_cef2d_row2_col1\" class=\"data row2 col1\" >Nivellier</td>\n",
|
|
" <td id=\"T_cef2d_row2_col2\" class=\"data row2 col2\" >Trimble DiNi 0.3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <td id=\"T_cef2d_row3_col0\" class=\"data row3 col0\" >4</td>\n",
|
|
" <td id=\"T_cef2d_row3_col1\" class=\"data row3 col1\" >GNSS</td>\n",
|
|
" <td id=\"T_cef2d_row3_col2\" class=\"data row3 col2\" >GNSS-Rover</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"jetTransient": {
|
|
"display_id": null
|
|
}
|
|
}
|
|
],
|
|
"execution_count": 4
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-02-05T14:00:39.124168Z",
|
|
"start_time": "2026-02-05T14:00:39.112708Z"
|
|
}
|
|
},
|
|
"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 ist bereits in der Datenbank vorhanden.\n",
|
|
"Das Instrument Trimble DiNi 0.3 ist bereits in der Datenbank vorhanden.\n",
|
|
"Das Instrument GNSS-Rover ist bereits in der Datenbank vorhanden.\n"
|
|
]
|
|
}
|
|
],
|
|
"execution_count": 5
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-02-05T14:00:39.720324Z",
|
|
"start_time": "2026-02-05T14:00:39.713477Z"
|
|
}
|
|
},
|
|
"cell_type": "code",
|
|
"source": [
|
|
"# Zelle 6: Ausgabe der bereits vorhandenen Genauigkeitsangaben a-priori\n",
|
|
"\n",
|
|
"db_zugriff.tabelle_genauigkeiten_aus_db()"
|
|
],
|
|
"id": "3a90f746c44a1ebb",
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"<pandas.io.formats.style.Styler at 0x2733163fe90>"
|
|
],
|
|
"text/html": [
|
|
"<style type=\"text/css\">\n",
|
|
"</style>\n",
|
|
"<table id=\"T_25de8\">\n",
|
|
" <thead>\n",
|
|
" <tr>\n",
|
|
" <th id=\"T_25de8_level0_col0\" class=\"col_heading level0 col0\" >instrumenteID</th>\n",
|
|
" <th id=\"T_25de8_level0_col1\" class=\"col_heading level0 col1\" >beobachtungsart</th>\n",
|
|
" <th id=\"T_25de8_level0_col2\" class=\"col_heading level0 col2\" >stabw_apriori_konstant</th>\n",
|
|
" <th id=\"T_25de8_level0_col3\" class=\"col_heading level0 col3\" >stabw_apriori_streckenprop</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <td id=\"T_25de8_row0_col0\" class=\"data row0 col0\" >1</td>\n",
|
|
" <td id=\"T_25de8_row0_col1\" class=\"data row0 col1\" >Tachymeter_Richtung</td>\n",
|
|
" <td id=\"T_25de8_row0_col2\" class=\"data row0 col2\" >0.000002</td>\n",
|
|
" <td id=\"T_25de8_row0_col3\" class=\"data row0 col3\" >nan</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <td id=\"T_25de8_row1_col0\" class=\"data row1 col0\" >1</td>\n",
|
|
" <td id=\"T_25de8_row1_col1\" class=\"data row1 col1\" >Tachymeter_Strecke</td>\n",
|
|
" <td id=\"T_25de8_row1_col2\" class=\"data row1 col2\" >0.000800</td>\n",
|
|
" <td id=\"T_25de8_row1_col3\" class=\"data row1 col3\" >1.000000</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <td id=\"T_25de8_row2_col0\" class=\"data row2 col0\" >1</td>\n",
|
|
" <td id=\"T_25de8_row2_col1\" class=\"data row2 col1\" >Tachymeter_Zenitwinkel</td>\n",
|
|
" <td id=\"T_25de8_row2_col2\" class=\"data row2 col2\" >0.000002</td>\n",
|
|
" <td id=\"T_25de8_row2_col3\" class=\"data row2 col3\" >nan</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <td id=\"T_25de8_row3_col0\" class=\"data row3 col0\" >3</td>\n",
|
|
" <td id=\"T_25de8_row3_col1\" class=\"data row3 col1\" >Geometrisches_Nivellement</td>\n",
|
|
" <td id=\"T_25de8_row3_col2\" class=\"data row3 col2\" >0.000100</td>\n",
|
|
" <td id=\"T_25de8_row3_col3\" class=\"data row3 col3\" >0.300000</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data",
|
|
"jetTransient": {
|
|
"display_id": null
|
|
}
|
|
}
|
|
],
|
|
"execution_count": 6
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-02-05T14:00:40.399822Z",
|
|
"start_time": "2026-02-05T14:00:40.386179Z"
|
|
}
|
|
},
|
|
"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 aktualisiert.\n",
|
|
"Die Genauigkeitsangabe für Tachymeter_Strecke (Instrument: Trimble S9) wurde aktualisiert.\n",
|
|
"Die Genauigkeitsangabe für Tachymeter_Zenitwinkel (Instrument: Trimble S9) wurde aktualisiert.\n",
|
|
"Die Genauigkeitsangabe für Geometrisches_Nivellement (Instrument: Trimble DiNi 0.3) wurde aktualisiert.\n"
|
|
]
|
|
}
|
|
],
|
|
"execution_count": 7
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"id": "b28afe0c64aa59d6",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-02-05T14:00:41.093891Z",
|
|
"start_time": "2026-02-05T14:00:40.992896Z"
|
|
}
|
|
},
|
|
"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 wurde abgebrochen, weil mindestens ein Teil der Punktnummern aus der Datei Daten\\campsnetz_koordinaten_plus_nachmessungen.csv bereits in der Datenbank vorhanden ist. Bitte in der Datei ändern und Import wiederholen.\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 wurde abgebrochen, weil die Beobachtungen aus der Datei Daten\\campsnetz_beobachtungen_plus_nachmessungen_korrigiert.csv bereits in der Datenbank vorhanden sind.\n"
|
|
]
|
|
}
|
|
],
|
|
"execution_count": 8
|
|
},
|
|
{
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-02-05T14:00:41.667677Z",
|
|
"start_time": "2026-02-05T14:00:41.657349Z"
|
|
}
|
|
},
|
|
"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 wurde abgebrochen, weil die Beobachtungen aus der Datei Daten\\Basislinien_ohne0648und10002.asc.txt bereits in der Datenbank vorhanden sind.\n"
|
|
]
|
|
}
|
|
],
|
|
"execution_count": 9
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"id": "2d8a0533726304a8",
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2026-02-05T14:00:51.315237Z",
|
|
"start_time": "2026-02-05T14:00:42.322654Z"
|
|
}
|
|
},
|
|
"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: 68\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",
|
|
"Koordinaten berechnet aus Helmerttransformation:\n",
|
|
"10001: 3794901.521, 546745.584, 5080065.755\n",
|
|
"10002: 3794867.011, 546729.617, 5080092.695\n",
|
|
"10003: 3794841.061, 546735.120, 5080111.557\n",
|
|
"10004: 3794803.469, 546714.145, 5080141.394\n",
|
|
"10005: 3794793.850, 546722.325, 5080147.942\n",
|
|
"10006: 3794766.364, 546707.643, 5080169.743\n",
|
|
"10007: 3794831.055, 546758.730, 5080116.675\n",
|
|
"10008: 3794783.870, 546746.646, 5080152.758\n",
|
|
"10009: 3794767.479, 546740.091, 5080165.961\n",
|
|
"10010: 3794758.643, 546767.670, 5080169.471\n",
|
|
"10011: 3794894.930, 546833.119, 5080061.164\n",
|
|
"10012: 3794853.608, 546805.240, 5080094.900\n",
|
|
"10013: 3794849.615, 546826.872, 5080095.440\n",
|
|
"10014: 3794838.746, 546812.367, 5080105.181\n",
|
|
"10015: 3794839.472, 546793.520, 5080106.782\n",
|
|
"10016: 3794826.666, 546788.731, 5080116.878\n",
|
|
"10017: 3794825.022, 546831.703, 5080113.383\n",
|
|
"10018: 3794762.253, 546797.694, 5080163.986\n",
|
|
"10019: 3794800.100, 546833.327, 5080131.731\n",
|
|
"10020: 3794782.615, 546834.473, 5080145.041\n",
|
|
"10021: 3794776.034, 546833.743, 5080150.018\n",
|
|
"10022: 3794778.341, 546841.753, 5080147.280\n",
|
|
"10023: 3794780.799, 546848.104, 5080144.929\n",
|
|
"10024: 3794772.819, 546857.098, 5080149.838\n",
|
|
"10025: 3794774.211, 546871.813, 5080147.362\n",
|
|
"10026: 3794753.858, 546827.445, 5080167.092\n",
|
|
"10027: 3794757.593, 546874.333, 5080159.319\n",
|
|
"10028: 3794889.671, 546908.764, 5080056.920\n",
|
|
"10029: 3794845.029, 546914.918, 5080089.105\n",
|
|
"10030: 3794845.357, 546901.029, 5080090.362\n",
|
|
"10031: 3794821.763, 546877.550, 5080110.752\n",
|
|
"10032: 3794807.851, 546888.488, 5080119.750\n",
|
|
"10033: 3794800.019, 546874.654, 5080127.209\n",
|
|
"10034: 3794886.107, 546965.700, 5080053.411\n",
|
|
"10035: 3794845.950, 546961.514, 5080084.091\n",
|
|
"10036: 3794815.055, 546969.597, 5080106.065\n",
|
|
"10037: 3794800.626, 546960.749, 5080117.709\n",
|
|
"10038: 3794806.325, 546929.732, 5080116.901\n",
|
|
"10039: 3794804.164, 546914.733, 5080120.142\n",
|
|
"10040: 3794780.721, 546956.425, 5080133.161\n",
|
|
"10041: 3794778.154, 546925.879, 5080138.723\n",
|
|
"10042: 3794758.957, 546937.061, 5080151.609\n",
|
|
"10043: 3794747.274, 546919.151, 5080162.149\n",
|
|
"10044: 3794752.686, 546958.324, 5080154.237\n",
|
|
"10045: 3794881.901, 547019.784, 5080050.718\n",
|
|
"10046: 3794846.580, 547012.997, 5080077.441\n",
|
|
"10047: 3794831.534, 547018.239, 5080088.124\n",
|
|
"10048: 3794809.105, 547017.302, 5080105.013\n",
|
|
"10049: 3794786.888, 547021.076, 5080121.441\n",
|
|
"10050: 3794766.769, 547012.526, 5080137.481\n",
|
|
"10051: 3794767.056, 546988.699, 5080139.995\n",
|
|
"10052: 3794743.624, 546984.416, 5080157.827\n",
|
|
"10053: 3794748.143, 547017.574, 5080150.924\n",
|
|
"10054: 3794889.163, 547086.949, 5080038.116\n",
|
|
"10055: 3794838.849, 547081.903, 5080075.695\n",
|
|
"10056: 3794825.037, 547094.810, 5080084.484\n",
|
|
"10057: 3794800.815, 547078.670, 5080104.567\n",
|
|
"10058: 3794766.103, 547091.752, 5080129.113\n",
|
|
"10059: 3794736.830, 547079.447, 5080152.362\n",
|
|
"666: 3794868.128, 547082.279, 5080054.295\n",
|
|
"812: 3794850.535, 547010.934, 5080075.089\n",
|
|
"816: 3794817.790, 547004.825, 5080100.040\n",
|
|
"FH11: 3794853.321, 546973.225, 5080077.224\n",
|
|
"FH13: 3794832.559, 546754.704, 5080116.651\n",
|
|
"FH14: 3794853.863, 546972.809, 5080076.935\n",
|
|
"FH15: 3794794.213, 546870.696, 5080132.914\n",
|
|
"FH3: 3794810.977, 547013.441, 5080105.068\n",
|
|
"FH4: 3794773.597, 546985.341, 5080135.930\n",
|
|
"Streckendifferenzen zwischen Näherungskoordinate aus statischer GNSS-Messung und ergebnis der Helmerttransformation:\n",
|
|
"[0.027793, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.025879, 0.0, 0.0, 0.0, 0.0, 0.0, 0.016527, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.01604, 0.0, 0.066139, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07164, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.025138, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.125881, 0.0, 0.0, 0.0, 0.0, 0.142477, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]\n",
|
|
"\n",
|
|
"Differenz Schwerpunkt zwischen Näherungskoordinate aus statischer GNSS-Messung und ergebnis der Helmerttransformation::\n",
|
|
"Matrix([[-2.59e-10], [6.85e-12], [-2.32e-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-05T14:00:51.354852Z",
|
|
"start_time": "2026-02-05T14:00:51.347388Z"
|
|
}
|
|
},
|
|
"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-05T14:00:51.361580Z",
|
|
"start_time": "2026-02-05T14:00:51.354852Z"
|
|
}
|
|
},
|
|
"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-05T14:00:51.372347Z",
|
|
"start_time": "2026-02-05T14:00:51.364107Z"
|
|
}
|
|
},
|
|
"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": [
|
|
"Der Import wurde abgebrochen, weil die Beobachtungen aus der Datei Daten\\Niv_bereinigt.DAT.csv bereits in der Datenbank vorhanden sind.\n",
|
|
"Der Import wurde abgebrochen, weil die Beobachtungen aus der Datei Daten\\Niv_bereinigt.DAT.csv bereits in der Datenbank vorhanden sind.\n"
|
|
]
|
|
}
|
|
],
|
|
"execution_count": 13
|
|
},
|
|
{
|
|
"metadata": {
|
|
"jupyter": {
|
|
"is_executing": true
|
|
},
|
|
"ExecuteTime": {
|
|
"start_time": "2026-02-05T14:00:51.377686Z"
|
|
}
|
|
},
|
|
"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": {},
|
|
"cell_type": "code",
|
|
"outputs": [],
|
|
"execution_count": null,
|
|
"source": "",
|
|
"id": "8525da086619229b"
|
|
}
|
|
],
|
|
"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
|
|
}
|