Push
This commit is contained in:
163
Datenbank.py
163
Datenbank.py
@@ -1,17 +1,21 @@
|
||||
import os
|
||||
import sqlite3
|
||||
from typing import Any
|
||||
|
||||
import sympy as sp
|
||||
from sympy import MutableDenseMatrix
|
||||
|
||||
from Berechnungen import Einheitenumrechnung
|
||||
from decimal import Decimal
|
||||
|
||||
|
||||
|
||||
class Datenbank_anlegen:
|
||||
def __init__(self, pfad_datenbank):
|
||||
def __init__(self, pfad_datenbank: str) -> None:
|
||||
self.pfad_datenbank = pfad_datenbank
|
||||
self.db_anlegen()
|
||||
|
||||
def db_anlegen(self):
|
||||
def db_anlegen(self) -> None:
|
||||
# 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)
|
||||
@@ -42,11 +46,17 @@ class Datenbank_anlegen:
|
||||
punktnummer_zp TEXT(10),
|
||||
instrumenteID INTEGER,
|
||||
tachymeter_richtung NUMERIC(8, 6),
|
||||
tachymeter_richtung_ausschalten INTEGER DEFAULT 0,
|
||||
tachymeter_zenitwinkel NUMERIC(8, 6),
|
||||
tachymeter_zenitwinkel_ausschalten INTEGER DEFAULT 0,
|
||||
tachymeter_distanz NUMERIC(8, 4),
|
||||
tachymeter_distanz_auschalten INTEGER DEFAULT 0,
|
||||
gnss_bx NUMERIC(7, 4),
|
||||
gnss_bx_ausschalten INTEGER DEFAULT 0,
|
||||
gnss_by NUMERIC(7, 4),
|
||||
gnss_by_ausschalten INTEGER DEFAULT 0,
|
||||
gnss_bz NUMERIC(7, 4),
|
||||
gnss_bz_ausschalten INTEGER DEFAULT 0,
|
||||
gnss_s0 NUMERIC(1, 8),
|
||||
gnss_cxx NUMERIC(1, 8),
|
||||
gnss_cxy NUMERIC(1, 8),
|
||||
@@ -57,6 +67,7 @@ class Datenbank_anlegen:
|
||||
niv_dh NUMERIC(8, 6),
|
||||
niv_strecke NUMERIC(8, 6),
|
||||
niv_anz_standpkte INTEGER,
|
||||
niv_ausschalten INTEGER DEFAULT 0,
|
||||
dateiname TEXT(200),
|
||||
CONSTRAINT pk_Beobachtungen PRIMARY KEY (beobachtungenID),
|
||||
CONSTRAINT fk_Beobachtungen_Netzpunktesp FOREIGN KEY (punktnummer_sp) REFERENCES Netzpunkte(punktnummer),
|
||||
@@ -86,10 +97,10 @@ class Datenbank_anlegen:
|
||||
con.close()
|
||||
|
||||
class Datenbankzugriff:
|
||||
def __init__(self, pfad_datenbank):
|
||||
def __init__(self, pfad_datenbank: str) -> None:
|
||||
self.pfad_datenbank = pfad_datenbank
|
||||
|
||||
def set_koordinaten(self, dict_koordinaten, koordinatenart):
|
||||
def set_koordinaten(self, dict_koordinaten: dict, koordinatenart: str) -> None:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
|
||||
@@ -113,7 +124,7 @@ class Datenbankzugriff:
|
||||
cursor.close()
|
||||
con.close()
|
||||
|
||||
def set_instrument(self, typ, name):
|
||||
def set_instrument(self, typ: str, name: str) -> None:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
liste_instrumente = cursor.execute("SELECT * FROM Instrumente WHERE typ = ? AND name =?", (typ, name)).fetchall()
|
||||
@@ -130,7 +141,8 @@ class Datenbankzugriff:
|
||||
cursor.close()
|
||||
con.close()
|
||||
|
||||
def set_genauigkeiten(self, instrumenteID, beobachtungsart, stabw_apriori_konstant =None, stabw_apriori_streckenprop =None):
|
||||
def set_genauigkeiten(self, instrumenteID: int, beobachtungsart: str, stabw_apriori_konstant: float = None,
|
||||
stabw_apriori_streckenprop: float = None) -> None:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
|
||||
@@ -211,7 +223,9 @@ class Datenbankzugriff:
|
||||
cursor.close()
|
||||
con.close()
|
||||
|
||||
def set_datumskoordinaten(self, liste_datumskoordinaten_x, liste_datumskoordinaten_y, liste_datumskoordinaten_z, liste_datumskoordinaten_x_y_z):
|
||||
def set_datumskoordinaten(self, liste_datumskoordinaten_x: list, liste_datumskoordinaten_y: list,
|
||||
liste_datumskoordinaten_z: list,
|
||||
liste_datumskoordinaten_x_y_z: list) -> None:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
|
||||
@@ -259,7 +273,9 @@ class Datenbankzugriff:
|
||||
cursor.close()
|
||||
con.close()
|
||||
|
||||
def set_datumskoordinaten_to_neupunkte(self, liste_datumskoordinaten_x, liste_datumskoordinaten_y, liste_datumskoordinaten_z, liste_datumskoordinaten_x_y_z):
|
||||
def set_datumskoordinaten_to_neupunkte(self, liste_datumskoordinaten_x: list, liste_datumskoordinaten_y: list,
|
||||
liste_datumskoordinaten_z: list,
|
||||
liste_datumskoordinaten_x_y_z: list) -> None:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
if liste_datumskoordinaten_x != []:
|
||||
@@ -291,7 +307,7 @@ class Datenbankzugriff:
|
||||
cursor.close()
|
||||
con.close()
|
||||
|
||||
def set_normalhoehe_hfp(self, liste_normalhoehe_hfp):
|
||||
def set_normalhoehe_hfp(self, liste_normalhoehe_hfp: list) -> LiteralString | str:
|
||||
liste_hfp_in_db = self.get_normalhoehe_hfp()
|
||||
if liste_normalhoehe_hfp != []:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
@@ -320,7 +336,81 @@ class Datenbankzugriff:
|
||||
else:
|
||||
return f"Es wurden keine neuen Normalhöhen übergeben. Folgende Normalhöhen sind in der Datenbank enthalten: {liste_hfp_in_db}"
|
||||
|
||||
def get_koordinaten(self, koordinatenart, ausgabeart = "Dict"):
|
||||
def set_beobachtung_ausschalten(self, dict_beobachtung_ausschalten: dict) -> None:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
|
||||
for beobachtung, ausschalten in dict_beobachtung_ausschalten.items():
|
||||
if ausschalten == "beobachtung_ausschalten":
|
||||
beobachtung_gesplittet = beobachtung.split("_")
|
||||
if beobachtung_gesplittet[1] == "SD":
|
||||
#print(f"SD: {beobachtung_gesplittet}")
|
||||
try:
|
||||
cursor.execute(f"""UPDATE Beobachtungen SET tachymeter_distanz_auschalten = 1
|
||||
WHERE beobachtungenID = ? AND beobachtungsgruppeID = ? AND punktnummer_sp = ? AND punktnummer_zp = ?""",
|
||||
(beobachtung_gesplittet[0], beobachtung_gesplittet[2], beobachtung_gesplittet[3], beobachtung_gesplittet[4]))
|
||||
except:
|
||||
print(f"Die Beobachtung {beobachtung} konnte aufgrund eines Fehlers nicht ausgeschaltet werden.")
|
||||
if beobachtung_gesplittet[1] == "R":
|
||||
#print(f"R: {beobachtung_gesplittet}")
|
||||
try:
|
||||
cursor.execute(f"""UPDATE Beobachtungen SET tachymeter_richtung_ausschalten = 1
|
||||
WHERE beobachtungenID = ? AND beobachtungsgruppeID = ? AND punktnummer_sp = ? AND punktnummer_zp = ?""",
|
||||
(beobachtung_gesplittet[0], beobachtung_gesplittet[2], beobachtung_gesplittet[3], beobachtung_gesplittet[4]))
|
||||
except:
|
||||
print(f"Die Beobachtung {beobachtung} konnte aufgrund eines Fehlers nicht ausgeschaltet werden.")
|
||||
|
||||
if beobachtung_gesplittet[1] == "ZW":
|
||||
#print(f"ZW: {beobachtung_gesplittet}")
|
||||
try:
|
||||
cursor.execute(f"""UPDATE Beobachtungen SET tachymeter_zenitwinkel_ausschalten = 1
|
||||
WHERE beobachtungenID = ? AND beobachtungsgruppeID = ? AND punktnummer_sp = ? AND punktnummer_zp = ?""",
|
||||
(beobachtung_gesplittet[0], beobachtung_gesplittet[2], beobachtung_gesplittet[3], beobachtung_gesplittet[4]))
|
||||
except:
|
||||
print(f"Die Beobachtung {beobachtung} konnte aufgrund eines Fehlers nicht ausgeschaltet werden.")
|
||||
|
||||
if beobachtung_gesplittet[1] == "gnssbx":
|
||||
#print(f"gnssbx: {beobachtung_gesplittet}")
|
||||
try:
|
||||
cursor.execute(f"""UPDATE Beobachtungen SET gnss_bx_ausschalten = 1
|
||||
WHERE beobachtungenID = ? AND punktnummer_sp = ? AND punktnummer_zp = ?""",
|
||||
(beobachtung_gesplittet[0], beobachtung_gesplittet[2], beobachtung_gesplittet[3]))
|
||||
except:
|
||||
print(f"Die Beobachtung {beobachtung} konnte aufgrund eines Fehlers nicht ausgeschaltet werden.")
|
||||
|
||||
|
||||
if beobachtung_gesplittet[1] == "gnssby":
|
||||
#print(f"gnssby: {beobachtung_gesplittet}")
|
||||
try:
|
||||
cursor.execute(f"""UPDATE Beobachtungen SET gnss_by_ausschalten = 1
|
||||
WHERE beobachtungenID = ? AND punktnummer_sp = ? AND punktnummer_zp = ?""",
|
||||
(beobachtung_gesplittet[0], beobachtung_gesplittet[2], beobachtung_gesplittet[3]))
|
||||
except:
|
||||
print(f"Die Beobachtung {beobachtung} konnte aufgrund eines Fehlers nicht ausgeschaltet werden.")
|
||||
|
||||
if beobachtung_gesplittet[1] == "gnssbz":
|
||||
#print(f"gnssbz: {beobachtung_gesplittet}")
|
||||
try:
|
||||
cursor.execute(f"""UPDATE Beobachtungen SET gnss_bz_ausschalten = 1
|
||||
WHERE beobachtungenID = ? AND punktnummer_sp = ? AND punktnummer_zp = ?""",
|
||||
(beobachtung_gesplittet[0], beobachtung_gesplittet[2], beobachtung_gesplittet[3]))
|
||||
except:
|
||||
print(f"Die Beobachtung {beobachtung} konnte aufgrund eines Fehlers nicht ausgeschaltet werden.")
|
||||
|
||||
if beobachtung_gesplittet[1] == "niv":
|
||||
#print(f"niv: {beobachtung_gesplittet}")
|
||||
try:
|
||||
cursor.execute(f"""UPDATE Beobachtungen SET niv_ausschalten = 1
|
||||
WHERE beobachtungenID = ? AND punktnummer_sp = ? AND punktnummer_zp = ?""",
|
||||
(beobachtung_gesplittet[0], beobachtung_gesplittet[2], beobachtung_gesplittet[3]))
|
||||
except:
|
||||
print(f"Die Beobachtung {beobachtung} konnte aufgrund eines Fehlers nicht ausgeschaltet werden.")
|
||||
print("Die ausgewählten Beobachtungen werden für die folgenden Iterationen ausgeschaltet.")
|
||||
con.commit()
|
||||
cursor.close()
|
||||
con.close()
|
||||
|
||||
def get_koordinaten(self, koordinatenart: str, ausgabeart: str = "Dict") -> dict[Any, MutableDenseMatrix] | None:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
if koordinatenart == "naeherung_lh":
|
||||
@@ -348,7 +438,7 @@ class Datenbankzugriff:
|
||||
for koordinate in liste_koordinaten
|
||||
}
|
||||
|
||||
def get_normalhoehe_hfp(self):
|
||||
def get_normalhoehe_hfp(self) -> list[Any]:
|
||||
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()
|
||||
@@ -357,7 +447,7 @@ class Datenbankzugriff:
|
||||
return liste_hfp
|
||||
|
||||
|
||||
def get_instrument_liste(self, typ):
|
||||
def get_instrument_liste(self, typ: str) -> list:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
liste_instrumente = cursor.execute("SELECT * FROM Instrumente WHERE typ = ?", (typ,)).fetchall()
|
||||
@@ -368,7 +458,7 @@ class Datenbankzugriff:
|
||||
liste_instrumente = f"Kein Instrument vom Typ {typ} gefunden. Folgende Typen stehen aktuell zur Auswahl: {liste_typen}"
|
||||
return liste_instrumente
|
||||
|
||||
def get_genauigkeiten_dict(self):
|
||||
def get_genauigkeiten_dict(self) -> dict[Any, Any]:
|
||||
dict = {}
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
@@ -379,7 +469,7 @@ class Datenbankzugriff:
|
||||
con.close()
|
||||
return dict
|
||||
|
||||
def get_instrumenteID_beobachtungenID_dict(self):
|
||||
def get_instrumenteID_beobachtungenID_dict(self) -> dict[Any, Any]:
|
||||
dict = {}
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
@@ -390,15 +480,22 @@ class Datenbankzugriff:
|
||||
con.close()
|
||||
return dict
|
||||
|
||||
def get_beobachtungen_id_beobachtungsgruppe_standpunkt_zielpunkt(self, beobachtungsart):
|
||||
def get_beobachtungen_id_beobachtungsgruppe_standpunkt_zielpunkt(self, beobachtungsart: str) -> list[Any]:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
liste_beobachtungen = cursor.execute(f"SELECT beobachtungenID, beobachtungsgruppeID, punktnummer_sp, punktnummer_zp FROM Beobachtungen WHERE {beobachtungsart} IS NOT NULL").fetchall()
|
||||
sql_ausdruck = f"SELECT beobachtungenID, beobachtungsgruppeID, punktnummer_sp, punktnummer_zp FROM Beobachtungen WHERE {beobachtungsart} IS NOT NULL"
|
||||
if beobachtungsart == "tachymeter_distanz":
|
||||
sql_ausdruck += " AND tachymeter_distanz_auschalten = 0"
|
||||
elif beobachtungsart == "tachymeter_richtung":
|
||||
sql_ausdruck += " AND tachymeter_richtung_ausschalten = 0"
|
||||
elif beobachtungsart == "tachymeter_zenitwinkel":
|
||||
sql_ausdruck += " AND tachymeter_zenitwinkel_ausschalten = 0"
|
||||
liste_beobachtungen = cursor.execute(sql_ausdruck).fetchall()
|
||||
cursor.close()
|
||||
con.close()
|
||||
return liste_beobachtungen
|
||||
|
||||
def get_beobachtungen_from_beobachtungenid(self):
|
||||
def get_beobachtungen_from_beobachtungenid(self) -> list[Any]:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
liste_beobachtungen = cursor.execute(f"SELECT punktnummer_sp, punktnummer_zp, beobachtungenID, beobachtungsgruppeID, tachymeter_richtung, tachymeter_zenitwinkel, tachymeter_distanz FROM Beobachtungen WHERE tachymeter_richtung IS NOT NULL").fetchall()
|
||||
@@ -406,7 +503,7 @@ class Datenbankzugriff:
|
||||
con.close()
|
||||
return liste_beobachtungen
|
||||
|
||||
def get_beobachtungen_gnssbasislinien(self):
|
||||
def get_beobachtungen_gnssbasislinien(self) -> list[Any]:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
liste_beobachtungen = cursor.execute(f"SELECT beobachtungenID, punktnummer_sp, punktnummer_zp, gnss_bx, gnss_by, gnss_bz, gnss_s0, gnss_cxx, gnss_cxy, gnss_cxz, gnss_cyy, gnss_cyz, gnss_czz FROM Beobachtungen WHERE gnss_bx IS NOT NULL AND gnss_by IS NOT NULL AND gnss_bz IS NOT NULL AND gnss_s0 IS NOT NULL AND gnss_cxx IS NOT NULL AND gnss_cxy IS NOT NULL AND gnss_cxz IS NOT NULL AND gnss_cyy IS NOT NULL AND gnss_cyz IS NOT NULL AND gnss_czz IS NOT NULL").fetchall()
|
||||
@@ -414,15 +511,15 @@ class Datenbankzugriff:
|
||||
con.close()
|
||||
return liste_beobachtungen
|
||||
|
||||
def get_beobachtungen_nivellement(self):
|
||||
def get_beobachtungen_nivellement(self) -> list[Any]:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
liste_beobachtungen = cursor.execute(f"SELECT beobachtungenID, punktnummer_sp, punktnummer_zp, niv_dh, niv_strecke, niv_anz_standpkte FROM Beobachtungen WHERE niv_dh IS NOT NULL AND niv_strecke IS NOT NULL AND niv_anz_standpkte IS NOT NULL").fetchall()
|
||||
liste_beobachtungen = cursor.execute(f"SELECT beobachtungenID, punktnummer_sp, punktnummer_zp, niv_dh, niv_strecke, niv_anz_standpkte FROM Beobachtungen WHERE niv_dh IS NOT NULL AND niv_strecke IS NOT NULL AND niv_anz_standpkte IS NOT NULL AND niv_ausschalten = 0").fetchall()
|
||||
cursor.close()
|
||||
con.close()
|
||||
return liste_beobachtungen
|
||||
|
||||
def get_datumskoordinate(self):
|
||||
def get_datumskoordinate(self) -> list[Any]:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
liste_datumskoordinate_x = cursor.execute(
|
||||
@@ -451,7 +548,7 @@ class Datenbankzugriff:
|
||||
|
||||
return liste_datumskoordinaten
|
||||
|
||||
def get_stabw_AA_Netzpunkte(self):
|
||||
def get_stabw_AA_Netzpunkte(self) -> dict[Any, Any]:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
liste_stabwAA_x = cursor.execute(f"SELECT punktnummer, stabw_vorinfo_x FROM Netzpunkte WHERE stabw_vorinfo_x IS NOT NULL").fetchall()
|
||||
@@ -481,18 +578,32 @@ class Datenbankzugriff:
|
||||
|
||||
return dict_stabwAA
|
||||
|
||||
def get_gnss_beobachtungen_punktnummern(self):
|
||||
def get_gnss_beobachtungen_punktnummern(self, gnss_komponente: str) -> list[Any]:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
liste_gnss_beobachtungen = cursor.execute(f"SELECT beobachtungenID, punktnummer_sp, punktnummer_zp FROM Beobachtungen WHERE gnss_bx IS NOT NULL AND gnss_by IS NOT NULL AND gnss_bz IS NOT NULL AND gnss_s0 IS NOT NULL AND gnss_cxx IS NOT NULL AND gnss_cxy IS NOT NULL AND gnss_cxz IS NOT NULL AND gnss_cyy IS NOT NULL AND gnss_cyz IS NOT NULL AND gnss_czz IS NOT NULL").fetchall()
|
||||
sql = f"""SELECT beobachtungenID, punktnummer_sp, punktnummer_zp
|
||||
FROM Beobachtungen
|
||||
WHERE {gnss_komponente} IS NOT NULL
|
||||
AND gnss_s0 IS NOT NULL
|
||||
AND gnss_cxx IS NOT NULL AND gnss_cxy IS NOT NULL AND gnss_cxz IS NOT NULL
|
||||
AND gnss_cyy IS NOT NULL AND gnss_cyz IS NOT NULL AND gnss_czz IS NOT NULL"""
|
||||
|
||||
if gnss_komponente == "gnss_bx":
|
||||
sql += " AND gnss_bx_ausschalten = 0"
|
||||
elif gnss_komponente == "gnss_by":
|
||||
sql += " AND gnss_by_ausschalten = 0"
|
||||
elif gnss_komponente == "gnss_bz":
|
||||
sql += " AND gnss_bz_ausschalten = 0"
|
||||
|
||||
liste_gnss_beobachtungen = cursor.execute(sql).fetchall()
|
||||
cursor.close()
|
||||
con.close()
|
||||
return liste_gnss_beobachtungen
|
||||
|
||||
def get_nivellement_beobachtungen_punktnummern(self):
|
||||
def get_nivellement_beobachtungen_punktnummern(self) -> list[Any]:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
liste_nivellement_beobachtungen = cursor.execute(f"SELECT beobachtungenID, punktnummer_sp, punktnummer_zp FROM Beobachtungen WHERE niv_dh IS NOT NULL AND niv_strecke IS NOT NULL AND niv_anz_standpkte IS NOT NULL").fetchall()
|
||||
liste_nivellement_beobachtungen = cursor.execute(f"SELECT beobachtungenID, punktnummer_sp, punktnummer_zp FROM Beobachtungen WHERE niv_dh IS NOT NULL AND niv_strecke IS NOT NULL AND niv_anz_standpkte IS NOT NULL AND niv_ausschalten = 0").fetchall()
|
||||
cursor.close()
|
||||
con.close()
|
||||
return liste_nivellement_beobachtungen
|
||||
|
||||
Reference in New Issue
Block a user