Qll Numerisch für Distanzen fertig
This commit is contained in:
832
Campusnetz.ipynb
832
Campusnetz.ipynb
File diff suppressed because it is too large
Load Diff
14
Datenbank.py
14
Datenbank.py
@@ -218,7 +218,7 @@ class Datenbankzugriff:
|
|||||||
cursor.close()
|
cursor.close()
|
||||||
con.close()
|
con.close()
|
||||||
|
|
||||||
def get_instrument(self, typ):
|
def get_instrument_liste(self, typ):
|
||||||
con = sqlite3.connect(self.pfad_datenbank)
|
con = sqlite3.connect(self.pfad_datenbank)
|
||||||
cursor = con.cursor()
|
cursor = con.cursor()
|
||||||
liste_instrumente = cursor.execute("SELECT * FROM Instrumente WHERE typ = ?", (typ,)).fetchall()
|
liste_instrumente = cursor.execute("SELECT * FROM Instrumente WHERE typ = ?", (typ,)).fetchall()
|
||||||
@@ -229,6 +229,17 @@ class Datenbankzugriff:
|
|||||||
liste_instrumente = f"Kein Instrument vom Typ {typ} gefunden. Folgende Typen stehen aktuell zur Auswahl: {liste_typen}"
|
liste_instrumente = f"Kein Instrument vom Typ {typ} gefunden. Folgende Typen stehen aktuell zur Auswahl: {liste_typen}"
|
||||||
return liste_instrumente
|
return liste_instrumente
|
||||||
|
|
||||||
|
def get_genauigkeiten_dict(self):
|
||||||
|
dict = {}
|
||||||
|
con = sqlite3.connect(self.pfad_datenbank)
|
||||||
|
cursor = con.cursor()
|
||||||
|
liste_genauigkeiten = cursor.execute("SELECT * FROM Genauigkeiten").fetchall()
|
||||||
|
for genauigkeit in liste_genauigkeiten:
|
||||||
|
dict[genauigkeit[0]] = genauigkeit[1:]
|
||||||
|
cursor.close()
|
||||||
|
con.close()
|
||||||
|
return dict
|
||||||
|
|
||||||
def get_instrumenteID_beobachtungenID_dict(self):
|
def get_instrumenteID_beobachtungenID_dict(self):
|
||||||
dict = {}
|
dict = {}
|
||||||
con = sqlite3.connect(self.pfad_datenbank)
|
con = sqlite3.connect(self.pfad_datenbank)
|
||||||
@@ -255,3 +266,4 @@ class Datenbankzugriff:
|
|||||||
cursor.close()
|
cursor.close()
|
||||||
con.close()
|
con.close()
|
||||||
return liste_beobachtungen
|
return liste_beobachtungen
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ class StochastischesModell:
|
|||||||
stabw_apriori_streckenprop = sp.Symbol(f"stabw_apriori_streckenprop_{instrumenteID_i}")
|
stabw_apriori_streckenprop = sp.Symbol(f"stabw_apriori_streckenprop_{instrumenteID_i}")
|
||||||
tachymeter_distanz = sp.Symbol(f"SD_{beobachtungenID_i}")
|
tachymeter_distanz = sp.Symbol(f"SD_{beobachtungenID_i}")
|
||||||
|
|
||||||
sigma = sp.sqrt(stabw_apriori_konstant ** 2 + (stabw_apriori_streckenprop * tachymeter_distanz / 1000) ** 2)
|
sigma = sp.sqrt(stabw_apriori_konstant ** 2 + (stabw_apriori_streckenprop * tachymeter_distanz / 1000000) ** 2)
|
||||||
liste_standardabweichungen_symbole.append(sigma)
|
liste_standardabweichungen_symbole.append(sigma)
|
||||||
|
|
||||||
Qll[i, i] = sigma ** 2
|
Qll[i, i] = sigma ** 2
|
||||||
@@ -85,8 +85,57 @@ class StochastischesModell:
|
|||||||
Export.matrix_to_csv(r"Zwischenergebnisse\Qll_Symbolisch.csv", liste_beobachtungen_symbolisch, liste_beobachtungen_symbolisch, Qll, "Qll")
|
Export.matrix_to_csv(r"Zwischenergebnisse\Qll_Symbolisch.csv", liste_beobachtungen_symbolisch, liste_beobachtungen_symbolisch, Qll, "Qll")
|
||||||
return Qll
|
return Qll
|
||||||
|
|
||||||
|
def Qll_numerisch(self, pfad_datenbank, Qll_Matrix_Symbolisch, liste_beobachtungen_symbolisch):
|
||||||
|
db_zugriff = Datenbankzugriff(pfad_datenbank)
|
||||||
|
dict_genauigkeiten = db_zugriff.get_genauigkeiten_dict()
|
||||||
|
dict_beobachtungenID_instrumenteID = db_zugriff.get_instrumenteID_beobachtungenID_dict()
|
||||||
|
|
||||||
|
liste_beobachtungen = db_zugriff.get_beobachtungen_from_beobachtungenid()
|
||||||
|
dict_beobachtungenID_distanz = {}
|
||||||
|
for standpunkt, zielpunkt, beobachtungenID, beobachtungsgruppeID, tachymeter_richtung, tachymeter_zenitwinkel, tachymeter_distanz in liste_beobachtungen:
|
||||||
|
dict_beobachtungenID_distanz[int(beobachtungenID)] = tachymeter_distanz
|
||||||
|
|
||||||
|
dict_genauigkeiten_neu = {}
|
||||||
|
for genauigkeitenID, eintrag in dict_genauigkeiten.items():
|
||||||
|
instrumenteID = int(eintrag[0])
|
||||||
|
beobachtungsart = str(eintrag[1])
|
||||||
|
stabw_apriori_konstant = eintrag[2]
|
||||||
|
stabw_apriori_streckenprop = eintrag[3]
|
||||||
|
dict_genauigkeiten_neu[(instrumenteID, beobachtungsart)] = (stabw_apriori_konstant,
|
||||||
|
stabw_apriori_streckenprop)
|
||||||
|
|
||||||
|
substitutionen = {}
|
||||||
|
|
||||||
|
for (instrumenteID, beobachtungsart), (stabw_apriori_konstant,
|
||||||
|
stabw_apriori_streckenprop) in dict_genauigkeiten_neu.items():
|
||||||
|
if stabw_apriori_konstant is not None:
|
||||||
|
substitutionen[sp.Symbol(f"stabw_apriori_konstant_{instrumenteID}")] = float(stabw_apriori_konstant)
|
||||||
|
if stabw_apriori_streckenprop is not None:
|
||||||
|
substitutionen[sp.Symbol(f"stabw_apriori_streckenprop_{instrumenteID}")] = float(
|
||||||
|
stabw_apriori_streckenprop)
|
||||||
|
liste_beobachtungen_symbolisch = [str(b) for b in liste_beobachtungen_symbolisch]
|
||||||
|
|
||||||
|
for beobachtung_symbolisch in liste_beobachtungen_symbolisch:
|
||||||
|
aufgeteilt = beobachtung_symbolisch.split("_")
|
||||||
|
beobachtungenID = int(aufgeteilt[0])
|
||||||
|
beobachtungsart = str(aufgeteilt[1])
|
||||||
|
|
||||||
|
if beobachtungsart == "SD":
|
||||||
|
distanz = dict_beobachtungenID_distanz.get(beobachtungenID, None)
|
||||||
|
if distanz is not None:
|
||||||
|
substitutionen[sp.Symbol(f"SD_{beobachtungenID}")] = float(distanz)
|
||||||
|
|
||||||
|
Qll_numerisch = Qll_Matrix_Symbolisch.xreplace(substitutionen)
|
||||||
|
|
||||||
|
Export.matrix_to_csv(
|
||||||
|
r"Zwischenergebnisse\Qll_Numerisch.csv",
|
||||||
|
liste_beobachtungen_symbolisch,
|
||||||
|
liste_beobachtungen_symbolisch,
|
||||||
|
Qll_numerisch,
|
||||||
|
"Qll"
|
||||||
|
)
|
||||||
|
|
||||||
|
return Qll_numerisch
|
||||||
|
|
||||||
def berechne_P(Q_ll):
|
def berechne_P(Q_ll):
|
||||||
P = Q_ll.inv()
|
P = Q_ll.inv()
|
||||||
|
|||||||
877
Zwischenergebnisse/Qll_Numerisch.csv
Normal file
877
Zwischenergebnisse/Qll_Numerisch.csv
Normal file
File diff suppressed because one or more lines are too long
877
Zwischenergebnisse/Qll_Symbolisch.csv
Normal file
877
Zwischenergebnisse/Qll_Symbolisch.csv
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user