From 213d499bc32714daf9c0c773fa76b4c562b1a113 Mon Sep 17 00:00:00 2001 From: fabia Date: Mon, 1 Dec 2025 09:10:43 +0100 Subject: [PATCH] Anlegen neuer Dateien --- Campusnetz.ipynb | 37 ++++ Datenbank.py => Datenbank_alt.py | 96 +++++----- Transformationen.py | 0 main.ipynb | 302 ------------------------------- main_alt.ipynb | 241 ++++++++++++++++++++++++ 5 files changed, 326 insertions(+), 350 deletions(-) create mode 100644 Campusnetz.ipynb rename Datenbank.py => Datenbank_alt.py (97%) create mode 100644 Transformationen.py delete mode 100644 main.ipynb create mode 100644 main_alt.ipynb diff --git a/Campusnetz.ipynb b/Campusnetz.ipynb new file mode 100644 index 0000000..54f657b --- /dev/null +++ b/Campusnetz.ipynb @@ -0,0 +1,37 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "initial_id", + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "" + ] + } + ], + "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 +} diff --git a/Datenbank.py b/Datenbank_alt.py similarity index 97% rename from Datenbank.py rename to Datenbank_alt.py index b4a5b15..f299d85 100644 --- a/Datenbank.py +++ b/Datenbank_alt.py @@ -1,49 +1,49 @@ -import os -import sqlite3 - -class Datenbank_anlegen: - def __init__(self, pfad_datenbank): - self.pfad_datenbank = pfad_datenbank - self.db_anlegen() - - - def db_anlegen(self): - #pfad = r"C:\Users\fabia\OneDrive\Jade HS\Master\MGW2\Masterprojekt_allgemein\Masterprojekt\Programmierung\Campusnetz\Campusnetz.db" - if not os.path.exists(self.pfad_datenbank): - con = sqlite3.connect(self.pfad_datenbank) - cursor = con.cursor() - cursor.executescript("""CREATE TABLE Netzpunkte ( - punktnummer TEXT(10), - naeherungx NUMERIC(9,3), - naeherungy NUMERIC(7,3), - naeherungz NUMERIC(8,3), - CONSTRAINT pk_Netzpunkte PRIMARY KEY (punktnummer) - ); - - CREATE TABLE Standpunkte_Tachymeter ( - spID INTEGER PRIMARY KEY AUTOINCREMENT, - punktnummer TEXT(10), - orientierunghz NUMERIC(2,5), - orientierungv NUMERIC(2,5), - dateipfad TEXT(150), - standpunktsnummer INTEGER, - CONSTRAINT fk_Standpunkte_Tachymeter_Netzpunkte FOREIGN KEY (punktnummer) - REFERENCES Netzpunkte(punktnummer) - ); - - CREATE TABLE Beobachtungen_Tachymeter ( - btID INTEGER PRIMARY KEY AUTOINCREMENT, - spID INTEGER, - punktnummer TEXT(10), - hz NUMERIC(3,5), - v NUMERIC(3,5), - distanz NUMERIC(4,4), - CONSTRAINT fk_Beobachtungen_Tachymeter_Standpunkte_Tachymeter FOREIGN KEY (spID) - REFERENCES Standpunkte_Tachymeter(spID), - CONSTRAINT fk_Beobachtungen_Tachymeter_Netzpunkte FOREIGN KEY (punktnummer) - REFERENCES Netzpunkte(punktnummer) - ); - - """); - con.commit() +import os +import sqlite3 + +class Datenbank_anlegen: + def __init__(self, pfad_datenbank): + self.pfad_datenbank = pfad_datenbank + self.db_anlegen() + + + def db_anlegen(self): + #pfad = r"C:\Users\fabia\OneDrive\Jade HS\Master\MGW2\Masterprojekt_allgemein\Masterprojekt\Programmierung\Campusnetz\Campusnetz.db" + if not os.path.exists(self.pfad_datenbank): + con = sqlite3.connect(self.pfad_datenbank) + cursor = con.cursor() + cursor.executescript("""CREATE TABLE Netzpunkte ( + punktnummer TEXT(10), + naeherungx NUMERIC(9,3), + naeherungy NUMERIC(7,3), + naeherungz NUMERIC(8,3), + CONSTRAINT pk_Netzpunkte PRIMARY KEY (punktnummer) + ); + + CREATE TABLE Standpunkte_Tachymeter ( + spID INTEGER PRIMARY KEY AUTOINCREMENT, + punktnummer TEXT(10), + orientierunghz NUMERIC(2,5), + orientierungv NUMERIC(2,5), + dateipfad TEXT(150), + standpunktsnummer INTEGER, + CONSTRAINT fk_Standpunkte_Tachymeter_Netzpunkte FOREIGN KEY (punktnummer) + REFERENCES Netzpunkte(punktnummer) + ); + + CREATE TABLE Beobachtungen_Tachymeter ( + btID INTEGER PRIMARY KEY AUTOINCREMENT, + spID INTEGER, + punktnummer TEXT(10), + hz NUMERIC(3,5), + v NUMERIC(3,5), + distanz NUMERIC(4,4), + CONSTRAINT fk_Beobachtungen_Tachymeter_Standpunkte_Tachymeter FOREIGN KEY (spID) + REFERENCES Standpunkte_Tachymeter(spID), + CONSTRAINT fk_Beobachtungen_Tachymeter_Netzpunkte FOREIGN KEY (punktnummer) + REFERENCES Netzpunkte(punktnummer) + ); + + """); + con.commit() con.close() \ No newline at end of file diff --git a/Transformationen.py b/Transformationen.py new file mode 100644 index 0000000..e69de29 diff --git a/main.ipynb b/main.ipynb deleted file mode 100644 index b38a84b..0000000 --- a/main.ipynb +++ /dev/null @@ -1,302 +0,0 @@ -{ - "cells": [ - { - "metadata": { - "ExecuteTime": { - "end_time": "2025-10-26T17:16:07.058154Z", - "start_time": "2025-10-26T17:16:07.051215Z" - } - }, - "cell_type": "code", - "source": [ - "import csv\n", - "\n", - "from prompt_toolkit.utils import to_float\n", - "\n", - "import Datenbank" - ], - "id": "9317c939b4662e39", - "outputs": [], - "execution_count": 1 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2025-10-26T17:16:07.067056Z", - "start_time": "2025-10-26T17:16:07.064166Z" - } - }, - "cell_type": "code", - "source": [ - "# ToDo: Materialized View für Mittel aus mehreren Vollsätzen verschiedener Standpunkte erstellen und nach dem importieren der Tachymeterdaten aaktualisieren (Dazu klären: Wo werden die Gewichte der einzelnen Beobachtungen gespeichert?)\n", - "\n", - "# Hier werden die Nutzereingaben vorgenommen:\n", - "pfad_datenbank = r\"C:\\Users\\fabia\\OneDrive\\Jade HS\\Master\\MGW2\\Masterprojekt_allgemein\\Masterprojekt\\Programmierung\\Campusnetz\\Campusnetz.db\"" - ], - "id": "33969d88a569b138", - "outputs": [], - "execution_count": 2 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2025-10-26T17:16:07.118676Z", - "start_time": "2025-10-26T17:16:07.073244Z" - } - }, - "cell_type": "code", - "source": [ - "# Es wird geprüft, ob die .db-Datei bereits vorhanden ist. Wenn dies nicht der Fall ist, wird die Datenbank mitsamt aller Tabellen angelegt.\n", - "Datenbank.Datenbank_anlegen(pfad_datenbank)" - ], - "id": "c55d4c3fccfa7902", - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "execution_count": 3 - }, - { - "metadata": { - "collapsed": true, - "ExecuteTime": { - "end_time": "2025-10-26T17:16:07.128231Z", - "start_time": "2025-10-26T17:16:07.125037Z" - } - }, - "cell_type": "code", - "source": "pfad = r\"C:\\Users\\fabia\\OneDrive\\Jade HS\\Master\\MGW2\\Masterprojekt_allgemein\\Masterprojekt\\Übungsnetz\\Tachymeterdaten\\Masterprobe_2.csv\"", - "id": "bb3d08220dbf2071", - "outputs": [], - "execution_count": 4 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2025-10-26T17:16:07.178448Z", - "start_time": "2025-10-26T17:16:07.147213Z" - } - }, - "cell_type": "code", - "source": [ - "# ToDo: Dateipfad bereits vorhanden? --> Abbruch import\n", - "# ToDo: Rundungsfehler überarbeiten!\n", - "# ToDo: Print ausgabe Anzahl importierte Punkte\n", - "# ToDo: Ggf. Ausgabe Rohdaten in Tabellenform (Berechnungen nachvollziehen)\n", - "\n", - "import sqlite3\n", - "\n", - "liste_netzpunkte = []\n", - "liste_netzpunkte_neu = []\n", - "liste_netzpunkte_vorhanden = []\n", - "liste_zeilennummern_Orientierung = []\n", - "liste_standpunkte = []\n", - "liste_beobachtungen = []\n", - "\n", - "with open (pfad, newline='', encoding='utf-8') as csvfile:\n", - " r = csv.reader(csvfile, delimiter=';')\n", - " zeilennummer = 0\n", - " for row in r:\n", - " zeilennummer += 1\n", - " if zeilennummer < 4:\n", - " pass\n", - " else:\n", - " if row[0] != \"Orientierung\":\n", - " liste_netzpunkte.append(row[0].strip())\n", - " else:\n", - " liste_zeilennummern_Orientierung.append(zeilennummer-1)\n", - " liste_standpunkte.append(zeilennummer-1)\n", - " liste_zeilennummern_Orientierung.append(zeilennummer)\n", - " #print(row)\n", - "\n", - "\n", - "liste_netzpunkte = list(set(liste_netzpunkte))\n", - "\n", - "con = sqlite3.connect(pfad_datenbank)\n", - "cursor = con.cursor()\n", - "cursor.execute(\"\"\"SELECT punktnummer FROM Netzpunkte\"\"\")\n", - "liste_netzpunkte_in_db = {row[0] for row in cursor.fetchall()}\n", - "\n", - "liste_netzpunkte_neu = [np for np in liste_netzpunkte if np not in liste_netzpunkte_in_db]\n", - "liste_netzpunkte_vorhanden = [np for np in liste_netzpunkte if np in liste_netzpunkte_in_db]\n", - "\n", - "for np_neu in liste_netzpunkte_neu:\n", - " cursor.execute(\"INSERT INTO Netzpunkte (punktnummer) VALUES (?)\", (np_neu,))\n", - "\n", - "with open (pfad, newline='', encoding='utf-8') as csvfile:\n", - " r = csv.reader(csvfile, delimiter=';')\n", - " standpunktsnummer = 0\n", - " for nummer, row in enumerate(r, start=1):\n", - " if nummer < 4:\n", - " pass\n", - " if nummer in liste_zeilennummern_Orientierung:\n", - " if row[0] != \"Orientierung\":\n", - " punktnummer = row[0].strip()\n", - " else:\n", - " standpunktsnummer += 1\n", - " cursor.execute(\"INSERT INTO Standpunkte_Tachymeter (punktnummer, orientierunghz, orientierungv, dateipfad, standpunktsnummer) VALUES (?, ?, ?, ?, ?)\", (punktnummer, row[1], row[2], pfad, standpunktsnummer))\n", - "\n", - "with open (pfad, newline='', encoding='utf-8') as csvfile:\n", - " r = csv.reader(csvfile, delimiter=';')\n", - " rows = list(r)\n", - "\n", - " for index, row in enumerate(liste_standpunkte):\n", - " zeile_punktnummer = row - 1\n", - " punktnummer = rows[zeile_punktnummer][0].strip()\n", - " zeile_eins = zeile_punktnummer + 2\n", - " if index + 1 < len(liste_standpunkte):\n", - " zeile_zwei = liste_standpunkte[index + 1]\n", - " else:\n", - " zeile_zwei = len(rows)+1\n", - "\n", - " for i in range (zeile_eins, zeile_zwei-1):\n", - " liste_beobachtungen.append([punktnummer] + rows[i])\n", - "\n", - " standpunktsnummer = 0\n", - " standpunkt_alt = None\n", - "while len(liste_beobachtungen) > 0:\n", - " standpunkt1 = liste_beobachtungen[0][0]\n", - " zielpunkt1 = liste_beobachtungen[0][1]\n", - " horizonalwinkel1 = to_float(liste_beobachtungen[0][2].replace(',', '.'))\n", - " vertikalwinkel1 = to_float(liste_beobachtungen[0][3].replace(',', '.'))\n", - " distanz1 = to_float(liste_beobachtungen[0][4].replace(',', '.'))\n", - " liste_beobachtungen.pop(0)\n", - "\n", - " if standpunkt_alt != standpunkt1:\n", - " standpunktsnummer += 1\n", - "\n", - " standpunkt_alt = standpunkt1\n", - "\n", - " standpunktsid = cursor.execute(\"SELECT spID FROM Standpunkte_Tachymeter WHERE punktnummer = ? AND dateipfad = ? AND standpunktsnummer = ?\", (standpunkt1, pfad, standpunktsnummer)).fetchall()[0][0]\n", - "\n", - " index_beobachtung2 = None\n", - " for index in range(len(liste_beobachtungen)):\n", - " beobachtung = liste_beobachtungen[index]\n", - " if beobachtung[0] == standpunkt1 and beobachtung[1] == zielpunkt1:\n", - " index_beobachtung2 = index\n", - " break\n", - " if index_beobachtung2 is None:\n", - " print(f\"Zweite Lage für Standpunkt: {standpunkt1}, Zielpunkt: {zielpunkt1} wurde nicht gefund!\")\n", - "\n", - " standpunkt2 = liste_beobachtungen[index_beobachtung2][0]\n", - " zielpunkt2 = liste_beobachtungen[index_beobachtung2][1]\n", - " horizonalwinkel2 = to_float(liste_beobachtungen[index_beobachtung2][2].replace(',', '.'))\n", - " vertikalwinkel2 = to_float(liste_beobachtungen[index_beobachtung2][3].replace(',', '.'))\n", - " distanz2 = to_float(liste_beobachtungen[index_beobachtung2][4].replace(',', '.'))\n", - "\n", - " if horizonalwinkel1 > horizonalwinkel2:\n", - " horizontalwinkel_vollsatz = (horizonalwinkel1 + horizonalwinkel2 + 200) / 2\n", - " else:\n", - " horizontalwinkel_vollsatz = (horizonalwinkel1 + horizonalwinkel2) / 2\n", - "\n", - " if vertikalwinkel1 < vertikalwinkel2:\n", - " vertikalwinkel_satzmittel = (400 + (vertikalwinkel1 - vertikalwinkel2)) / 2\n", - " else:\n", - " vertikalwinkel_satzmittel = (400 + (vertikalwinkel2 - vertikalwinkel1)) / 2\n", - "\n", - " distanz_satzmittel = (distanz1 + distanz2) / 2\n", - "\n", - " print(f\"spid: {standpunktsid}, standpunktsnummer: {standpunktsnummer},standpunkt1: {standpunkt1}, standpunkt2: {standpunkt2}, zielpunkt1: {zielpunkt1}, zielpunkt2: {zielpunkt2}, horizonalwinkel1: {horizonalwinkel1}, horizonalwinkel2: {horizonalwinkel2}, horizontalwinkel_vollsatz: {horizontalwinkel_vollsatz},vertikalwinkel1: {vertikalwinkel1}, vertikalwinkel2: {vertikalwinkel2}, vertikalwinkel_vollsatz: {vertikalwinkel_satzmittel},distanz1: {distanz1}, distanz2: {distanz2}, distanz_satzmittel: {distanz_satzmittel}\")\n", - "\n", - " liste_beobachtungen.pop(index_beobachtung2)\n", - "\n", - " cursor.execute(\"INSERT INTO Beobachtungen_Tachymeter (spID, punktnummer, hz, v, distanz) VALUES (?, ?, ?, ?, ?)\", (standpunktsid, standpunkt1, horizontalwinkel_vollsatz, vertikalwinkel_satzmittel, distanz_satzmittel))\n", - "\n", - " #print(row)\n", - " #print(len(liste_standpunkte))\n", - " #print(len(list(r)))\n", - "\n", - "\n", - "con.commit()\n", - "con.close()\n", - "\n", - "\n", - "print(liste_beobachtungen)\n", - "print(f\"Es wurden {len(liste_netzpunkte_neu)} neue Punkte importiert. Dies sind: {', '.join(map(str, liste_netzpunkte_neu))}\")\n", - "print(f\"Es sind bereits {len(liste_netzpunkte_vorhanden)} Punkte im Netz enthalten. Dies sind: {', '.join(map(str, liste_netzpunkte_vorhanden))}\")" - ], - "id": "c76a1830f3bbe81a", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "spid: 1, standpunktsnummer: 1,standpunkt1: 20001, standpunkt2: 20001, zielpunkt1: 2n, zielpunkt2: 2n, horizonalwinkel1: 242.8296, horizonalwinkel2: 42.82837, horizontalwinkel_vollsatz: 242.828985,vertikalwinkel1: 99.83239, vertikalwinkel2: 300.14933, vertikalwinkel_vollsatz: 99.84152999999999,distanz1: 16.7614, distanz2: 16.761, distanz_satzmittel: 16.7612\n", - "spid: 1, standpunktsnummer: 1,standpunkt1: 20001, standpunkt2: 20001, zielpunkt1: 20002v, zielpunkt2: 20002v, horizonalwinkel1: 366.11053, horizonalwinkel2: 166.11226, horizontalwinkel_vollsatz: 366.111395,vertikalwinkel1: 100.18342, vertikalwinkel2: 299.79772, vertikalwinkel_vollsatz: 100.19284999999999,distanz1: 13.2998, distanz2: 13.2998, distanz_satzmittel: 13.2998\n", - "spid: 1, standpunktsnummer: 1,standpunkt1: 20001, standpunkt2: 20001, zielpunkt1: 20003, zielpunkt2: 20003, horizonalwinkel1: 0.16261, horizonalwinkel2: 200.15901, horizontalwinkel_vollsatz: 100.16081,vertikalwinkel1: 99.74748, vertikalwinkel2: 300.24135, vertikalwinkel_vollsatz: 99.75306499999999,distanz1: 24.7283, distanz2: 24.7286, distanz_satzmittel: 24.728450000000002\n", - "spid: 1, standpunktsnummer: 1,standpunkt1: 20001, standpunkt2: 20001, zielpunkt1: 2n, zielpunkt2: 2n, horizonalwinkel1: 242.82956, horizonalwinkel2: 42.82854, horizontalwinkel_vollsatz: 242.82905,vertikalwinkel1: 99.83266, vertikalwinkel2: 300.14951, vertikalwinkel_vollsatz: 99.84157499999999,distanz1: 16.7615, distanz2: 16.7611, distanz_satzmittel: 16.7613\n", - "spid: 1, standpunktsnummer: 1,standpunkt1: 20001, standpunkt2: 20001, zielpunkt1: 20002v, zielpunkt2: 20002v, horizonalwinkel1: 366.11091, horizonalwinkel2: 166.11237, horizontalwinkel_vollsatz: 366.11163999999997,vertikalwinkel1: 100.18382, vertikalwinkel2: 299.79775, vertikalwinkel_vollsatz: 100.193035,distanz1: 13.2991, distanz2: 13.2996, distanz_satzmittel: 13.29935\n", - "spid: 1, standpunktsnummer: 1,standpunkt1: 20001, standpunkt2: 20001, zielpunkt1: 20003, zielpunkt2: 20003, horizonalwinkel1: 0.16262, horizonalwinkel2: 200.15904, horizontalwinkel_vollsatz: 100.16083,vertikalwinkel1: 99.74759, vertikalwinkel2: 300.24159, vertikalwinkel_vollsatz: 99.75300000000001,distanz1: 24.7291, distanz2: 24.7284, distanz_satzmittel: 24.728749999999998\n", - "spid: 2, standpunktsnummer: 2,standpunkt1: 2n, standpunkt2: 2n, zielpunkt1: 20001, zielpunkt2: 20001, horizonalwinkel1: 294.83217, horizonalwinkel2: 94.83088, horizontalwinkel_vollsatz: 294.831525,vertikalwinkel1: 100.52468, vertikalwinkel2: 299.4575, vertikalwinkel_vollsatz: 100.53359,distanz1: 16.7606, distanz2: 16.7609, distanz_satzmittel: 16.76075\n", - "spid: 2, standpunktsnummer: 2,standpunkt1: 2n, standpunkt2: 2n, zielpunkt1: 20003, zielpunkt2: 20003, horizonalwinkel1: 269.2321, horizonalwinkel2: 69.22659, horizontalwinkel_vollsatz: 269.22934499999997,vertikalwinkel1: 99.98742, vertikalwinkel2: 300.00289, vertikalwinkel_vollsatz: 99.992265,distanz1: 39.2672, distanz2: 39.2674, distanz_satzmittel: 39.267300000000006\n", - "spid: 2, standpunktsnummer: 2,standpunkt1: 2n, standpunkt2: 2n, zielpunkt1: 20002v, zielpunkt2: 20002v, horizonalwinkel1: 261.49538, horizonalwinkel2: 61.49067, horizontalwinkel_vollsatz: 261.493025,vertikalwinkel1: 100.33078, vertikalwinkel2: 299.65813, vertikalwinkel_vollsatz: 100.33632499999999,distanz1: 24.8431, distanz2: 24.8428, distanz_satzmittel: 24.842950000000002\n", - "spid: 2, standpunktsnummer: 2,standpunkt1: 2n, standpunkt2: 2n, zielpunkt1: 20001, zielpunkt2: 20001, horizonalwinkel1: 294.83256, horizonalwinkel2: 94.83093, horizontalwinkel_vollsatz: 294.831745,vertikalwinkel1: 100.52475, vertikalwinkel2: 299.45752, vertikalwinkel_vollsatz: 100.533615,distanz1: 16.7602, distanz2: 16.7607, distanz_satzmittel: 16.76045\n", - "spid: 2, standpunktsnummer: 2,standpunkt1: 2n, standpunkt2: 2n, zielpunkt1: 20003, zielpunkt2: 20003, horizonalwinkel1: 269.23232, horizonalwinkel2: 69.22679, horizontalwinkel_vollsatz: 269.229555,vertikalwinkel1: 99.98762, vertikalwinkel2: 300.003, vertikalwinkel_vollsatz: 99.99231,distanz1: 39.2672, distanz2: 39.2679, distanz_satzmittel: 39.26755\n", - "spid: 2, standpunktsnummer: 2,standpunkt1: 2n, standpunkt2: 2n, zielpunkt1: 20002v, zielpunkt2: 20002v, horizonalwinkel1: 261.49548, horizonalwinkel2: 61.4907, horizontalwinkel_vollsatz: 261.49309,vertikalwinkel1: 100.33097, vertikalwinkel2: 299.65811, vertikalwinkel_vollsatz: 100.33642999999998,distanz1: 24.843, distanz2: 24.8434, distanz_satzmittel: 24.8432\n", - "spid: 3, standpunktsnummer: 3,standpunkt1: 20002v, standpunkt2: 20002v, zielpunkt1: 20003, zielpunkt2: 20003, horizonalwinkel1: 252.49282, horizonalwinkel2: 52.49213, horizontalwinkel_vollsatz: 252.492475,vertikalwinkel1: 99.61264, vertikalwinkel2: 300.37034, vertikalwinkel_vollsatz: 99.62115,distanz1: 14.9165, distanz2: 14.9163, distanz_satzmittel: 14.9164\n", - "spid: 3, standpunktsnummer: 3,standpunkt1: 20002v, standpunkt2: 20002v, zielpunkt1: 20001, zielpunkt2: 20001, horizonalwinkel1: 388.44167, horizonalwinkel2: 188.44374, horizontalwinkel_vollsatz: 388.442705,vertikalwinkel1: 100.26029, vertikalwinkel2: 299.71761, vertikalwinkel_vollsatz: 100.27134000000001,distanz1: 13.3003, distanz2: 13.3002, distanz_satzmittel: 13.30025\n", - "spid: 3, standpunktsnummer: 3,standpunkt1: 20002v, standpunkt2: 20002v, zielpunkt1: 2n, zielpunkt2: 2n, horizonalwinkel1: 31.81626, horizonalwinkel2: 231.81191, horizontalwinkel_vollsatz: 131.814085,vertikalwinkel1: 99.90344, vertikalwinkel2: 300.08588, vertikalwinkel_vollsatz: 99.90878000000001,distanz1: 24.8432, distanz2: 24.8434, distanz_satzmittel: 24.8433\n", - "spid: 3, standpunktsnummer: 3,standpunkt1: 20002v, standpunkt2: 20002v, zielpunkt1: 20003, zielpunkt2: 20003, horizonalwinkel1: 252.4931, horizonalwinkel2: 52.49187, horizontalwinkel_vollsatz: 252.492485,vertikalwinkel1: 99.61257, vertikalwinkel2: 300.37034, vertikalwinkel_vollsatz: 99.621115,distanz1: 14.9163, distanz2: 14.9164, distanz_satzmittel: 14.91635\n", - "spid: 3, standpunktsnummer: 3,standpunkt1: 20002v, standpunkt2: 20002v, zielpunkt1: 20001, zielpunkt2: 20001, horizonalwinkel1: 388.44195, horizonalwinkel2: 188.44353, horizontalwinkel_vollsatz: 388.44274,vertikalwinkel1: 100.26028, vertikalwinkel2: 299.71758, vertikalwinkel_vollsatz: 100.27135,distanz1: 13.3007, distanz2: 13.301, distanz_satzmittel: 13.30085\n", - "spid: 3, standpunktsnummer: 3,standpunkt1: 20002v, standpunkt2: 20002v, zielpunkt1: 2n, zielpunkt2: 2n, horizonalwinkel1: 31.81639, horizonalwinkel2: 231.81181, horizontalwinkel_vollsatz: 131.8141,vertikalwinkel1: 99.90346, vertikalwinkel2: 300.08572, vertikalwinkel_vollsatz: 99.90887000000001,distanz1: 24.843, distanz2: 24.8435, distanz_satzmittel: 24.843249999999998\n", - "spid: 4, standpunktsnummer: 4,standpunkt1: 20003, standpunkt2: 20003, zielpunkt1: 20001, zielpunkt2: 20001, horizonalwinkel1: 398.07148, horizonalwinkel2: 198.06652, horizontalwinkel_vollsatz: 398.069,vertikalwinkel1: 100.487, vertikalwinkel2: 299.50088, vertikalwinkel_vollsatz: 100.49306,distanz1: 24.7298, distanz2: 24.7301, distanz_satzmittel: 24.729950000000002\n", - "spid: 4, standpunktsnummer: 4,standpunkt1: 20003, standpunkt2: 20003, zielpunkt1: 2n, zielpunkt2: 2n, horizonalwinkel1: 15.15974, horizonalwinkel2: 215.15459, horizontalwinkel_vollsatz: 115.157165,vertikalwinkel1: 100.15633, vertikalwinkel2: 299.83465, vertikalwinkel_vollsatz: 100.16084,distanz1: 39.2683, distanz2: 39.2687, distanz_satzmittel: 39.2685\n", - "spid: 4, standpunktsnummer: 4,standpunkt1: 20003, standpunkt2: 20003, zielpunkt1: 20002v, zielpunkt2: 20002v, horizonalwinkel1: 28.11014, horizonalwinkel2: 228.10898, horizontalwinkel_vollsatz: 128.10956,vertikalwinkel1: 100.76579, vertikalwinkel2: 299.21759, vertikalwinkel_vollsatz: 100.7741,distanz1: 14.9166, distanz2: 14.9172, distanz_satzmittel: 14.9169\n", - "spid: 4, standpunktsnummer: 4,standpunkt1: 20003, standpunkt2: 20003, zielpunkt1: 20001, zielpunkt2: 20001, horizonalwinkel1: 398.0712, horizonalwinkel2: 198.06554, horizontalwinkel_vollsatz: 398.06836999999996,vertikalwinkel1: 100.48695, vertikalwinkel2: 299.50082, vertikalwinkel_vollsatz: 100.493065,distanz1: 24.7303, distanz2: 24.7296, distanz_satzmittel: 24.729950000000002\n", - "spid: 4, standpunktsnummer: 4,standpunkt1: 20003, standpunkt2: 20003, zielpunkt1: 2n, zielpunkt2: 2n, horizonalwinkel1: 15.15943, horizonalwinkel2: 215.15357, horizontalwinkel_vollsatz: 115.1565,vertikalwinkel1: 100.15604, vertikalwinkel2: 299.83478, vertikalwinkel_vollsatz: 100.16063,distanz1: 39.2683, distanz2: 39.2686, distanz_satzmittel: 39.26845\n", - "spid: 4, standpunktsnummer: 4,standpunkt1: 20003, standpunkt2: 20003, zielpunkt1: 20002v, zielpunkt2: 20002v, horizonalwinkel1: 28.10946, horizonalwinkel2: 228.10815, horizontalwinkel_vollsatz: 128.108805,vertikalwinkel1: 100.76555, vertikalwinkel2: 299.21754, vertikalwinkel_vollsatz: 100.77400500000002,distanz1: 14.9172, distanz2: 14.9173, distanz_satzmittel: 14.91725\n", - "[]\n", - "Es wurden 4 neue Punkte importiert. Dies sind: 20002v, 2n, 20003, 20001\n", - "Es sind bereits 0 Punkte im Netz enthalten. Dies sind: \n" - ] - } - ], - "execution_count": 5 - }, - { - "metadata": { - "ExecuteTime": { - "end_time": "2025-10-26T17:16:07.199262Z", - "start_time": "2025-10-26T17:16:07.196785Z" - } - }, - "cell_type": "code", - "source": [ - "# ToDo: Näherungswerte für Koordinaten aus Tychymetermessungen berechnen\n", - "# ToDo: Wenn GNSS-Daten vorliegen: Koordinaten von GNSS verwenden!" - ], - "id": "d200a8b43e3646c", - "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 -} diff --git a/main_alt.ipynb b/main_alt.ipynb new file mode 100644 index 0000000..f7db149 --- /dev/null +++ b/main_alt.ipynb @@ -0,0 +1,241 @@ +{ + "cells": [ + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-14T13:15:38.527230Z", + "start_time": "2025-11-14T13:15:38.518151Z" + } + }, + "cell_type": "code", + "source": [ + "import csv\n", + "\n", + "from prompt_toolkit.utils import to_float\n", + "\n", + "import Datenbank_alt" + ], + "id": "9317c939b4662e39", + "outputs": [], + "execution_count": 1 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-26T17:16:07.067056Z", + "start_time": "2025-10-26T17:16:07.064166Z" + } + }, + "cell_type": "code", + "source": [ + "# ToDo: Materialized View für Mittel aus mehreren Vollsätzen verschiedener Standpunkte erstellen und nach dem importieren der Tachymeterdaten aaktualisieren (Dazu klären: Wo werden die Gewichte der einzelnen Beobachtungen gespeichert?)\n", + "\n", + "# Hier werden die Nutzereingaben vorgenommen:\n", + "pfad_datenbank = r\"C:\\Users\\fabia\\OneDrive\\Jade HS\\Master\\MGW2\\Masterprojekt_allgemein\\Masterprojekt\\Programmierung\\Campusnetz\\Campusnetz.db\"" + ], + "id": "33969d88a569b138", + "outputs": [], + "execution_count": 2 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-26T17:16:07.118676Z", + "start_time": "2025-10-26T17:16:07.073244Z" + } + }, + "cell_type": "code", + "source": [ + "# Es wird geprüft, ob die .db-Datei bereits vorhanden ist. Wenn dies nicht der Fall ist, wird die Datenbank mitsamt aller Tabellen angelegt.\n", + "Datenbank.Datenbank_anlegen(pfad_datenbank)\n", + "pfad = r\"C:\\Users\\fabia\\OneDrive\\Jade HS\\Master\\MGW2\\Masterprojekt_allgemein\\Masterprojekt\\Übungsnetz\\Tachymeterdaten\\Masterprobe_2.csv\"" + ], + "id": "c55d4c3fccfa7902", + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "execution_count": 3 + }, + { + "metadata": { + "ExecuteTime": { + "end_time": "2025-10-26T17:16:07.199262Z", + "start_time": "2025-10-26T17:16:07.196785Z" + } + }, + "cell_type": "code", + "source": [ + "# ToDo: Dateipfad bereits vorhanden? --> Abbruch import\n", + "# ToDo: Rundungsfehler überarbeiten!\n", + "# ToDo: Print ausgabe Anzahl importierte Punkte\n", + "# ToDo: Ggf. Ausgabe Rohdaten in Tabellenform (Berechnungen nachvollziehen)\n", + "\n", + "import sqlite3\n", + "\n", + "liste_netzpunkte = []\n", + "liste_netzpunkte_neu = []\n", + "liste_netzpunkte_vorhanden = []\n", + "liste_zeilennummern_Orientierung = []\n", + "liste_standpunkte = []\n", + "liste_beobachtungen = []\n", + "\n", + "with open (pfad, newline='', encoding='utf-8') as csvfile:\n", + " r = csv.reader(csvfile, delimiter=';')\n", + " zeilennummer = 0\n", + " for row in r:\n", + " zeilennummer += 1\n", + " if zeilennummer < 4:\n", + " pass\n", + " else:\n", + " if row[0] != \"Orientierung\":\n", + " liste_netzpunkte.append(row[0].strip())\n", + " else:\n", + " liste_zeilennummern_Orientierung.append(zeilennummer-1)\n", + " liste_standpunkte.append(zeilennummer-1)\n", + " liste_zeilennummern_Orientierung.append(zeilennummer)\n", + " #print(row)\n", + "\n", + "\n", + "liste_netzpunkte = list(set(liste_netzpunkte))\n", + "\n", + "con = sqlite3.connect(pfad_datenbank)\n", + "cursor = con.cursor()\n", + "cursor.execute(\"\"\"SELECT punktnummer FROM Netzpunkte\"\"\")\n", + "liste_netzpunkte_in_db = {row[0] for row in cursor.fetchall()}\n", + "\n", + "liste_netzpunkte_neu = [np for np in liste_netzpunkte if np not in liste_netzpunkte_in_db]\n", + "liste_netzpunkte_vorhanden = [np for np in liste_netzpunkte if np in liste_netzpunkte_in_db]\n", + "\n", + "for np_neu in liste_netzpunkte_neu:\n", + " cursor.execute(\"INSERT INTO Netzpunkte (punktnummer) VALUES (?)\", (np_neu,))\n", + "\n", + "with open (pfad, newline='', encoding='utf-8') as csvfile:\n", + " r = csv.reader(csvfile, delimiter=';')\n", + " standpunktsnummer = 0\n", + " for nummer, row in enumerate(r, start=1):\n", + " if nummer < 4:\n", + " pass\n", + " if nummer in liste_zeilennummern_Orientierung:\n", + " if row[0] != \"Orientierung\":\n", + " punktnummer = row[0].strip()\n", + " else:\n", + " standpunktsnummer += 1\n", + " cursor.execute(\"INSERT INTO Standpunkte_Tachymeter (punktnummer, orientierunghz, orientierungv, dateipfad, standpunktsnummer) VALUES (?, ?, ?, ?, ?)\", (punktnummer, row[1], row[2], pfad, standpunktsnummer))\n", + "\n", + "with open (pfad, newline='', encoding='utf-8') as csvfile:\n", + " r = csv.reader(csvfile, delimiter=';')\n", + " rows = list(r)\n", + "\n", + " for index, row in enumerate(liste_standpunkte):\n", + " zeile_punktnummer = row - 1\n", + " punktnummer = rows[zeile_punktnummer][0].strip()\n", + " zeile_eins = zeile_punktnummer + 2\n", + " if index + 1 < len(liste_standpunkte):\n", + " zeile_zwei = liste_standpunkte[index + 1]\n", + " else:\n", + " zeile_zwei = len(rows)+1\n", + "\n", + " for i in range (zeile_eins, zeile_zwei-1):\n", + " liste_beobachtungen.append([punktnummer] + rows[i])\n", + "\n", + " standpunktsnummer = 0\n", + " standpunkt_alt = None\n", + "while len(liste_beobachtungen) > 0:\n", + " standpunkt1 = liste_beobachtungen[0][0]\n", + " zielpunkt1 = liste_beobachtungen[0][1]\n", + " horizonalwinkel1 = to_float(liste_beobachtungen[0][2].replace(',', '.'))\n", + " vertikalwinkel1 = to_float(liste_beobachtungen[0][3].replace(',', '.'))\n", + " distanz1 = to_float(liste_beobachtungen[0][4].replace(',', '.'))\n", + " liste_beobachtungen.pop(0)\n", + "\n", + " if standpunkt_alt != standpunkt1:\n", + " standpunktsnummer += 1\n", + "\n", + " standpunkt_alt = standpunkt1\n", + "\n", + " standpunktsid = cursor.execute(\"SELECT spID FROM Standpunkte_Tachymeter WHERE punktnummer = ? AND dateipfad = ? AND standpunktsnummer = ?\", (standpunkt1, pfad, standpunktsnummer)).fetchall()[0][0]\n", + "\n", + " index_beobachtung2 = None\n", + " for index in range(len(liste_beobachtungen)):\n", + " beobachtung = liste_beobachtungen[index]\n", + " if beobachtung[0] == standpunkt1 and beobachtung[1] == zielpunkt1:\n", + " index_beobachtung2 = index\n", + " break\n", + " if index_beobachtung2 is None:\n", + " print(f\"Zweite Lage für Standpunkt: {standpunkt1}, Zielpunkt: {zielpunkt1} wurde nicht gefund!\")\n", + "\n", + " standpunkt2 = liste_beobachtungen[index_beobachtung2][0]\n", + " zielpunkt2 = liste_beobachtungen[index_beobachtung2][1]\n", + " horizonalwinkel2 = to_float(liste_beobachtungen[index_beobachtung2][2].replace(',', '.'))\n", + " vertikalwinkel2 = to_float(liste_beobachtungen[index_beobachtung2][3].replace(',', '.'))\n", + " distanz2 = to_float(liste_beobachtungen[index_beobachtung2][4].replace(',', '.'))\n", + "\n", + " if horizonalwinkel1 > horizonalwinkel2:\n", + " horizontalwinkel_vollsatz = (horizonalwinkel1 + horizonalwinkel2 + 200) / 2\n", + " else:\n", + " horizontalwinkel_vollsatz = (horizonalwinkel1 + horizonalwinkel2) / 2\n", + "\n", + " if vertikalwinkel1 < vertikalwinkel2:\n", + " vertikalwinkel_satzmittel = (400 + (vertikalwinkel1 - vertikalwinkel2)) / 2\n", + " else:\n", + " vertikalwinkel_satzmittel = (400 + (vertikalwinkel2 - vertikalwinkel1)) / 2\n", + "\n", + " distanz_satzmittel = (distanz1 + distanz2) / 2\n", + "\n", + " print(f\"spid: {standpunktsid}, standpunktsnummer: {standpunktsnummer},standpunkt1: {standpunkt1}, standpunkt2: {standpunkt2}, zielpunkt1: {zielpunkt1}, zielpunkt2: {zielpunkt2}, horizonalwinkel1: {horizonalwinkel1}, horizonalwinkel2: {horizonalwinkel2}, horizontalwinkel_vollsatz: {horizontalwinkel_vollsatz},vertikalwinkel1: {vertikalwinkel1}, vertikalwinkel2: {vertikalwinkel2}, vertikalwinkel_vollsatz: {vertikalwinkel_satzmittel},distanz1: {distanz1}, distanz2: {distanz2}, distanz_satzmittel: {distanz_satzmittel}\")\n", + "\n", + " liste_beobachtungen.pop(index_beobachtung2)\n", + "\n", + " cursor.execute(\"INSERT INTO Beobachtungen_Tachymeter (spID, punktnummer, hz, v, distanz) VALUES (?, ?, ?, ?, ?)\", (standpunktsid, standpunkt1, horizontalwinkel_vollsatz, vertikalwinkel_satzmittel, distanz_satzmittel))\n", + "\n", + " #print(row)\n", + " #print(len(liste_standpunkte))\n", + " #print(len(list(r)))\n", + "\n", + "\n", + "con.commit()\n", + "con.close()\n", + "\n", + "\n", + "print(liste_beobachtungen)\n", + "print(f\"Es wurden {len(liste_netzpunkte_neu)} neue Punkte importiert. Dies sind: {', '.join(map(str, liste_netzpunkte_neu))}\")\n", + "print(f\"Es sind bereits {len(liste_netzpunkte_vorhanden)} Punkte im Netz enthalten. Dies sind: {', '.join(map(str, liste_netzpunkte_vorhanden))}\")\n", + "# ToDo: Näherungswerte für Koordinaten aus Tychymetermessungen berechnen\n", + "# ToDo: Wenn GNSS-Daten vorliegen: Koordinaten von GNSS verwenden!" + ], + "id": "d200a8b43e3646c", + "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 +}