{ "cells": [ { "cell_type": "code", "id": "initial_id", "metadata": { "collapsed": true, "ExecuteTime": { "end_time": "2025-12-22T12:12:31.059228Z", "start_time": "2025-12-22T12:12:30.193257Z" } }, "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-22T12:12:31.130070Z", "start_time": "2025-12-22T12:12:31.069067Z" } }, "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-22T12:12:31.154687Z", "start_time": "2025-12-22T12:12:31.135084Z" } }, "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 der Näherungskoordinaten wurde erfolgreich abgeschlossen\n" ] } ], "execution_count": 3 }, { "metadata": { "ExecuteTime": { "end_time": "2025-12-22T12:12:31.178210Z", "start_time": "2025-12-22T12:12:31.161767Z" } }, "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-22T12:12:31.189780Z", "start_time": "2025-12-22T12:12:31.184776Z" } }, "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": [ "{}\n" ] } ], "execution_count": 5 }, { "metadata": { "ExecuteTime": { "end_time": "2025-12-22T12:12:31.218587Z", "start_time": "2025-12-22T12:12:31.198190Z" } }, "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-22T12:12:33.276390Z", "start_time": "2025-12-22T12:12:31.224907Z" } }, "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: 6\n", "min/mean/max: 0.9679784506116116 1.0266943302085056 1.1686304823956102\n", "std: 0.07473161831852519\n", "S_loc: Matrix([[925.528400000000], [1883.39492500000], [100.005775000000]])\n", "S_ecef: Matrix([[3794804.36275000], [546844.659750000], [5080056.51350000]])\n", "Delta: Matrix([[3.79388e+6], [544961.], [5.07996e+6]])\n", "10001 0.0936\n", "10002 0.0873\n", "10044 0.0527\n", "10037 0.0477\n", "Anzahl gemeinsame Punkte: 4\n", "\n", "Erste Zielpunkte:\n", "10001 [3794874.984, 546741.752, 5080029.99]\n", "10002 [3794842.533, 546726.907, 5080071.133]\n", "10037 [3794774.148, 546955.423, 5080040.52]\n", "10044 [3794725.786, 546954.557, 5080084.411]\n", "\n", "Erste Ausgangspunkte:\n", "10001 [833.9439, 1978.3737, 99.8946]\n", "10002 [875.9684, 1998.5174, 99.5867]\n", "10037 [966.2253, 1774.2051, 99.9957]\n", "10044 [1025.976, 1782.4835, 100.5461]\n", "min/mean/max: 0.9679784506116116 1.0266943302085056 1.1686304823956102\n", "R ist Orthonormal!\n", "Iteration Nr.1 abgeschlossen\n", "Matrix([[-85.7], [-61.5], [188.], [-0.246], [-0.821], [0.00489], [0.406]])\n", "Iteration Nr.2 abgeschlossen\n", "Matrix([[241.], [-94.3], [-151.], [0.191], [-0.153], [-0.109], [0.120]])\n", "Iteration Nr.3 abgeschlossen\n", "Matrix([[5.71], [5.03], [0.723], [0.00670], [0.0401], [0.0180], [-0.0355]])\n", "Iteration Nr.4 abgeschlossen\n", "Matrix([[-2.83], [-1.48], [-2.88], [0.000657], [-0.00186], [0.00135], [0.00102]])\n", "Iteration Nr.5 abgeschlossen\n", "Matrix([[0.441], [0.196], [0.417], [6.90e-8], [0.000310], [-0.000257], [-0.000169]])\n", "Iteration Nr.6 abgeschlossen\n", "Matrix([[-0.0781], [-0.0348], [-0.0729], [1.91e-9], [-5.48e-5], [4.49e-5], [3.00e-5]])\n", "Iteration Nr.7 abgeschlossen\n", "Matrix([[0.0137], [0.00611], [0.0128], [5.92e-11], [9.61e-6], [-7.89e-6], [-5.25e-6]])\n", "Iteration Nr.8 abgeschlossen\n", "Matrix([[-0.00241], [-0.00107], [-0.00225], [1.35e-12], [-1.69e-6], [1.39e-6], [9.23e-7]])\n", "Iteration Nr.9 abgeschlossen\n", "Matrix([[0.000423], [0.000188], [0.000395], [-4.72e-13], [2.96e-7], [-2.43e-7], [-1.62e-7]])\n", "Iteration Nr.10 abgeschlossen\n", "Matrix([[-7.42e-5], [-3.31e-5], [-6.95e-5], [1.10e-12], [-5.21e-8], [4.27e-8], [2.85e-8]])\n", "Iteration Nr.11 abgeschlossen\n", "Matrix([[1.30e-5], [5.82e-6], [1.22e-5], [-3.48e-13], [9.15e-9], [-7.51e-9], [-5.00e-9]])\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]])\n", "Matrix([[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]])\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", "10037: 3794770.848, 546952.857, 5080042.910\n", "10044: 3794727.668, 546958.039, 5080082.867\n", "Streckendifferenzen:\n", "[4.899982, 5.418896, 4.814927, 4.248968]\n", "\n", "Differenz Schwerpunkt (Vektor):\n", "Matrix([[-4.66e-10], [-2.91e-11], [-4.66e-10]])\n", "Betrag der Schwerpunkt-Differenz:\n", "0.000m\n" ] } ], "execution_count": 7 }, { "metadata": { "ExecuteTime": { "end_time": "2025-12-22T12:12:33.476425Z", "start_time": "2025-12-22T12:12:33.438250Z" } }, "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": [ "{'10003': Matrix([\n", "[3794820.51175889],\n", "[546738.121545569],\n", "[5080085.66027136]]), '10004': Matrix([\n", "[3794787.68039096],\n", "[546724.355539902],\n", "[5080122.57197924]]), '10005': Matrix([\n", "[3794778.52744143],\n", "[546733.440239574],\n", "[5080127.82709672]]), '10006': Matrix([\n", "[3794754.48961774],\n", "[546723.992131817],\n", "[ 5080154.6491784]]), '10007': Matrix([\n", "[ 3794810.10603],\n", "[546761.510609237],\n", "[ 5080086.0020765]]), '10008': Matrix([\n", "[3794768.08506589],\n", "[546757.433496855],\n", "[ 5080127.7145515]]), '10009': Matrix([\n", "[3794753.66298807],\n", "[546753.936763795],\n", "[ 5080143.3866772]]), '10010': Matrix([\n", "[3794744.05628981],\n", "[546780.742811981],\n", "[ 5080141.1636738]]), '10011': Matrix([\n", "[3794863.58049222],\n", "[546820.559672293],\n", "[5080009.68904121]]), '10012': Matrix([\n", "[3794827.81056398],\n", "[ 546801.06957277],\n", "[ 5080052.2764653]]), '10013': Matrix([\n", "[3794822.93179095],\n", "[ 546821.6420314],\n", "[5080048.14190298]]), '10014': Matrix([\n", "[3794813.94866435],\n", "[546809.911071387],\n", "[5080061.83762516]]), '10015': Matrix([\n", "[3794815.71134214],\n", "[ 546792.41022388],\n", "[5080067.67633712]]), '10016': Matrix([\n", "[3794804.40667566],\n", "[546789.942078133],\n", "[5080079.63649543]]), '10017': Matrix([\n", "[ 3794800.4139096],\n", "[546829.880936662],\n", "[5080066.46875977]]), '10018': Matrix([\n", "[3794745.61855632],\n", "[546808.043262064],\n", "[5080128.60455588]]), '10019': Matrix([\n", "[3794777.76781701],\n", "[546835.162107796],\n", "[5080085.96045632]]), '10020': Matrix([\n", "[3794761.92015664],\n", "[546838.977847251],\n", "[5080100.04765691]]), '10021': Matrix([\n", "[3794756.00797839],\n", "[546839.303246531],\n", "[5080105.58935921]]), '10022': Matrix([\n", "[3794757.61562001],\n", "[546846.316729031],\n", "[5080100.89762826]]), '10023': Matrix([\n", "[3794759.48549621],\n", "[546851.850918009],\n", "[5080096.94440005]]), '10024': Matrix([\n", "[3794751.73730327],\n", "[546861.360519194],\n", "[ 5080100.294253]]), '10025': Matrix([\n", "[3794752.15498749],\n", "[546874.781453645],\n", "[5080094.37790759]]), '10026': Matrix([\n", "[3794736.30003562],\n", "[546836.826883513],\n", "[5080125.44708045]]), '10027': Matrix([\n", "[3794736.96000806],\n", "[546879.602518143],\n", "[5080106.77720197]]), '10028': Matrix([\n", "[3794854.42558972],\n", "[546891.260466949],\n", "[5079988.55485218]]), '10029': Matrix([\n", "[3794813.64192358],\n", "[546903.641106338],\n", "[5080022.06775364]]), '10030': Matrix([\n", "[3794814.74562118],\n", "[546890.757518605],\n", "[5080026.46489654]]), '10031': Matrix([\n", "[3794794.79058969],\n", "[ 546872.71612651],\n", "[5080053.61063449]]), '10032': Matrix([\n", "[3794781.55115635],\n", "[546884.895506778],\n", "[5080060.97408994]]), '10033': Matrix([\n", "[3794775.28175346],\n", "[546873.334968714],\n", "[5080072.04785473]]), '10034': Matrix([\n", "[3794847.88993759],\n", "[546944.410223245],\n", "[5079972.30963836]]), '10035': Matrix([\n", "[3794811.83097489],\n", "[546946.723835994],\n", "[5080006.35848061]]), '10036': Matrix([\n", "[3794783.39377131],\n", "[546958.852789368],\n", "[5080028.37568321]]), '10038': Matrix([\n", "[3794777.81558632],\n", "[546923.349922253],\n", "[5080048.80883121]]), '10039': Matrix([\n", "[3794776.73400961],\n", "[546909.821579998],\n", "[5080055.59246981]]), '10040': Matrix([\n", "[3794753.10534012],\n", "[546951.926584076],\n", "[5080060.54410929]]), '10041': Matrix([\n", "[3794752.59165627],\n", "[546924.173873934],\n", "[5080073.19205182]]), '10042': Matrix([\n", "[ 3794734.5543882],\n", "[546937.377006367],\n", "[ 5080084.7094339]]), '10043': Matrix([\n", "[3794725.01661161],\n", "[546922.581244633],\n", "[5080100.03703997]]), '10045': Matrix([\n", "[3794840.94124498],\n", "[546995.029310828],\n", "[5079957.56668261]]), '10046': Matrix([\n", "[3794809.35039725],\n", "[546994.054056815],\n", "[5079987.99204381]]), '10047': Matrix([\n", "[ 3794795.4368399],\n", "[547001.195960895],\n", "[5079998.39175117]]), '10048': Matrix([\n", "[3794775.20666754],\n", "[ 547003.76019026],\n", "[5080016.84921095]]), '10049': Matrix([\n", "[3794754.91370463],\n", "[ 547010.69453884],\n", "[5080033.75043702]]), '10050': Matrix([\n", "[3794737.22036781],\n", "[547005.884569236],\n", "[ 5080052.9475627]]), '10051': Matrix([\n", "[3794738.87891047],\n", "[546983.860512271],\n", "[5080060.85649738]]), '10052': Matrix([\n", "[3794717.92069948],\n", "[ 546983.44591806],\n", "[5080081.08810058]]), '10053': Matrix([\n", "[3794720.08539271],\n", "[547013.409039769],\n", "[ 5080066.3657566]]), '10054': Matrix([\n", "[3794843.61283972],\n", "[547056.002453676],\n", "[5079929.24030295]]), '10055': Matrix([\n", "[ 3794798.3440481],\n", "[547058.886596772],\n", "[5079971.04209003]]), '10056': Matrix([\n", "[3794785.08794943],\n", "[547072.889218702],\n", "[5079977.73770134]]), '10057': Matrix([\n", "[3794764.13960343],\n", "[ 547061.72963122],\n", "[5080002.94483388]]), '10058': Matrix([\n", "[3794731.98341087],\n", "[547079.121468109],\n", "[5080026.61270465]]), '10059': Matrix([\n", "[3794706.22500851],\n", "[547072.229773112],\n", "[5080054.43002136]])}\n" ] } ], "execution_count": 8 }, { "metadata": { "ExecuteTime": { "end_time": "2025-12-22T12:12:33.503470Z", "start_time": "2025-12-22T12:12:33.482987Z" } }, "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-22T12:12:33.532541Z", "start_time": "2025-12-22T12:12:33.509289Z" } }, "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 wurde erfolgreich hinzugefügt.\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-22T12:12:33.594115Z", "start_time": "2025-12-22T12:12:33.538997Z" } }, "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)\n", "db_zugriff.set_genauigkeiten(1, \"Tachymeter_Zenitwinkel\", 0.15)" ], "id": "97e24245ce3398a2", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Die Genauigkeitsangabe für die Beobachtungsart Tachymeter_Richtung des Instrumentes Trimble S9 wurde erfolgreich hinzugefügt.\n", "Die Genauigkeitsangabe für die Beobachtungsart Tachymeter_Strecke des Instrumentes Trimble S9 wurde erfolgreich hinzugefügt.\n", "Die Genauigkeitsangabe für die Beobachtungsart Tachymeter_Zenitwinkel des Instrumentes Trimble S9 wurde erfolgreich hinzugefügt.\n" ] } ], "execution_count": 11 }, { "metadata": { "ExecuteTime": { "end_time": "2025-12-22T12:12:33.629375Z", "start_time": "2025-12-22T12:12:33.598498Z" } }, "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 der Datei Daten\\campsnetz_beobachtungen_bereinigt.csv wurde erfolgreich abgeschlossen.\n" ] } ], "execution_count": 12 }, { "metadata": { "ExecuteTime": { "end_time": "2025-12-22T12:15:32.791902Z", "start_time": "2025-12-22T12:12:33.640234Z" } }, "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-22T12:16:56.096391Z", "start_time": "2025-12-22T12:16:47.975473Z" } }, "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-22T12:16:56.199954Z", "start_time": "2025-12-22T12:16:56.102093Z" } }, "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-22T12:17:00.325725Z", "start_time": "2025-12-22T12:16:56.204415Z" } }, "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-22T12:18:24.352387Z", "start_time": "2025-12-22T12:18:23.230779Z" } }, "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-22T13:26:11.574790Z", "start_time": "2025-12-22T13:25:15.541036Z" } }, "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": 20 }, { "metadata": {}, "cell_type": "code", "source": "", "id": "8e2aa544249c9d29", "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "code", "source": "", "id": "b479d3a946400ff6", "outputs": [], "execution_count": null }, { "metadata": {}, "cell_type": "code", "source": "", "id": "5d47e0771b22eb0b", "outputs": [], "execution_count": null }, { "metadata": { "ExecuteTime": { "end_time": "2025-12-22T13:30:29.015893Z", "start_time": "2025-12-22T13:30:28.726240Z" } }, "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": "NameError", "evalue": "name 'liste_beobachtungsvektor_symbolisch' is not defined", "output_type": "error", "traceback": [ "\u001B[31m---------------------------------------------------------------------------\u001B[39m", "\u001B[31mNameError\u001B[39m Traceback (most recent call last)", "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[21]\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:636\u001B[39m, in \u001B[36mFunktionalesModell.berechnung_dl\u001B[39m\u001B[34m(self, beobachtungsvektor_numerisch, beobachtungsvektor_naeherung_numerisch)\u001B[39m\n\u001B[32m 634\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 635\u001B[39m dl = beobachtungsvektor_numerisch - beobachtungsvektor_naeherung_numerisch\n\u001B[32m--> \u001B[39m\u001B[32m636\u001B[39m \u001B[38;5;28;01mfor\u001B[39;00m i, name \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28menumerate\u001B[39m(\u001B[43mliste_beobachtungsvektor_symbolisch\u001B[49m):\n\u001B[32m 637\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m \u001B[33m\"\u001B[39m\u001B[33m_R_\u001B[39m\u001B[33m\"\u001B[39m \u001B[38;5;129;01min\u001B[39;00m name:\n\u001B[32m 638\u001B[39m dl[i] = sp.atan2(sp.sin(dl[i]), sp.cos(dl[i])) \u001B[38;5;66;03m# wrap auf (-pi, pi]\u001B[39;00m\n", "\u001B[31mNameError\u001B[39m: name 'liste_beobachtungsvektor_symbolisch' is not defined" ] } ], "execution_count": 21 }, { "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 }