From 30f1104b6dd5288bec28625e5409fd5d4dfd9363 Mon Sep 17 00:00:00 2001 From: fabia Date: Mon, 29 Dec 2025 18:24:24 +0100 Subject: [PATCH] Import Nivellement --- Campusnetz.ipynb | 898 ++++++++++++++++++++++++++++++++++++++++++++--- Datenbank.py | 43 +++ 2 files changed, 885 insertions(+), 56 deletions(-) diff --git a/Campusnetz.ipynb b/Campusnetz.ipynb index e2c3705..13a1d57 100644 --- a/Campusnetz.ipynb +++ b/Campusnetz.ipynb @@ -1,10 +1,13 @@ { "cells": [ { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:08.323819Z", + "start_time": "2025-12-29T17:23:08.301369Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "source": [ "# Hier werden alle verwendeten Pythonmodule importiert\n", "import Datenbank\n", @@ -21,13 +24,18 @@ "import Netzqualität_Genauigkeit\n", "import Datumsfestlegung" ], - "id": "2bc687b1b4adb7bd" + "id": "2bc687b1b4adb7bd", + "outputs": [], + "execution_count": 21 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:09.598055Z", + "start_time": "2025-12-29T17:23:09.569636Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "source": [ "importlib.reload(Datenbank)\n", "importlib.reload(Import)\n", @@ -39,51 +47,470 @@ "imp = Import.Import(pfad_datenbank)\n", "db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)" ], - "id": "57fcd841405b7866" + "id": "57fcd841405b7866", + "outputs": [], + "execution_count": 22 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:11.981126Z", + "start_time": "2025-12-29T17:23:11.948522Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "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": "6ecde908841d1212" + "id": "6ecde908841d1212", + "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": 23 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:12.502821Z", + "start_time": "2025-12-29T17:23:12.479346Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "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": "daefb156198b46dc" + "id": "daefb156198b46dc", + "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": 24 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:12.963787Z", + "start_time": "2025-12-29T17:23:12.946675Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "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": "ab62308d8c665e58" + "id": "ab62308d8c665e58", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'10009': Matrix([\n", + "[3794767.4719546097],\n", + "[ 546740.0869962516],\n", + "[ 5080165.952124462]]), '10006': Matrix([\n", + "[3794766.3557482935],\n", + "[ 546707.6385009313],\n", + "[5080169.7334700795]]), '10010': Matrix([\n", + "[3794758.6366199246],\n", + "[ 546767.6665772106],\n", + "[5080169.4644999765]]), '10018': Matrix([\n", + "[3794762.2481267513],\n", + "[ 546797.6912507551],\n", + "[ 5080163.980380166]]), '10008': Matrix([\n", + "[3794783.8581],\n", + "[ 546746.6347],\n", + "[5080152.7404]]), '10005': Matrix([\n", + "[3794793.841662743],\n", + "[546722.3209011297],\n", + "[5080147.930942906]]), '10003': Matrix([\n", + "[3794841.051609108],\n", + "[546735.1152754558],\n", + "[5080111.543399332]]), '10004': Matrix([\n", + "[3794803.4594055074],\n", + "[ 546714.1406417021],\n", + "[ 5080141.382390101]]), '10007': Matrix([\n", + "[3794831.046531049],\n", + "[546758.7254701178],\n", + "[5080116.663324944]]), '10001': Matrix([\n", + "[3794901.5252],\n", + "[ 546745.559],\n", + "[5080065.7672]]), '10002': Matrix([\n", + "[3794866.9711],\n", + "[ 546729.5958],\n", + "[5080092.6364]]), '10016': Matrix([\n", + "[3794826.658374741],\n", + "[546788.7275390101],\n", + "[5080116.868237535]]), '10011': Matrix([\n", + "[3794894.922579663],\n", + "[546833.1159754294],\n", + "[5080061.151341954]]), '10026': Matrix([\n", + "[3794753.8595],\n", + "[ 546827.4296],\n", + "[5080167.0938]]), '10027': Matrix([\n", + "[3794757.591261769],\n", + "[546874.3314003296],\n", + "[5080159.317534195]]), '10043': Matrix([\n", + "[3794747.2737986287],\n", + "[ 546919.1497828952],\n", + "[ 5080162.149716094]]), '10044': Matrix([\n", + "[3794752.6696],\n", + "[ 546958.3218],\n", + "[5080154.2579]]), '10021': Matrix([\n", + "[3794776.0295716925],\n", + "[ 546833.7406948799],\n", + "[ 5080150.012973846]]), '10020': Matrix([\n", + "[ 3794782.610580881],\n", + "[ 546834.470509102],\n", + "[5080145.0361413695]]), '10024': Matrix([\n", + "[3794772.816135807],\n", + "[ 546857.095708699],\n", + "[5080149.834714163]]), '10025': Matrix([\n", + "[3794774.2085619094],\n", + "[ 546871.8107307912],\n", + "[ 5080147.359175114]]), '10022': Matrix([\n", + "[3794778.3371531744],\n", + "[ 546841.7501872958],\n", + "[ 5080147.275074134]]), '10023': Matrix([\n", + "[3794780.7952114563],\n", + "[ 546848.1012091675],\n", + "[ 5080144.924922213]]), '10019': Matrix([\n", + "[3794800.0946706245],\n", + "[ 546833.3239614451],\n", + "[ 5080131.724532257]]), '10033': Matrix([\n", + "[3794800.0160474544],\n", + "[ 546874.6524563388],\n", + "[ 5080127.204744104]]), '10017': Matrix([\n", + "[3794825.016154114],\n", + "[546831.6998861503],\n", + "[5080113.374792286]]), '10052': Matrix([\n", + "[3794743.6262089056],\n", + "[ 546984.415934838],\n", + "[ 5080157.831166813]]), '10042': Matrix([\n", + "[ 3794758.957179171],\n", + "[ 546937.0599021759],\n", + "[5080151.6103044115]]), '10053': Matrix([\n", + "[ 3794748.14608301],\n", + "[547017.5748381803],\n", + "[5080150.930072506]]), '10037': Matrix([\n", + "[3794800.5693],\n", + "[ 546960.7477],\n", + "[ 5080117.665]]), '10040': Matrix([\n", + "[3794780.720877459],\n", + "[546956.4249913145],\n", + "[5080133.161471092]]), '10041': Matrix([\n", + "[3794778.153328699],\n", + "[ 546925.877928891],\n", + "[5080138.722313838]]), '10038': Matrix([\n", + "[3794806.3233483736],\n", + "[ 546929.7308726012],\n", + "[ 5080116.89880491]]), '10051': Matrix([\n", + "[3794767.0574626415],\n", + "[ 546988.6993708528],\n", + "[ 5080139.997874675]]), '10036': Matrix([\n", + "[3794815.0546409036],\n", + "[ 546969.5966706082],\n", + "[ 5080106.064114862]]), '10035': Matrix([\n", + "[3794845.948751911],\n", + "[ 546961.512678588],\n", + "[5080084.087510971]]), '10039': Matrix([\n", + "[3794804.1623731344],\n", + "[ 546914.7316360716],\n", + "[ 5080120.139242563]]), '10059': Matrix([\n", + "[3794736.9649],\n", + "[ 547079.4678],\n", + "[5080152.3224]]), '10050': Matrix([\n", + "[3794766.7719544796],\n", + "[ 547012.5266236273],\n", + "[ 5080137.484970744]]), '10013': Matrix([\n", + "[3794849.6087244693],\n", + "[ 546826.8685540904],\n", + "[ 5080095.43002485]]), '10028': Matrix([\n", + "[3794889.7348],\n", + "[ 546908.7636],\n", + "[5080056.9381]]), '10012': Matrix([\n", + "[3794853.6002710722],\n", + "[ 546805.2364847381],\n", + "[ 5080094.889461209]]), '10014': Matrix([\n", + "[3794838.7464],\n", + "[ 546812.3658],\n", + "[ 5080105.2]]), '10031': Matrix([\n", + "[3794821.7594477106],\n", + "[ 546877.5480584177],\n", + "[ 5080110.746046175]]), '10015': Matrix([\n", + "[3794839.4650256806],\n", + "[ 546793.5165545414],\n", + "[5080106.7712153485]]), '10032': Matrix([\n", + "[3794807.848210704],\n", + "[546888.4861254627],\n", + "[5080119.745908576]]), '10030': Matrix([\n", + "[3794845.353156385],\n", + "[546901.0274418414],\n", + "[5080090.356531718]]), '10029': Matrix([\n", + "[3794845.026354165],\n", + "[546914.9167077399],\n", + "[5080089.099946169]]), '10034': Matrix([\n", + "[3794886.104894752],\n", + "[546965.6987415539],\n", + "[ 5080053.40592357]]), '10045': Matrix([\n", + "[3794881.900452307],\n", + "[547019.7835874384],\n", + "[5080050.715777841]]), '10049': Matrix([\n", + "[3794786.8907962884],\n", + "[ 547021.0765699627],\n", + "[ 5080121.444681106]]), '10048': Matrix([\n", + "[3794809.106679632],\n", + "[547017.3023106218],\n", + "[5080105.014391199]]), '10047': Matrix([\n", + "[3794831.5349817923],\n", + "[ 547018.2393882351],\n", + "[ 5080088.124038595]]), '10046': Matrix([\n", + "[3794846.5803718665],\n", + "[ 547012.9971156706],\n", + "[ 5080077.440420756]]), '10057': Matrix([\n", + "[3794800.819370702],\n", + "[ 547078.671611169],\n", + "[ 5080104.57270624]]), '10055': Matrix([\n", + "[3794838.851977278],\n", + "[ 547081.903863645],\n", + "[5080075.698247853]]), '10054': Matrix([\n", + "[3794889.0494],\n", + "[ 547086.9874],\n", + "[5080038.1528]]), '10058': Matrix([\n", + "[3794766.1088143717],\n", + "[ 547091.7542871874],\n", + "[ 5080129.120881729]]), '10056': Matrix([\n", + "[3794825.041003442],\n", + "[547094.8115741647],\n", + "[5080084.488768324]]), '0645': Matrix([\n", + "[3793994.4529],\n", + "[ 495758.0093],\n", + "[5085958.2047]]), '0648': Matrix([\n", + "[3762551.5682],\n", + "[ 538424.8576],\n", + "[5104809.1503]]), '0656': Matrix([\n", + "[3794838.5802],\n", + "[ 546995.3112],\n", + "[5080116.5503]]), '0995': Matrix([\n", + "[3794519.9177],\n", + "[ 588539.9138],\n", + "[5075743.9332]]), '1675': Matrix([\n", + "[3813621.0427],\n", + "[ 566004.8947],\n", + "[ 5064056.93]]), 'ESTE': Matrix([\n", + "[3816914.711],\n", + "[ 507636.812],\n", + "[5067733.467]]), 'GNA2': Matrix([\n", + "[3767530.6335],\n", + "[ 597990.0978],\n", + "[5094563.5073]])}\n" + ] + } + ], + "execution_count": 25 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:13.421388Z", + "start_time": "2025-12-29T17:23:13.407138Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "source": [ "importlib.reload(Import)\n", "imp = Import.Import(pfad_datenbank)\n", @@ -94,13 +521,29 @@ "\n", "imp.import_koordinaten_gnss(pfad_koordinaten_gnss, genauigkeit_sapos_referenzstationen)\n" ], - "id": "b28afe0c64aa59d6" + "id": "b28afe0c64aa59d6", + "outputs": [ + { + "data": { + "text/plain": [ + "'Import der Koordinaten aus stationärem GNSS abgeschlossen.'" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 26 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:13.951805Z", + "start_time": "2025-12-29T17:23:13.882301Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "source": [ "# Datumsgebende Koordinaten bestimmen\n", "importlib.reload(Datenbank)\n", @@ -121,13 +564,18 @@ "\n", "db_zugriff.set_datumskoordinaten_to_neupunkte(liste_koordinaten_x, liste_koordinaten_y, liste_koordinaten_z, liste_koordinaten_x_y_z)" ], - "id": "ed9be38e35cfc619" + "id": "ed9be38e35cfc619", + "outputs": [], + "execution_count": 27 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:14.551239Z", + "start_time": "2025-12-29T17:23:14.547868Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "source": [ "# ToDo: Sobald GNSS vorliegend Koordinaten im ETRS89 / DREF 91 (2025) daraus berechnen!\n", "#liste_koordinaten_naeherung_us = {\n", @@ -151,13 +599,18 @@ "#cursor.close()\n", "#con.close()" ], - "id": "efa952a603ad1909" + "id": "efa952a603ad1909", + "outputs": [], + "execution_count": 28 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:35.060270Z", + "start_time": "2025-12-29T17:23:15.051902Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "source": [ "# ToDo: Sobald GNSS-Daten vorliegen und die Berechnungen richtig sind, aufräumen!!!\n", "\n", @@ -246,13 +699,191 @@ "\n", "transformationsparameter = trafos.Helmerttransformation_Euler_Transformationsparameter_berechne()" ], - "id": "ebb18479e06e53ab" + "id": "ebb18479e06e53ab", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "d(p2,p1)= 46.60388451996242\n", + "d(P2,P1)= 46.59145296840883\n", + "m0 ~ 0.999733250743331\n", + "Anzahl Ratios: 1711\n", + "min/mean/max: 0.9966158797615429 0.9999420515348254 1.0007101135088199\n", + "std: 0.0001589676515447617\n", + "S_loc: Matrix([[956.308098305085], [1838.78964237288], [99.9601016949153]])\n", + "S_ecef: Matrix([[3794806.8636068002], [546895.7494793105], [5080119.9940889809]])\n", + "Delta: Matrix([[3.79385e+6], [545057.], [5.08002e+6]])\n", + "10059 0.0006\n", + "10058 0.0004\n", + "10054 0.0004\n", + "10055 0.0003\n", + "10057 0.0003\n", + "10056 0.0002\n", + "10037 0.0002\n", + "10049 0.0002\n", + "10048 0.0001\n", + "10028 0.0001\n", + "10044 0.0001\n", + "10040 0.0001\n", + "10036 0.0001\n", + "10047 0.0001\n", + "10014 0.0001\n", + "10046 0.0001\n", + "10026 0.0001\n", + "10050 0.0001\n", + "10029 0.0001\n", + "10051 0.0001\n", + "10030 0.0001\n", + "10035 0.0001\n", + "10045 0.0001\n", + "10038 0.0001\n", + "10034 0.0001\n", + "10012 0.0001\n", + "10052 0.0001\n", + "10001 0.0001\n", + "10053 0.0001\n", + "10041 0.0001\n", + "10039 0.0001\n", + "10013 0.0001\n", + "10042 0.0001\n", + "10018 0.0001\n", + "10031 0.0001\n", + "10032 0.0001\n", + "10043 0.0001\n", + "10008 0.0001\n", + "10002 0.0001\n", + "10011 0.0001\n", + "10017 0.0001\n", + "10027 0.0001\n", + "10033 0.0001\n", + "10024 0.0001\n", + "10025 0.0\n", + "10016 0.0\n", + "10023 0.0\n", + "10019 0.0\n", + "10022 0.0\n", + "10010 0.0\n", + "10020 0.0\n", + "10021 0.0\n", + "10005 0.0\n", + "10015 0.0\n", + "10007 0.0\n", + "10003 0.0\n", + "10004 0.0\n", + "10009 0.0\n", + "10006 0.0\n", + "Anzahl gemeinsame Punkte: 59\n", + "\n", + "Erste Zielpunkte:\n", + "10001 [3794901.5252, 546745.559, 5080065.7672]\n", + "10002 [3794866.9711, 546729.5958, 5080092.6364]\n", + "10003 [3794841.051609108, 546735.1152754558, 5080111.543399332]\n", + "10004 [3794803.4594055074, 546714.1406417021, 5080141.3823901005]\n", + "10005 [3794793.841662743, 546722.3209011297, 5080147.930942906]\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.9966158797615429 0.9999420515348254 1.0007101135088199\n", + "R ist nicht Orthonormal!\n", + "Iteration Nr.1 abgeschlossen\n", + "Matrix([[-12.2], [2.70], [-2.05], [-0.0294], [-0.302], [0.0123], [0.236]])\n", + "Iteration Nr.2 abgeschlossen\n", + "Matrix([[5.71], [-4.20], [-6.60], [0.0294], [-0.00421], [-0.0138], [0.00255]])\n", + "Iteration Nr.3 abgeschlossen\n", + "Matrix([[-0.0369], [0.0586], [0.0315], [2.78e-5], [0.000148], [0.000408], [-0.000136]])\n", + "Iteration Nr.4 abgeschlossen\n", + "Matrix([[-6.79e-5], [4.31e-5], [-7.44e-6], [3.17e-8], [1.62e-8], [2.83e-8], [-5.66e-8]])\n", + "Iteration Nr.5 abgeschlossen\n", + "Matrix([[-8.17e-10], [2.40e-10], [3.50e-10], [-4.99e-15], [6.67e-13], [2.62e-12], [3.47e-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.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", + "x = Matrix([[3.80e+6], [5.49e+5], [5.08e+6], [1.00], [-0.156], [0.627], [3.26]])\n", + "\n", + "l_berechnet_final:\n", + "10001: 3794901.510, 546745.579, 5080065.739\n", + "10002: 3794867.000, 546729.613, 5080092.680\n", + "10003: 3794841.052, 546735.115, 5080111.543\n", + "10004: 3794803.459, 546714.141, 5080141.382\n", + "10005: 3794793.842, 546722.321, 5080147.931\n", + "10006: 3794766.356, 546707.639, 5080169.733\n", + "10007: 3794831.047, 546758.725, 5080116.663\n", + "10008: 3794783.863, 546746.642, 5080152.749\n", + "10009: 3794767.472, 546740.087, 5080165.952\n", + "10010: 3794758.637, 546767.667, 5080169.464\n", + "10011: 3794894.923, 546833.116, 5080061.151\n", + "10012: 3794853.600, 546805.236, 5080094.889\n", + "10013: 3794849.609, 546826.869, 5080095.430\n", + "10014: 3794838.739, 546812.364, 5080105.171\n", + "10015: 3794839.465, 546793.517, 5080106.771\n", + "10016: 3794826.658, 546788.728, 5080116.868\n", + "10017: 3794825.016, 546831.700, 5080113.375\n", + "10018: 3794762.248, 546797.691, 5080163.980\n", + "10019: 3794800.095, 546833.324, 5080131.725\n", + "10020: 3794782.611, 546834.471, 5080145.036\n", + "10021: 3794776.030, 546833.741, 5080150.013\n", + "10022: 3794778.337, 546841.750, 5080147.275\n", + "10023: 3794780.795, 546848.101, 5080144.925\n", + "10024: 3794772.816, 546857.096, 5080149.835\n", + "10025: 3794774.209, 546871.811, 5080147.359\n", + "10026: 3794753.855, 546827.443, 5080167.088\n", + "10027: 3794757.591, 546874.331, 5080159.318\n", + "10028: 3794889.666, 546908.762, 5080056.912\n", + "10029: 3794845.026, 546914.917, 5080089.100\n", + "10030: 3794845.353, 546901.027, 5080090.357\n", + "10031: 3794821.759, 546877.548, 5080110.746\n", + "10032: 3794807.848, 546888.486, 5080119.746\n", + "10033: 3794800.016, 546874.652, 5080127.205\n", + "10034: 3794886.105, 546965.699, 5080053.406\n", + "10035: 3794845.949, 546961.513, 5080084.088\n", + "10036: 3794815.055, 546969.597, 5080106.064\n", + "10037: 3794800.626, 546960.749, 5080117.708\n", + "10038: 3794806.323, 546929.731, 5080116.899\n", + "10039: 3794804.162, 546914.732, 5080120.139\n", + "10040: 3794780.721, 546956.425, 5080133.161\n", + "10041: 3794778.153, 546925.878, 5080138.722\n", + "10042: 3794758.957, 546937.060, 5080151.610\n", + "10043: 3794747.274, 546919.150, 5080162.150\n", + "10044: 3794752.687, 546958.324, 5080154.240\n", + "10045: 3794881.900, 547019.784, 5080050.716\n", + "10046: 3794846.580, 547012.997, 5080077.440\n", + "10047: 3794831.535, 547018.239, 5080088.124\n", + "10048: 3794809.107, 547017.302, 5080105.014\n", + "10049: 3794786.891, 547021.077, 5080121.445\n", + "10050: 3794766.772, 547012.527, 5080137.485\n", + "10051: 3794767.057, 546988.699, 5080139.998\n", + "10052: 3794743.626, 546984.416, 5080157.831\n", + "10053: 3794748.146, 547017.575, 5080150.930\n", + "10054: 3794889.165, 547086.950, 5080038.116\n", + "10055: 3794838.852, 547081.904, 5080075.698\n", + "10056: 3794825.041, 547094.812, 5080084.489\n", + "10057: 3794800.819, 547078.672, 5080104.573\n", + "10058: 3794766.109, 547091.754, 5080129.121\n", + "10059: 3794736.836, 547079.449, 5080152.372\n", + "Streckendifferenzen:\n", + "[0.037854, 0.054708, 0.0, 0.0, 0.0, 0.0, 0.0, 0.012057, 0.0, 0.0, 0.0, 0.0, 0.0, 0.029525, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.015332, 0.0, 0.073156, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.071369, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.025069, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.127425, 0.0, 0.0, 0.0, 0.0, 0.139397]\n", + "\n", + "Differenz Schwerpunkt (Vektor):\n", + "Matrix([[7.73e-11], [9.13e-12], [-5.84e-10]])\n", + "Betrag der Schwerpunkt-Differenz:\n", + "0.000m\n" + ] + } + ], + "execution_count": 29 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:35.237718Z", + "start_time": "2025-12-29T17:23:35.217523Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "source": [ "importlib.reload(Koordinatentransformationen)\n", "trafos = Koordinatentransformationen.Transformationen(pfad_datenbank)\n", @@ -260,26 +891,44 @@ "koordinaten_transformiert = trafos.Helmerttransformation(transformationsparameter)\n", "print(koordinaten_transformiert)" ], - "id": "2d2156381d974d94" + "id": "2d2156381d974d94", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{}\n" + ] + } + ], + "execution_count": 30 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:35.268789Z", + "start_time": "2025-12-29T17:23:35.260619Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "source": [ "importlib.reload(Datenbank)\n", "db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)\n", "\n", "db_zugriff.set_koordinaten(koordinaten_transformiert, \"naeherung_us\")" ], - "id": "5a9e8f24709980d2" + "id": "5a9e8f24709980d2", + "outputs": [], + "execution_count": 31 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:35.286359Z", + "start_time": "2025-12-29T17:23:35.273992Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "source": [ "# Importieren der tachymetrischen Beobachtungen\n", "importlib.reload(Datenbank)\n", @@ -289,13 +938,37 @@ "db_zugriff.set_instrument(\"Tachymeter\", \"Trimble S9\")\n", "db_zugriff.get_instrument_liste(\"Tachymeter\")" ], - "id": "bb4c738edcf9ac6f" + "id": "bb4c738edcf9ac6f", + "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": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 32 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:35.306943Z", + "start_time": "2025-12-29T17:23:35.293026Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "source": [ "#Importieren der apriori Genauigkeitsinformationen\n", "#Zulässige Beobachtungsarten = \"Tachymeter_Richtung\", \"Tachymeter_Strecke\"\n", @@ -310,13 +983,28 @@ "db_zugriff.set_genauigkeiten(1, \"Tachymeter_Strecke\", 0.8, 1)\n", "db_zugriff.set_genauigkeiten(1, \"Tachymeter_Zenitwinkel\", 0.15)" ], - "id": "c2db29680c53f8c4" + "id": "c2db29680c53f8c4", + "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", + "Die Genauigkeitsangabe ist bereits in der Datenbank vorhanden.\n" + ] + } + ], + "execution_count": 33 }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:35.330007Z", + "start_time": "2025-12-29T17:23:35.319025Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "source": [ "# Importieren der tachymetrischen Beobachtungen\n", "importlib.reload(Import)\n", @@ -326,7 +1014,105 @@ "\n", "imp.import_beobachtungen_tachymeter(pfad_datei_tachymeterbeobachtungen, 1)" ], - "id": "3d074282dffbbfd0" + "id": "3d074282dffbbfd0", + "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": 34 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-12-29T17:23:36.093802Z", + "start_time": "2025-12-29T17:23:35.343075Z" + } + }, + "cell_type": "code", + "source": [ + "# Importieren der Normalhöhen der HFP\n", + "importlib.reload(Datenbank)\n", + "db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)\n", + "\n", + "liste_HFP = [(666, 3.891), (812, 3.999), (816, 3.995)]\n", + "\n", + "db_zugriff.set_normalhoehe_hfp(liste_HFP)" + ], + "id": "da3bd8e134a3fe5c", + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'Datenbankzugriff' object has no attribute 'set_normalhoehe_hfp'", + "output_type": "error", + "traceback": [ + "\u001B[31m---------------------------------------------------------------------------\u001B[39m", + "\u001B[31mAttributeError\u001B[39m Traceback (most recent call last)", + "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[35]\u001B[39m\u001B[32m, line 7\u001B[39m\n\u001B[32m 3\u001B[39m db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)\n\u001B[32m 5\u001B[39m liste_HFP = [(\u001B[32m666\u001B[39m, \u001B[32m3.891\u001B[39m), (\u001B[32m812\u001B[39m, \u001B[32m3.999\u001B[39m), (\u001B[32m816\u001B[39m, \u001B[32m3.995\u001B[39m)]\n\u001B[32m----> \u001B[39m\u001B[32m7\u001B[39m \u001B[43mdb_zugriff\u001B[49m\u001B[43m.\u001B[49m\u001B[43mset_normalhoehe_hfp\u001B[49m(liste_HFP)\n", + "\u001B[31mAttributeError\u001B[39m: 'Datenbankzugriff' object has no attribute 'set_normalhoehe_hfp'" + ] + } + ], + "execution_count": 35 + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": [ + "importlib.reload(Datenbank)\n", + "db_zugriff = Datenbank.Datenbankzugriff(pfad_datenbank)\n", + "\n", + "db_zugriff.get_normalhoehe_hfp()" + ], + "id": "ded7bfe9e696a09d" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": [ + "# Nivellement-Beobachtungen Importieren Teil 1\n", + "\n", + "importlib.reload(Import)\n", + "imp = Import.Import(pfad_datenbank)\n", + "dict_punkthoehen_naeherung_niv, liste_punkte_in_db = imp.vorbereitung_import_beobachtungen_nivellement_naeherung_punkthoehen(r\"Daten\\Niv_bereinigt.DAT.csv\", 2)" + ], + "id": "1f61a51b2a7366e7" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": [ + "# Nivellement-Beobachtungen Importieren Teil 2\n", + "\n", + "importlib.reload(Import)\n", + "imp = Import.Import(pfad_datenbank)\n", + "liste_hoehenpunkte_hinzufuegen = ['FH14', 'FH11', 'FH13', 'FH3', 'FH4', 'FH15', 'FH5']\n", + "imp.import_beobachtungen_nivellement_naeherung_punkthoehen(dict_punkthoehen_naeherung_niv, liste_punkte_in_db, liste_hoehenpunkte_hinzufuegen)" + ], + "id": "6c909b9792861b30" + }, + { + "metadata": {}, + "cell_type": "code", + "outputs": [], + "execution_count": null, + "source": [ + "# Nivellement-Beobachtungen Importieren Teil 3\n", + "importlib.reload(Import)\n", + "imp = Import.Import(pfad_datenbank)\n", + "imp.import_beobachtungen_nivellement_RVVR(r\"Daten\\Niv_bereinigt.DAT.csv\", 2)" + ], + "id": "4c06b9c4cd78e7b7" }, { "metadata": {}, diff --git a/Datenbank.py b/Datenbank.py index 9ce4a4f..17f85a5 100644 --- a/Datenbank.py +++ b/Datenbank.py @@ -21,9 +21,11 @@ class Datenbank_anlegen: naeherungx_lh NUMERIC(9,3), naeherungy_lh NUMERIC(7,3), naeherungz_lh NUMERIC(8,3), + naeherungz_lh_niv NUMERIC(8,3), naeherungx_us NUMERIC(9,3), naeherungy_us NUMERIC(7,3), naeherungz_us NUMERIC(8,3), + normalhoehe_hfp NUMERIC(5,3), datumskoordinate_x INTEGER DEFAULT 0, datumskoordinate_y INTEGER DEFAULT 0, datumskoordinate_z INTEGER DEFAULT 0, @@ -55,6 +57,9 @@ class Datenbank_anlegen: gnss_q31 NUMERIC(1, 8), gnss_q32 NUMERIC(1, 8), gnss_q33 NUMERIC(1, 8), + niv_dh NUMERIC(8, 6), + niv_strecke NUMERIC(8, 6), + niv_anz_standpkte INTEGER, dateiname TEXT(200), CONSTRAINT pk_Beobachtungen PRIMARY KEY (beobachtungenID), CONSTRAINT fk_Beobachtungen_Netzpunktesp FOREIGN KEY (punktnummer_sp) REFERENCES Netzpunkte(punktnummer), @@ -317,6 +322,44 @@ class Datenbankzugriff: cursor.close() con.close() + def set_normalhoehe_hfp(self, liste_normalhoehe_hfp): + liste_hfp_in_db = self.get_normalhoehe_hfp() + if liste_normalhoehe_hfp != []: + con = sqlite3.connect(self.pfad_datenbank) + cursor = con.cursor() + liste_punktnummern_in_db = [str(r[0]) for r in cursor.execute( + "SELECT punktnummer FROM Netzpunkte" + ).fetchall()] + ausgaben = [] + for hfp in liste_normalhoehe_hfp: + if str(hfp[0]) in liste_punktnummern_in_db: + cursor.execute("UPDATE Netzpunkte SET normalhoehe_hfp = ? WHERE punktnummer = ?", + (hfp[1], hfp[0]) + ) + ausgaben.append(f"Der HFP {hfp[0]} wurde aktualisiert.") + else: + cursor.execute( + "INSERT INTO Netzpunkte (punktnummer, normalhoehe_hfp) VALUES (?, ?)", + (hfp[0], hfp[1]) + ) + ausgaben.append(f"Der HFP {hfp[0]} wurde neu hinzugefügt.") + + con.commit() + cursor.close() + con.close() + return "\n".join(ausgaben) + else: + return f"Es wurden keine neuen Normalhöhen übergeben. Folgende Normalhöhen sind in der Datenbank enthalten: {liste_hfp_in_db}" + + def get_normalhoehe_hfp(self): + con = sqlite3.connect(self.pfad_datenbank) + cursor = con.cursor() + liste_hfp = cursor.execute("SELECT punktnummer, normalhoehe_hfp FROM Netzpunkte WHERE normalhoehe_hfp IS NOT NULL").fetchall() + cursor.close() + con.close() + return liste_hfp + + def get_instrument_liste(self, typ): con = sqlite3.connect(self.pfad_datenbank) cursor = con.cursor()