Anlegen neuer Dateien

This commit is contained in:
2025-12-01 09:10:43 +01:00
parent cf99850091
commit 213d499bc3
5 changed files with 326 additions and 350 deletions

37
Campusnetz.ipynb Normal file
View File

@@ -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
}

View File

@@ -1,49 +1,49 @@
import os import os
import sqlite3 import sqlite3
class Datenbank_anlegen: class Datenbank_anlegen:
def __init__(self, pfad_datenbank): def __init__(self, pfad_datenbank):
self.pfad_datenbank = pfad_datenbank self.pfad_datenbank = pfad_datenbank
self.db_anlegen() self.db_anlegen()
def db_anlegen(self): def db_anlegen(self):
#pfad = r"C:\Users\fabia\OneDrive\Jade HS\Master\MGW2\Masterprojekt_allgemein\Masterprojekt\Programmierung\Campusnetz\Campusnetz.db" #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): if not os.path.exists(self.pfad_datenbank):
con = sqlite3.connect(self.pfad_datenbank) con = sqlite3.connect(self.pfad_datenbank)
cursor = con.cursor() cursor = con.cursor()
cursor.executescript("""CREATE TABLE Netzpunkte ( cursor.executescript("""CREATE TABLE Netzpunkte (
punktnummer TEXT(10), punktnummer TEXT(10),
naeherungx NUMERIC(9,3), naeherungx NUMERIC(9,3),
naeherungy NUMERIC(7,3), naeherungy NUMERIC(7,3),
naeherungz NUMERIC(8,3), naeherungz NUMERIC(8,3),
CONSTRAINT pk_Netzpunkte PRIMARY KEY (punktnummer) CONSTRAINT pk_Netzpunkte PRIMARY KEY (punktnummer)
); );
CREATE TABLE Standpunkte_Tachymeter ( CREATE TABLE Standpunkte_Tachymeter (
spID INTEGER PRIMARY KEY AUTOINCREMENT, spID INTEGER PRIMARY KEY AUTOINCREMENT,
punktnummer TEXT(10), punktnummer TEXT(10),
orientierunghz NUMERIC(2,5), orientierunghz NUMERIC(2,5),
orientierungv NUMERIC(2,5), orientierungv NUMERIC(2,5),
dateipfad TEXT(150), dateipfad TEXT(150),
standpunktsnummer INTEGER, standpunktsnummer INTEGER,
CONSTRAINT fk_Standpunkte_Tachymeter_Netzpunkte FOREIGN KEY (punktnummer) CONSTRAINT fk_Standpunkte_Tachymeter_Netzpunkte FOREIGN KEY (punktnummer)
REFERENCES Netzpunkte(punktnummer) REFERENCES Netzpunkte(punktnummer)
); );
CREATE TABLE Beobachtungen_Tachymeter ( CREATE TABLE Beobachtungen_Tachymeter (
btID INTEGER PRIMARY KEY AUTOINCREMENT, btID INTEGER PRIMARY KEY AUTOINCREMENT,
spID INTEGER, spID INTEGER,
punktnummer TEXT(10), punktnummer TEXT(10),
hz NUMERIC(3,5), hz NUMERIC(3,5),
v NUMERIC(3,5), v NUMERIC(3,5),
distanz NUMERIC(4,4), distanz NUMERIC(4,4),
CONSTRAINT fk_Beobachtungen_Tachymeter_Standpunkte_Tachymeter FOREIGN KEY (spID) CONSTRAINT fk_Beobachtungen_Tachymeter_Standpunkte_Tachymeter FOREIGN KEY (spID)
REFERENCES Standpunkte_Tachymeter(spID), REFERENCES Standpunkte_Tachymeter(spID),
CONSTRAINT fk_Beobachtungen_Tachymeter_Netzpunkte FOREIGN KEY (punktnummer) CONSTRAINT fk_Beobachtungen_Tachymeter_Netzpunkte FOREIGN KEY (punktnummer)
REFERENCES Netzpunkte(punktnummer) REFERENCES Netzpunkte(punktnummer)
); );
"""); """);
con.commit() con.commit()
con.close() con.close()

0
Transformationen.py Normal file
View File

View File

@@ -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": [
"<Datenbank.Datenbank_anlegen at 0x1472dd0b8c0>"
]
},
"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
}

241
main_alt.ipynb Normal file
View File

@@ -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": [
"<Datenbank.Datenbank_anlegen at 0x1472dd0b8c0>"
]
},
"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
}