Files
Masterprojekt-Campusnetz/Campusnetz.ipynb

1223 lines
50 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"id": "initial_id",
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2025-12-19T13:36:19.983612Z",
"start_time": "2025-12-19T13:36:18.610653Z"
}
},
"source": [
"# Hier werden alle verwendeten Pythonmodule importiert\n",
"import Datenbank\n",
"import Import\n",
"import importlib\n",
"import Koordinatentransformationen\n",
"import sqlite3\n",
"import Funktionales_Modell\n",
"import Berechnungen\n",
"import Parameterschaetzung\n",
"import Stochastisches_Modell\n",
"from Stochastisches_Modell import StochastischesModell\n",
"import Export\n",
"import Netzqualität_Genauigkeit"
],
"outputs": [],
"execution_count": 1
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:36:20.001465Z",
"start_time": "2025-12-19T13:36:19.992585Z"
}
},
"cell_type": "code",
"source": [
"importlib.reload(Datenbank)\n",
"importlib.reload(Import)\n",
"# Anlegen der Datenbank, wenn nicht vorhanden\n",
"pfad_datenbank = r\"Campusnetz.db\"\n",
"Datenbank.Datenbank_anlegen(pfad_datenbank)\n",
"\n",
"# Import vervollständigen\n",
"imp = Import.Import(pfad_datenbank)\n",
"db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)"
],
"id": "82d514cd426db78b",
"outputs": [],
"execution_count": 2
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:36:20.015472Z",
"start_time": "2025-12-19T13:36:20.008920Z"
}
},
"cell_type": "code",
"source": [
"# Import der Koordinatendatei(en) vom Tachymeter\n",
"pfad_datei = r\"Daten\\campsnetz_koordinaten_bereinigt.csv\"\n",
"imp.import_koordinaten_lh_tachymeter(pfad_datei)"
],
"id": "d3bce3991a8962dc",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Der Import wurde abgebrochen, weil mindestens ein Teil der Punktnummern aus der Datei Daten\\campsnetz_koordinaten_bereinigt.csv bereits in der Datenbank vorhanden ist. Bitte in der Datei ändern und Import wiederholen.\n"
]
}
],
"execution_count": 3
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:36:20.037412Z",
"start_time": "2025-12-19T13:36:20.023272Z"
}
},
"cell_type": "code",
"source": [
"importlib.reload(Datenbank)\n",
"db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)\n",
"# Transformationen in ETRS89 / DREF91 Realisierung 2025\n",
"print(db_zugriff.get_koordinaten(\"naeherung_lh\"))"
],
"id": "196ff0c8f8b5aea1",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'10009': Matrix([\n",
"[1000.0],\n",
"[2000.0],\n",
"[ 100.0]]), '10006': Matrix([\n",
"[ 1000.0],\n",
"[2032.6863],\n",
"[ 99.5825]]), '10010': Matrix([\n",
"[1011.8143],\n",
"[1973.3252],\n",
"[ 99.9259]]), '10018': Matrix([\n",
"[1008.5759],\n",
"[ 1942.762],\n",
"[ 100.2553]]), '10008': Matrix([\n",
"[979.7022],\n",
"[1991.401],\n",
"[ 99.732]]), '10005': Matrix([\n",
"[ 966.5154],\n",
"[2014.6496],\n",
"[ 99.72]]), '10003': Matrix([\n",
"[ 908.4312],\n",
"[1996.1248],\n",
"[ 99.7403]]), '10004': Matrix([\n",
"[ 954.1536],\n",
"[2021.6822],\n",
"[ 99.4916]]), '10007': Matrix([\n",
"[ 921.7481],\n",
"[1973.6201],\n",
"[ 99.9176]]), '10001': Matrix([\n",
"[ 833.9439],\n",
"[1978.3737],\n",
"[ 99.8946]]), '10002': Matrix([\n",
"[ 875.9684],\n",
"[1998.5174],\n",
"[ 99.5867]]), '10016': Matrix([\n",
"[ 928.2783],\n",
"[1944.0082],\n",
"[ 100.0459]]), '10011': Matrix([\n",
"[844.9567],\n",
"[1891.157],\n",
"[ 99.8117]]), '10026': Matrix([\n",
"[1020.0059],\n",
"[1913.8703],\n",
"[ 100.3059]]), '10027': Matrix([\n",
"[1016.9451],\n",
"[1866.2914],\n",
"[ 100.3251]]), '10043': Matrix([\n",
"[1031.2077],\n",
"[1822.4739],\n",
"[ 100.3035]]), '10044': Matrix([\n",
"[ 1025.976],\n",
"[1782.4835],\n",
"[ 100.5461]]), '10021': Matrix([\n",
"[ 992.7607],\n",
"[1904.8854],\n",
"[ 100.3533]]), '10020': Matrix([\n",
"[ 984.6187],\n",
"[1903.3601],\n",
"[ 100.3423]]), '10024': Matrix([\n",
"[ 997.4831],\n",
"[1881.7862],\n",
"[ 100.3032]]), '10025': Matrix([\n",
"[996.3241],\n",
"[1866.844],\n",
"[100.4102]]), '10022': Matrix([\n",
"[990.0679],\n",
"[1896.536],\n",
"[100.2194]]), '10023': Matrix([\n",
"[ 987.3223],\n",
"[1889.8762],\n",
"[ 100.343]]), '10019': Matrix([\n",
"[ 962.6387],\n",
"[1902.3565],\n",
"[ 99.9772]]), '10033': Matrix([\n",
"[ 964.0191],\n",
"[1860.8023],\n",
"[ 99.8551]]), '10017': Matrix([\n",
"[ 931.6761],\n",
"[1900.9945],\n",
"[ 99.9572]]), '10052': Matrix([\n",
"[ 1037.875],\n",
"[1757.2999],\n",
"[ 100.2737]]), '10042': Matrix([\n",
"[1017.3489],\n",
"[1803.0742],\n",
"[ 100.3441]]), '10053': Matrix([\n",
"[1033.3758],\n",
"[1723.4258],\n",
"[ 100.2774]]), '10037': Matrix([\n",
"[ 966.2253],\n",
"[1774.2051],\n",
"[ 99.9957]]), '10040': Matrix([\n",
"[ 990.8832],\n",
"[1780.9678],\n",
"[ 100.1677]]), '10041': Matrix([\n",
"[993.2769],\n",
"[1812.031],\n",
"[100.4749]]), '10038': Matrix([\n",
"[ 958.1899],\n",
"[1804.7135],\n",
"[ 100.0741]]), '10051': Matrix([\n",
"[1008.9811],\n",
"[1750.1838],\n",
"[ 100.288]]), '10036': Matrix([\n",
"[ 948.6403],\n",
"[1763.5807],\n",
"[ 100.0063]]), '10035': Matrix([\n",
"[ 910.1265],\n",
"[1768.0099],\n",
"[ 100.0781]]), '10039': Matrix([\n",
"[ 960.3884],\n",
"[1820.0543],\n",
"[ 100.0983]]), '10059': Matrix([\n",
"[1049.2587],\n",
"[1662.5451],\n",
"[ 100.0148]]), '10050': Matrix([\n",
"[1010.0246],\n",
"[1726.2445],\n",
"[ 100.1493]]), '10013': Matrix([\n",
"[900.9076],\n",
"[1902.873],\n",
"[ 99.7911]]), '10028': Matrix([\n",
"[ 853.9608],\n",
"[1815.7417],\n",
"[ 99.7793]]), '10012': Matrix([\n",
"[ 895.3032],\n",
"[1924.1523],\n",
"[ 99.8758]]), '10014': Matrix([\n",
"[ 913.9706],\n",
"[1918.7731],\n",
"[ 99.8872]]), '10031': Matrix([\n",
"[ 937.1557],\n",
"[1855.2805],\n",
"[ 99.8479]]), '10015': Matrix([\n",
"[ 912.5157],\n",
"[1937.6471],\n",
"[ 99.9834]]), '10032': Matrix([\n",
"[ 954.6732],\n",
"[1845.9356],\n",
"[ 99.724]]), '10030': Matrix([\n",
"[ 908.4749],\n",
"[1828.8008],\n",
"[ 99.5581]]), '10029': Matrix([\n",
"[ 909.3343],\n",
"[1814.8767],\n",
"[ 99.5486]]), '10034': Matrix([\n",
"[ 860.2357],\n",
"[1758.9282],\n",
"[ 99.737]]), '10045': Matrix([\n",
"[867.2324],\n",
"[1705.063],\n",
"[ 99.7214]]), '10049': Matrix([\n",
"[ 985.2561],\n",
"[1715.2109],\n",
"[ 99.9965]]), '10048': Matrix([\n",
"[ 957.3889],\n",
"[1716.2949],\n",
"[ 99.7212]]), '10047': Matrix([\n",
"[ 929.5334],\n",
"[1712.6429],\n",
"[ 99.6076]]), '10046': Matrix([\n",
"[ 910.663],\n",
"[1716.0969],\n",
"[ 99.5459]]), '10057': Matrix([\n",
"[969.6876],\n",
"[1655.597],\n",
"[ 99.7039]]), '10055': Matrix([\n",
"[ 922.4731],\n",
"[1647.7452],\n",
"[ 99.4658]]), '10054': Matrix([\n",
"[ 860.4481],\n",
"[1636.6722],\n",
"[ 99.7093]]), '10058': Matrix([\n",
"[1013.2592],\n",
"[1646.6356],\n",
"[ 99.8513]]), '10056': Matrix([\n",
"[ 939.9763],\n",
"[1636.4179],\n",
"[ 99.4027]])}\n"
]
}
],
"execution_count": 4
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:36:20.063050Z",
"start_time": "2025-12-19T13:36:20.049616Z"
}
},
"cell_type": "code",
"source": [
"importlib.reload(Datenbank)\n",
"db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)\n",
"# Transformationen in ETRS89 / DREF91 Realisierung 2025\n",
"print(db_zugriff.get_koordinaten(\"naeherung_us\"))"
],
"id": "3989b7b41874c16a",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'10009': Matrix([\n",
"[3794753.662988071],\n",
"[546753.9367637949],\n",
"[5080143.386677202]]), '10006': Matrix([\n",
"[3794754.4896177407],\n",
"[ 546723.9921318174],\n",
"[ 5080154.649178403]]), '10010': Matrix([\n",
"[3794744.056289807],\n",
"[ 546780.742811981],\n",
"[5080141.163673801]]), '10018': Matrix([\n",
"[3794745.6185563155],\n",
"[ 546808.0432620639],\n",
"[ 5080128.604555877]]), '10008': Matrix([\n",
"[3794768.085065894],\n",
"[546757.4334968549],\n",
"[5080127.714551505]]), '10005': Matrix([\n",
"[3794778.527441427],\n",
"[546733.4402395741],\n",
"[5080127.827096725]]), '10003': Matrix([\n",
"[3794820.511758894],\n",
"[546738.1215455689],\n",
"[5080085.660271364]]), '10004': Matrix([\n",
"[3794787.6803909624],\n",
"[ 546724.3555399023],\n",
"[ 5080122.571979241]]), '10007': Matrix([\n",
"[3794810.1060299976],\n",
"[ 546761.5106092368],\n",
"[ 5080086.002076505]]), '10001': Matrix([\n",
"[3794874.984],\n",
"[ 546741.752],\n",
"[ 5080029.99]]), '10002': Matrix([\n",
"[3794842.533],\n",
"[ 546726.907],\n",
"[5080071.133]]), '10016': Matrix([\n",
"[3794804.406675659],\n",
"[546789.9420781326],\n",
"[5080079.636495427]]), '10011': Matrix([\n",
"[3794863.580492221],\n",
"[ 546820.559672293],\n",
"[5080009.689041209]]), '10026': Matrix([\n",
"[3794736.3000356155],\n",
"[ 546836.8268835127],\n",
"[ 5080125.447080448]]), '10027': Matrix([\n",
"[3794736.960008056],\n",
"[546879.6025181431],\n",
"[5080106.777201966]]), '10043': Matrix([\n",
"[3794725.0166116133],\n",
"[ 546922.5812446327],\n",
"[ 5080100.037039967]]), '10044': Matrix([\n",
"[3794725.786],\n",
"[ 546954.557],\n",
"[5080084.411]]), '10021': Matrix([\n",
"[3794756.007978388],\n",
"[546839.3032465314],\n",
"[5080105.589359214]]), '10020': Matrix([\n",
"[3794761.920156639],\n",
"[ 546838.977847251],\n",
"[5080100.047656914]]), '10024': Matrix([\n",
"[3794751.737303274],\n",
"[ 546861.360519194],\n",
"[5080100.294253004]]), '10025': Matrix([\n",
"[3794752.154987486],\n",
"[546874.7814536445],\n",
"[5080094.377907591]]), '10022': Matrix([\n",
"[3794757.615620013],\n",
"[546846.3167290309],\n",
"[5080100.897628256]]), '10023': Matrix([\n",
"[3794759.485496209],\n",
"[ 546851.850918009],\n",
"[5080096.944400053]]), '10019': Matrix([\n",
"[3794777.7678170092],\n",
"[ 546835.1621077962],\n",
"[ 5080085.960456316]]), '10033': Matrix([\n",
"[3794775.2817534585],\n",
"[ 546873.3349687136],\n",
"[ 5080072.047854735]]), '10017': Matrix([\n",
"[3794800.413909602],\n",
"[546829.8809366617],\n",
"[5080066.468759774]]), '10052': Matrix([\n",
"[3794717.9206994777],\n",
"[ 546983.4459180598],\n",
"[ 5080081.08810058]]), '10042': Matrix([\n",
"[3794734.554388196],\n",
"[546937.3770063668],\n",
"[5080084.709433899]]), '10053': Matrix([\n",
"[3794720.085392712],\n",
"[547013.4090397687],\n",
"[5080066.365756604]]), '10037': Matrix([\n",
"[3794774.148],\n",
"[ 546955.423],\n",
"[ 5080040.52]]), '10040': Matrix([\n",
"[ 3794753.10534012],\n",
"[546951.9265840759],\n",
"[5080060.544109294]]), '10041': Matrix([\n",
"[3794752.5916562714],\n",
"[ 546924.1738739341],\n",
"[ 5080073.192051816]]), '10038': Matrix([\n",
"[ 3794777.815586322],\n",
"[ 546923.349922253],\n",
"[5080048.8088312065]]), '10051': Matrix([\n",
"[3794738.8789104675],\n",
"[ 546983.8605122707],\n",
"[ 5080060.856497383]]), '10036': Matrix([\n",
"[3794783.3937713057],\n",
"[ 546958.852789368],\n",
"[ 5080028.375683213]]), '10035': Matrix([\n",
"[3794811.830974887],\n",
"[546946.7238359943],\n",
"[5080006.358480608]]), '10039': Matrix([\n",
"[3794776.7340096105],\n",
"[ 546909.8215799981],\n",
"[ 5080055.592469811]]), '10059': Matrix([\n",
"[3794706.225008511],\n",
"[547072.2297731125],\n",
"[ 5080054.43002136]]), '10050': Matrix([\n",
"[3794737.2203678135],\n",
"[ 547005.884569236],\n",
"[ 5080052.947562701]]), '10013': Matrix([\n",
"[ 3794822.93179095],\n",
"[546821.6420313995],\n",
"[5080048.141902982]]), '10028': Matrix([\n",
"[3794854.4255897156],\n",
"[ 546891.2604669487],\n",
"[ 5079988.554852184]]), '10012': Matrix([\n",
"[3794827.8105639764],\n",
"[ 546801.0695727703],\n",
"[ 5080052.276465297]]), '10014': Matrix([\n",
"[3794813.9486643546],\n",
"[ 546809.9110713875],\n",
"[ 5080061.837625159]]), '10031': Matrix([\n",
"[3794794.7905896883],\n",
"[ 546872.7161265102],\n",
"[ 5080053.610634492]]), '10015': Matrix([\n",
"[3794815.711342138],\n",
"[546792.4102238796],\n",
"[5080067.676337123]]), '10032': Matrix([\n",
"[3794781.551156347],\n",
"[546884.8955067778],\n",
"[5080060.974089937]]), '10030': Matrix([\n",
"[3794814.745621184],\n",
"[546890.7575186054],\n",
"[5080026.464896545]]), '10029': Matrix([\n",
"[3794813.6419235766],\n",
"[ 546903.6411063377],\n",
"[ 5080022.067753642]]), '10034': Matrix([\n",
"[3794847.8899375866],\n",
"[ 546944.410223245],\n",
"[ 5079972.309638362]]), '10045': Matrix([\n",
"[3794840.9412449836],\n",
"[ 546995.0293108278],\n",
"[ 5079957.566682608]]), '10049': Matrix([\n",
"[3794754.9137046253],\n",
"[ 547010.6945388399],\n",
"[ 5080033.750437016]]), '10048': Matrix([\n",
"[3794775.2066675387],\n",
"[ 547003.7601902599],\n",
"[ 5080016.849210949]]), '10047': Matrix([\n",
"[3794795.4368398967],\n",
"[ 547001.1959608953],\n",
"[ 5079998.391751167]]), '10046': Matrix([\n",
"[3794809.350397248],\n",
"[546994.0540568152],\n",
"[5079987.992043806]]), '10057': Matrix([\n",
"[3794764.1396034313],\n",
"[ 547061.7296312195],\n",
"[ 5080002.94483388]]), '10055': Matrix([\n",
"[3794798.344048102],\n",
"[547058.8865967724],\n",
"[5079971.042090028]]), '10054': Matrix([\n",
"[3794843.6128397244],\n",
"[ 547056.002453676],\n",
"[ 5079929.240302954]]), '10058': Matrix([\n",
"[3794731.9834108665],\n",
"[ 547079.1214681087],\n",
"[ 5080026.612704653]]), '10056': Matrix([\n",
"[3794785.0879494334],\n",
"[ 547072.8892187019],\n",
"[ 5079977.737701344]])}\n"
]
}
],
"execution_count": 5
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:36:20.088998Z",
"start_time": "2025-12-19T13:36:20.081173Z"
}
},
"cell_type": "code",
"source": [
"# ToDo: Sobald GNSS vorliegend Koordinaten im ETRS89 / DREF 91 (2025) daraus berechnen!\n",
"liste_koordinaten_naeherung_us_alt = {\n",
" 10001: (3794874.98408291, 546741.751930012, 5079995.3838),\n",
" 10002: (3794842.53340714, 546726.907150697, 5080039.8778),\n",
" 10008: (3794757.41294192, 546742.822339098, 5080107.3198),\n",
" 10012: (3794827.11937161, 546801.412652168, 5080028.5852),\n",
" 10026: (3794727.06042449, 546823.571170112, 5080134.2029),\n",
" 10028: (3794862.91900719, 546904.943464041, 5079920.8994),\n",
" 10037: (3794774.14751515, 546955.423068316, 5079960.9426),\n",
" 10044: (3794725.78597473, 546954.557211544, 5080009.9234),\n",
" 10054: (3794852.07416848, 547094.399826613, 5079715.1737),\n",
" 10059: (3794710.34348443, 547075.630380075, 5080119.6491),\n",
"}\n",
"\n",
"liste_koordinaten_naeherung_us_V2 = {\n",
" 10001: (3794874.984, 546741.752, 5080029.990),\n",
" 10002: (3794842.533, 546726.907, 5080071.133),\n",
" 10008: (3794757.413, 546742.822, 5080135.400),\n",
" 10012: (3794827.119, 546801.413, 5080065.404),\n",
" 10026: (3794727.060, 546823.571, 5080179.951),\n",
" 10028: (3794862.919, 546904.943, 5079963.214),\n",
" 10037: (3794774.148, 546955.423, 5080040.520),\n",
" 10044: (3794725.786, 546954.557, 5080084.411),\n",
" 10054: (3794852.074, 547094.400, 5079771.845),\n",
" 10059: (3794710.343, 547075.630, 5080153.653),\n",
"}\n",
"\n",
"liste_koordinaten_naeherung_us = {\n",
" 10001: (3794874.984, 546741.752, 5080029.990),\n",
" 10002: (3794842.533, 546726.907, 5080071.133),\n",
" 10037: (3794774.148, 546955.423, 5080040.520),\n",
" 10044: (3794725.786, 546954.557, 5080084.411),\n",
"}\n",
"\n",
"\n",
"con = sqlite3.connect(pfad_datenbank)\n",
"cursor = con.cursor()\n",
"sql = \"\"\"\n",
"UPDATE Netzpunkte\n",
"SET naeherungx_us = ?, naeherungy_us = ?, naeherungz_us = ?\n",
"WHERE punktnummer = ?\n",
"\"\"\"\n",
"for punktnummer, (x, y, z) in liste_koordinaten_naeherung_us.items():\n",
" cursor.execute(sql, (x, y, z, punktnummer))\n",
"con.commit()\n",
"cursor.close()\n",
"con.close()"
],
"id": "f64d9c01318b40f1",
"outputs": [],
"execution_count": 6
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:36:41.310320Z",
"start_time": "2025-12-19T13:36:20.096648Z"
}
},
"cell_type": "code",
"source": [
"# ToDo: Sobald GNSS-Daten vorliegen und die Berechnungen richtig sind, aufräumen!!!\n",
"\n",
"importlib.reload(Koordinatentransformationen)\n",
"trafos = Koordinatentransformationen.Transformationen(pfad_datenbank)\n",
"\n",
"\n",
"import numpy as np\n",
"\n",
"import itertools\n",
"import numpy as np\n",
"import sympy as sp\n",
"\n",
"db = Datenbank.Datenbankzugriff(pfad_datenbank)\n",
"dict_ausgangssystem = db.get_koordinaten(\"naeherung_lh\", \"Dict\")\n",
"dict_zielsystem = db.get_koordinaten(\"naeherung_us\", \"Dict\")\n",
"\n",
"gemeinsame_punktnummern = sorted(set(dict_ausgangssystem.keys()) & set(dict_zielsystem.keys()))\n",
"anzahl_gemeinsame_punkte = len(gemeinsame_punktnummern)\n",
"\n",
"liste_punkte_ausgangssystem = [dict_ausgangssystem[i] for i in gemeinsame_punktnummern]\n",
"liste_punkte_zielsystem = [dict_zielsystem[i] for i in gemeinsame_punktnummern]\n",
"\n",
"def dist(a, b):\n",
" return float((a - b).norm())\n",
"\n",
"print(\"d(p2,p1)=\", dist(liste_punkte_ausgangssystem[1], liste_punkte_ausgangssystem[0]))\n",
"print(\"d(P2,P1)=\", dist(liste_punkte_zielsystem[1], liste_punkte_zielsystem[0]))\n",
"print(\"m0 ~\", dist(liste_punkte_zielsystem[1], liste_punkte_zielsystem[0]) /\n",
" dist(liste_punkte_ausgangssystem[1], liste_punkte_ausgangssystem[0]))\n",
"\n",
"\n",
"def dist(a, b):\n",
" return float((a - b).norm())\n",
"\n",
"ratios = []\n",
"pairs = list(itertools.combinations(range(len(liste_punkte_ausgangssystem)), 2))\n",
"\n",
"for i, j in pairs:\n",
" d_loc = dist(liste_punkte_ausgangssystem[i], liste_punkte_ausgangssystem[j])\n",
" d_ecef = dist(liste_punkte_zielsystem[i], liste_punkte_zielsystem[j])\n",
" if d_loc > 1e-6:\n",
" ratios.append(d_ecef / d_loc)\n",
"\n",
"print(\"Anzahl Ratios:\", len(ratios))\n",
"print(\"min/mean/max:\", min(ratios), sum(ratios)/len(ratios), max(ratios))\n",
"print(\"std:\", float(np.std(ratios)))\n",
"\n",
"S_loc = sum(liste_punkte_ausgangssystem, sp.Matrix([0,0,0])) / anzahl_gemeinsame_punkte\n",
"S_ecef = sum(liste_punkte_zielsystem, sp.Matrix([0,0,0])) / anzahl_gemeinsame_punkte\n",
"\n",
"print(\"S_loc:\", S_loc)\n",
"print(\"S_ecef:\", S_ecef)\n",
"print(\"Delta:\", (S_ecef - S_loc).evalf(6))\n",
"\n",
"\n",
"def dist(a, b):\n",
" return float((a - b).norm())\n",
"\n",
"n = len(liste_punkte_ausgangssystem)\n",
"\n",
"scores = []\n",
"for i in range(n):\n",
" d_loc = []\n",
" d_ecef = []\n",
" for j in range(n):\n",
" if i == j:\n",
" continue\n",
" d_loc.append(dist(liste_punkte_ausgangssystem[i], liste_punkte_ausgangssystem[j]))\n",
" d_ecef.append(dist(liste_punkte_zielsystem[i], liste_punkte_zielsystem[j]))\n",
"\n",
" d_loc = np.array(d_loc)\n",
" d_ecef = np.array(d_ecef)\n",
"\n",
" # Verhältnisvektor; robust gegen Nullschutz\n",
" r = d_ecef / np.where(d_loc == 0, np.nan, d_loc)\n",
"\n",
" # Streuung der Ratios für Punkt i\n",
" score = np.nanstd(r)\n",
" scores.append(score)\n",
"\n",
"for pn, sc in sorted(zip(gemeinsame_punktnummern, scores), key=lambda x: -x[1]):\n",
" print(pn, round(sc, 4))\n",
"\n",
"\n",
"\n",
"transformationsparameter = trafos.Helmerttransformation_Euler_Transformationsparameter_berechne()"
],
"id": "21d60465e432c649",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"d(p2,p1)= 46.60388451996242\n",
"d(P2,P1)= 54.462720048072995\n",
"m0 ~ 1.1686304823956102\n",
"Anzahl Ratios: 1711\n",
"min/mean/max: 0.7614345916032296 0.9794088114462783 1.1686304823956102\n",
"std: 0.013420503874278246\n",
"S_loc: Matrix([[956.308098305085], [1838.78964237288], [99.9601016949153]])\n",
"S_ecef: Matrix([[3794780.2653894138], [546891.8276136060], [5080059.6128838661]])\n",
"Delta: Matrix([[3.79382e+6], [545053.], [5.07996e+6]])\n",
"10037 0.0506\n",
"10044 0.0394\n",
"10002 0.0328\n",
"10036 0.0288\n",
"10001 0.0284\n",
"10040 0.0226\n",
"10042 0.0182\n",
"10051 0.0152\n",
"10043 0.0147\n",
"10052 0.0141\n",
"10003 0.014\n",
"10041 0.0133\n",
"10038 0.0103\n",
"10048 0.0096\n",
"10047 0.0092\n",
"10035 0.0092\n",
"10050 0.0091\n",
"10046 0.0085\n",
"10004 0.0085\n",
"10039 0.0082\n",
"10053 0.0079\n",
"10011 0.0079\n",
"10049 0.0079\n",
"10027 0.0078\n",
"10005 0.0072\n",
"10025 0.007\n",
"10024 0.0061\n",
"10045 0.006\n",
"10034 0.0059\n",
"10006 0.0058\n",
"10008 0.0056\n",
"10033 0.0055\n",
"10032 0.0054\n",
"10023 0.0054\n",
"10009 0.0053\n",
"10055 0.0053\n",
"10057 0.0053\n",
"10026 0.0053\n",
"10012 0.0052\n",
"10022 0.0052\n",
"10021 0.005\n",
"10056 0.0049\n",
"10028 0.0049\n",
"10007 0.0048\n",
"10020 0.0048\n",
"10010 0.0047\n",
"10054 0.0046\n",
"10018 0.0046\n",
"10013 0.0045\n",
"10058 0.0042\n",
"10019 0.004\n",
"10031 0.0039\n",
"10059 0.0038\n",
"10014 0.0035\n",
"10029 0.0034\n",
"10017 0.0033\n",
"10015 0.0032\n",
"10030 0.0032\n",
"10016 0.0025\n",
"Anzahl gemeinsame Punkte: 59\n",
"\n",
"Erste Zielpunkte:\n",
"10001 [3794874.984, 546741.752, 5080029.99]\n",
"10002 [3794842.533, 546726.907, 5080071.133]\n",
"10003 [3794820.511758894, 546738.1215455689, 5080085.660271364]\n",
"10004 [3794787.6803909624, 546724.3555399023, 5080122.571979241]\n",
"10005 [3794778.527441427, 546733.4402395741, 5080127.827096725]\n",
"\n",
"Erste Ausgangspunkte:\n",
"10001 [833.9439, 1978.3737, 99.8946]\n",
"10002 [875.9684, 1998.5174, 99.5867]\n",
"10003 [908.4312, 1996.1248, 99.7403]\n",
"10004 [954.1536, 2021.6822, 99.4916]\n",
"10005 [966.5154, 2014.6496, 99.72]\n",
"min/mean/max: 0.7614345916032296 0.9794088114462783 1.1686304823956102\n",
"R ist nicht Orthonormal!\n",
"Iteration Nr.1 abgeschlossen\n",
"Matrix([[154.], [42.5], [251.], [-0.265], [-0.956], [0.0318], [0.464]])\n",
"Iteration Nr.2 abgeschlossen\n",
"Matrix([[129.], [-43.2], [-153.], [0.260], [-0.120], [-0.0849], [-0.0123]])\n",
"Iteration Nr.3 abgeschlossen\n",
"Matrix([[2.89], [2.18], [-3.01], [0.00353], [0.0346], [0.0241], [-0.00102]])\n",
"Iteration Nr.4 abgeschlossen\n",
"Matrix([[0.326], [0.250], [-0.491], [0.000587], [0.000114], [0.000254], [-0.000579]])\n",
"Iteration Nr.5 abgeschlossen\n",
"Matrix([[0.000525], [0.000162], [0.000407], [1.55e-7], [3.36e-7], [-8.42e-7], [-1.72e-7]])\n",
"Iteration Nr.6 abgeschlossen\n",
"Matrix([[-1.19e-6], [-5.32e-7], [-1.12e-6], [8.11e-14], [-8.37e-10], [6.95e-10], [4.64e-10]])\n",
"Iteration Nr.7 abgeschlossen\n",
"Matrix([[1.79e-9], [6.83e-10], [1.06e-9], [1.89e-13], [7.60e-13], [-1.07e-12], [-5.40e-13]])\n",
"Matrix([[3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6]])\n",
"Matrix([[3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.46e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6], [3.79e+6], [5.47e+5], [5.08e+6]])\n",
"x = Matrix([[3.80e+6], [5.48e+5], [5.08e+6], [0.979], [-0.481], [0.677], [3.42]])\n",
"\n",
"l_berechnet_final:\n",
"10001: 3794874.637, 546738.682, 5080033.793\n",
"10002: 3794844.297, 546729.060, 5080066.484\n",
"10003: 3794820.512, 546738.122, 5080085.660\n",
"10004: 3794787.680, 546724.356, 5080122.572\n",
"10005: 3794778.527, 546733.440, 5080127.827\n",
"10006: 3794754.490, 546723.992, 5080154.649\n",
"10007: 3794810.106, 546761.511, 5080086.002\n",
"10008: 3794768.085, 546757.433, 5080127.715\n",
"10009: 3794753.663, 546753.937, 5080143.387\n",
"10010: 3794744.056, 546780.743, 5080141.164\n",
"10011: 3794863.580, 546820.560, 5080009.689\n",
"10012: 3794827.811, 546801.070, 5080052.276\n",
"10013: 3794822.932, 546821.642, 5080048.142\n",
"10014: 3794813.949, 546809.911, 5080061.838\n",
"10015: 3794815.711, 546792.410, 5080067.676\n",
"10016: 3794804.407, 546789.942, 5080079.636\n",
"10017: 3794800.414, 546829.881, 5080066.469\n",
"10018: 3794745.619, 546808.043, 5080128.605\n",
"10019: 3794777.768, 546835.162, 5080085.960\n",
"10020: 3794761.920, 546838.978, 5080100.048\n",
"10021: 3794756.008, 546839.303, 5080105.589\n",
"10022: 3794757.616, 546846.317, 5080100.898\n",
"10023: 3794759.485, 546851.851, 5080096.944\n",
"10024: 3794751.737, 546861.361, 5080100.294\n",
"10025: 3794752.155, 546874.781, 5080094.378\n",
"10026: 3794736.300, 546836.827, 5080125.447\n",
"10027: 3794736.960, 546879.603, 5080106.777\n",
"10028: 3794854.426, 546891.260, 5079988.555\n",
"10029: 3794813.642, 546903.641, 5080022.068\n",
"10030: 3794814.746, 546890.758, 5080026.465\n",
"10031: 3794794.791, 546872.716, 5080053.611\n",
"10032: 3794781.551, 546884.896, 5080060.974\n",
"10033: 3794775.282, 546873.335, 5080072.048\n",
"10034: 3794847.890, 546944.410, 5079972.310\n",
"10035: 3794811.831, 546946.724, 5080006.358\n",
"10036: 3794783.394, 546958.853, 5080028.376\n",
"10037: 3794770.848, 546952.857, 5080042.910\n",
"10038: 3794777.816, 546923.350, 5080048.809\n",
"10039: 3794776.734, 546909.822, 5080055.592\n",
"10040: 3794753.105, 546951.927, 5080060.544\n",
"10041: 3794752.592, 546924.174, 5080073.192\n",
"10042: 3794734.554, 546937.377, 5080084.709\n",
"10043: 3794725.017, 546922.581, 5080100.037\n",
"10044: 3794727.668, 546958.039, 5080082.867\n",
"10045: 3794840.941, 546995.029, 5079957.567\n",
"10046: 3794809.350, 546994.054, 5079987.992\n",
"10047: 3794795.437, 547001.196, 5079998.392\n",
"10048: 3794775.207, 547003.760, 5080016.849\n",
"10049: 3794754.914, 547010.695, 5080033.750\n",
"10050: 3794737.220, 547005.885, 5080052.948\n",
"10051: 3794738.879, 546983.861, 5080060.856\n",
"10052: 3794717.921, 546983.446, 5080081.088\n",
"10053: 3794720.085, 547013.409, 5080066.366\n",
"10054: 3794843.613, 547056.002, 5079929.240\n",
"10055: 3794798.344, 547058.887, 5079971.042\n",
"10056: 3794785.088, 547072.889, 5079977.738\n",
"10057: 3794764.140, 547061.730, 5080002.945\n",
"10058: 3794731.983, 547079.121, 5080026.613\n",
"10059: 3794706.225, 547072.230, 5080054.430\n",
"Streckendifferenzen:\n",
"[4.899982, 5.418896, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.814927, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.248968, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]\n",
"\n",
"Differenz Schwerpunkt (Vektor):\n",
"Matrix([[-1.09e-10], [-2.54e-11], [-8.49e-10]])\n",
"Betrag der Schwerpunkt-Differenz:\n",
"0.000m\n"
]
}
],
"execution_count": 7
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:36:41.568393Z",
"start_time": "2025-12-19T13:36:41.548825Z"
}
},
"cell_type": "code",
"source": [
"importlib.reload(Koordinatentransformationen)\n",
"trafos = Koordinatentransformationen.Transformationen(pfad_datenbank)\n",
"\n",
"koordinaten_transformiert = trafos.Helmerttransformation(transformationsparameter)\n",
"print(koordinaten_transformiert)"
],
"id": "df0dcccb73299fcf",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{}\n"
]
}
],
"execution_count": 8
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:36:41.584869Z",
"start_time": "2025-12-19T13:36:41.575869Z"
}
},
"cell_type": "code",
"source": [
"importlib.reload(Datenbank)\n",
"db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)\n",
"\n",
"db_zugriff.set_koordinaten(koordinaten_transformiert, \"naeherung_us\")"
],
"id": "f6993d81c8a145dd",
"outputs": [],
"execution_count": 9
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:36:41.599426Z",
"start_time": "2025-12-19T13:36:41.590504Z"
}
},
"cell_type": "code",
"source": [
"# Importieren der tachymetrischen Beobachtungen\n",
"importlib.reload(Datenbank)\n",
"db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)\n",
"\n",
"db_zugriff.get_instrument_liste(\"Tachymeter\")\n",
"db_zugriff.set_instrument(\"Tachymeter\", \"Trimble S9\")\n",
"db_zugriff.get_instrument_liste(\"Tachymeter\")"
],
"id": "e376b4534297016c",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Das Instrument Trimble S9 ist bereits in der Datenbank vorhanden.\n",
"Es hat die ID 1\n"
]
},
{
"data": {
"text/plain": [
"[(1, 'Tachymeter', 'Trimble S9')]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"execution_count": 10
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:36:41.613049Z",
"start_time": "2025-12-19T13:36:41.606119Z"
}
},
"cell_type": "code",
"source": [
"#Importieren der apriori Genauigkeitsinformationen\n",
"#Zulässige Beobachtungsarten = \"Tachymeter_Richtung\", \"Tachymeter_Strecke\"\n",
"# Wenn Beobachtungsart = \"Tachymeter_Richtung\" --> Übergabe in Milligon und nur Stabw_apriori_konst\n",
"# Wenn Beobachtungsart = \"Tachymeter_Strecke\" --> Übergabe Stabw_apriori_konst in Millimeter und Stabw_apriori_streckenprop in ppm\n",
"\n",
"importlib.reload(Datenbank)\n",
"db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)\n",
"importlib.reload(Berechnungen)\n",
"\n",
"db_zugriff.set_genauigkeiten(1, \"Tachymeter_Richtung\", 0.15)\n",
"db_zugriff.set_genauigkeiten(1, \"Tachymeter_Strecke\", 0.8, 1)"
],
"id": "97e24245ce3398a2",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Die Genauigkeitsangabe ist bereits in der Datenbank vorhanden.\n",
"Die Genauigkeitsangabe ist bereits in der Datenbank vorhanden.\n"
]
}
],
"execution_count": 11
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:36:41.626657Z",
"start_time": "2025-12-19T13:36:41.621778Z"
}
},
"cell_type": "code",
"source": [
"# Importieren der tachymetrischen Beobachtungen\n",
"importlib.reload(Import)\n",
"imp = Import.Import(pfad_datenbank)\n",
"\n",
"pfad_datei_tachymeterbeobachtungen = r\"Daten\\campsnetz_beobachtungen_bereinigt.csv\"\n",
"\n",
"imp.import_beobachtungen_tachymeter(pfad_datei_tachymeterbeobachtungen, 1)"
],
"id": "509e462917e98145",
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Der Import wurde abgebrochen, weil die Beobachtungen aus der Datei Daten\\campsnetz_beobachtungen_bereinigt.csv bereits in der Datenbank vorhanden sind.\n"
]
}
],
"execution_count": 12
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:37:43.474123Z",
"start_time": "2025-12-19T13:36:41.637138Z"
}
},
"cell_type": "code",
"source": [
"# Jacobimatrix aufstellen\n",
"importlib.reload(Datenbank)\n",
"db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)\n",
"\n",
"# Parameter des GRS80-ellipsoids (Bezugsellipsoid des ETRS89 / DREF 91 (2025)\n",
"# ToDo: Quelle mit möglichst genauen Parametern heraussuchen!\n",
"a = 6378137.0 #m\n",
"b = 63567552.314 #m\n",
"\n",
"importlib.reload(Funktionales_Modell)\n",
"fm = Funktionales_Modell.FunktionalesModell(pfad_datenbank, a, b)\n",
"\n",
"#db_zugriff.get_beobachtungen_id_standpunkt_zielpunkt(\"tachymeter_distanz\")\n",
"Jacobimatrix_symbolisch = fm.jacobi_matrix_symbolisch()[0]\n",
"Jacobimatrix_symbolisch_liste_unbekannte = fm.jacobi_matrix_symbolisch()[1]\n",
"Jacobimatrix_symbolisch_liste_beobachtungsvektor = fm.jacobi_matrix_symbolisch()[2]"
],
"id": "d38939f7108e1788",
"outputs": [],
"execution_count": 13
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:37:58.126150Z",
"start_time": "2025-12-19T13:37:54.542775Z"
}
},
"cell_type": "code",
"source": [
"importlib.reload(Datenbank)\n",
"db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)\n",
"importlib.reload(Funktionales_Modell)\n",
"fm = Funktionales_Modell.FunktionalesModell(pfad_datenbank, a, b)\n",
"\n",
"A_matrix_numerisch_iteration0 = fm.jacobi_matrix_zahlen_iteration_0(Jacobimatrix_symbolisch, \"naeherung_us\", Jacobimatrix_symbolisch_liste_unbekannte, Jacobimatrix_symbolisch_liste_beobachtungsvektor)"
],
"id": "4a0b1790c65d59ee",
"outputs": [],
"execution_count": 14
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:37:58.304793Z",
"start_time": "2025-12-19T13:37:58.162944Z"
}
},
"cell_type": "code",
"source": [
"importlib.reload(Funktionales_Modell)\n",
"fm = Funktionales_Modell.FunktionalesModell(pfad_datenbank, a, b)\n",
"\n",
"beobachtungsvektor_numerisch = fm.beobachtungsvektor_numerisch(Jacobimatrix_symbolisch_liste_beobachtungsvektor)"
],
"id": "38f698b6694bebe7",
"outputs": [],
"execution_count": 15
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:37:58.845527Z",
"start_time": "2025-12-19T13:37:58.310652Z"
}
},
"cell_type": "code",
"source": [
"importlib.reload(Funktionales_Modell)\n",
"fm = Funktionales_Modell.FunktionalesModell(pfad_datenbank, a, b)\n",
"\n",
"beobachtungsvektor_naeherung_symbolisch = fm.beobachtungsvektor_naeherung_symbolisch(Jacobimatrix_symbolisch_liste_beobachtungsvektor)"
],
"id": "e5cca13bbb6b95c5",
"outputs": [],
"execution_count": 16
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:37:59.060600Z",
"start_time": "2025-12-19T13:37:58.852417Z"
}
},
"cell_type": "code",
"source": [
"importlib.reload(Funktionales_Modell)\n",
"fm = Funktionales_Modell.FunktionalesModell(pfad_datenbank, a, b)\n",
"\n",
"beobachtungsvektor_naeherung_numerisch_iteration0 = fm.beobachtungsvektor_naeherung_numerisch_iteration0(Jacobimatrix_symbolisch_liste_beobachtungsvektor, beobachtungsvektor_naeherung_symbolisch)"
],
"id": "eb0452c52e7afa6b",
"outputs": [],
"execution_count": 17
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:38:24.915807Z",
"start_time": "2025-12-19T13:37:59.069210Z"
}
},
"cell_type": "code",
"source": [
"# Auftstellen der Qll-Matrix\n",
"importlib.reload(Stochastisches_Modell)\n",
"stoch_modell = Stochastisches_Modell.StochastischesModell(A_matrix_numerisch_iteration0.rows)\n",
"\n",
"Qll_matrix_symbolisch = stoch_modell.Qll_symbolisch(pfad_datenbank, Jacobimatrix_symbolisch_liste_beobachtungsvektor)\n",
"Qll_matrix_numerisch = stoch_modell.Qll_numerisch(pfad_datenbank, Qll_matrix_symbolisch,Jacobimatrix_symbolisch_liste_beobachtungsvektor)"
],
"id": "40a3df8fe549c81",
"outputs": [],
"execution_count": 18
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:39:15.843846Z",
"start_time": "2025-12-19T13:39:15.841384Z"
}
},
"cell_type": "code",
"source": "",
"id": "8e2aa544249c9d29",
"outputs": [],
"execution_count": null
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:39:15.851211Z",
"start_time": "2025-12-19T13:39:15.849041Z"
}
},
"cell_type": "code",
"source": "",
"id": "b479d3a946400ff6",
"outputs": [],
"execution_count": null
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:39:15.858171Z",
"start_time": "2025-12-19T13:39:15.856245Z"
}
},
"cell_type": "code",
"source": "",
"id": "5d47e0771b22eb0b",
"outputs": [],
"execution_count": null
},
{
"metadata": {
"ExecuteTime": {
"end_time": "2025-12-19T13:39:16.745343Z",
"start_time": "2025-12-19T13:39:15.863782Z"
}
},
"cell_type": "code",
"source": [
"importlib.reload(Funktionales_Modell)\n",
"fm = Funktionales_Modell.FunktionalesModell(pfad_datenbank, a, b)\n",
"\n",
"importlib.reload(Parameterschaetzung)\n",
"importlib.reload(Stochastisches_Modell)\n",
"\n",
"importlib.reload(Netzqualität_Genauigkeit)\n",
"importlib.reload(Export)\n",
"\n",
"\n",
"stoch_modell = Stochastisches_Modell.StochastischesModell(A_matrix_numerisch_iteration0.rows)\n",
"\n",
"dx = Parameterschaetzung.ausgleichung_global(A_matrix_numerisch_iteration0, fm.berechnung_dl(beobachtungsvektor_numerisch, beobachtungsvektor_naeherung_numerisch_iteration0), stoch_modell)[1]"
],
"id": "f53849ee4757d5e8",
"outputs": [
{
"ename": "ShapeError",
"evalue": "Matrix size mismatch: (1752, 1) + (876, 1).",
"output_type": "error",
"traceback": [
"\u001B[31m---------------------------------------------------------------------------\u001B[39m",
"\u001B[31mShapeError\u001B[39m Traceback (most recent call last)",
"\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[19]\u001B[39m\u001B[32m, line 13\u001B[39m\n\u001B[32m 8\u001B[39m importlib.reload(Export)\n\u001B[32m 11\u001B[39m stoch_modell = Stochastisches_Modell.StochastischesModell(A_matrix_numerisch_iteration0.rows)\n\u001B[32m---> \u001B[39m\u001B[32m13\u001B[39m dx = Parameterschaetzung.ausgleichung_global(A_matrix_numerisch_iteration0, \u001B[43mfm\u001B[49m\u001B[43m.\u001B[49m\u001B[43mberechnung_dl\u001B[49m\u001B[43m(\u001B[49m\u001B[43mbeobachtungsvektor_numerisch\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mbeobachtungsvektor_naeherung_numerisch_iteration0\u001B[49m\u001B[43m)\u001B[49m, stoch_modell)[\u001B[32m1\u001B[39m]\n",
"\u001B[36mFile \u001B[39m\u001B[32m~\\Desktop\\Masterprojekt\\Funktionales_Modell.py:286\u001B[39m, in \u001B[36mFunktionalesModell.berechnung_dl\u001B[39m\u001B[34m(self, beobachtungsvektor_numerisch, beobachtungsvektor_naeherung_numerisch)\u001B[39m\n\u001B[32m 285\u001B[39m \u001B[38;5;28;01mdef\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[34mberechnung_dl\u001B[39m(\u001B[38;5;28mself\u001B[39m, beobachtungsvektor_numerisch, beobachtungsvektor_naeherung_numerisch):\n\u001B[32m--> \u001B[39m\u001B[32m286\u001B[39m dl = \u001B[43mbeobachtungsvektor_numerisch\u001B[49m\u001B[43m \u001B[49m\u001B[43m-\u001B[49m\u001B[43m \u001B[49m\u001B[43mbeobachtungsvektor_naeherung_numerisch\u001B[49m\n\u001B[32m 287\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m dl\n",
"\u001B[36mFile \u001B[39m\u001B[32m~\\Desktop\\Masterprojekt\\.venv\\Lib\\site-packages\\sympy\\core\\decorators.py:118\u001B[39m, in \u001B[36mcall_highest_priority.<locals>.priority_decorator.<locals>.binary_op_wrapper\u001B[39m\u001B[34m(self, other)\u001B[39m\n\u001B[32m 116\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m f \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[32m 117\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m f(\u001B[38;5;28mself\u001B[39m)\n\u001B[32m--> \u001B[39m\u001B[32m118\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mfunc\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mother\u001B[49m\u001B[43m)\u001B[49m\n",
"\u001B[36mFile \u001B[39m\u001B[32m~\\Desktop\\Masterprojekt\\.venv\\Lib\\site-packages\\sympy\\matrices\\matrixbase.py:3045\u001B[39m, in \u001B[36mMatrixBase.__sub__\u001B[39m\u001B[34m(self, a)\u001B[39m\n\u001B[32m 3043\u001B[39m \u001B[38;5;129m@call_highest_priority\u001B[39m(\u001B[33m'\u001B[39m\u001B[33m__rsub__\u001B[39m\u001B[33m'\u001B[39m)\n\u001B[32m 3044\u001B[39m \u001B[38;5;28;01mdef\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[34m__sub__\u001B[39m(\u001B[38;5;28mself\u001B[39m, a):\n\u001B[32m-> \u001B[39m\u001B[32m3045\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m \u001B[49m\u001B[43m+\u001B[49m\u001B[43m \u001B[49m\u001B[43m(\u001B[49m\u001B[43m-\u001B[49m\u001B[43ma\u001B[49m\u001B[43m)\u001B[49m\n",
"\u001B[36mFile \u001B[39m\u001B[32m~\\Desktop\\Masterprojekt\\.venv\\Lib\\site-packages\\sympy\\core\\decorators.py:118\u001B[39m, in \u001B[36mcall_highest_priority.<locals>.priority_decorator.<locals>.binary_op_wrapper\u001B[39m\u001B[34m(self, other)\u001B[39m\n\u001B[32m 116\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m f \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[32m 117\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m f(\u001B[38;5;28mself\u001B[39m)\n\u001B[32m--> \u001B[39m\u001B[32m118\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mfunc\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mother\u001B[49m\u001B[43m)\u001B[49m\n",
"\u001B[36mFile \u001B[39m\u001B[32m~\\Desktop\\Masterprojekt\\.venv\\Lib\\site-packages\\sympy\\matrices\\matrixbase.py:2765\u001B[39m, in \u001B[36mMatrixBase.__add__\u001B[39m\u001B[34m(self, other)\u001B[39m\n\u001B[32m 2762\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mNotImplemented\u001B[39m\n\u001B[32m 2764\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m.shape != other.shape:\n\u001B[32m-> \u001B[39m\u001B[32m2765\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m ShapeError(\u001B[33mf\u001B[39m\u001B[33m\"\u001B[39m\u001B[33mMatrix size mismatch: \u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m.shape\u001B[38;5;132;01m}\u001B[39;00m\u001B[33m + \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mother.shape\u001B[38;5;132;01m}\u001B[39;00m\u001B[33m.\u001B[39m\u001B[33m\"\u001B[39m)\n\u001B[32m 2767\u001B[39m \u001B[38;5;66;03m# Unify matrix types\u001B[39;00m\n\u001B[32m 2768\u001B[39m a, b = \u001B[38;5;28mself\u001B[39m, other\n",
"\u001B[31mShapeError\u001B[39m: Matrix size mismatch: (1752, 1) + (876, 1)."
]
}
],
"execution_count": 19
},
{
"metadata": {},
"cell_type": "code",
"source": [
"# Von Fabian\n",
"\n",
"importlib.reload(Funktionales_Modell)\n",
"fm = Funktionales_Modell.FunktionalesModell(pfad_datenbank, a, b)\n",
"importlib.reload(Export)\n",
"importlib.reload(Datenbank)\n",
"\n",
"unbekanntenvektor_symbolisch = (fm.unbekanntenvektor_symbolisch(Jacobimatrix_symbolisch_liste_unbekannte))\n",
"unbekanntenvektor_numerisch_iteration0 = fm.unbekanntenvektor_numerisch(Jacobimatrix_symbolisch_liste_unbekannte, unbekanntenvektor_symbolisch)\n",
"print(unbekanntenvektor_numerisch_iteration0)\n",
"print(\"-----\")\n",
"unbekanntenvektor_numerisch = fm.unbekanntenvektor_numerisch(Jacobimatrix_symbolisch_liste_unbekannte, unbekanntenvektor_symbolisch, dx, unbekanntenvektor_numerisch_iteration0)\n",
"print(unbekanntenvektor_numerisch)"
],
"id": "122dca077d1d267c",
"outputs": [],
"execution_count": null
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}