zusammenfügen 30.1.

This commit is contained in:
2026-01-30 18:41:46 +01:00
parent 1561eb242e
commit d069b7ca81
10 changed files with 65708 additions and 35899 deletions

View File

@@ -83,9 +83,11 @@ class StochastischesModell:
for i, beobachtung_symbolisch_i in enumerate(liste_beobachtungen_symbolisch):
aufgeteilt_i = beobachtung_symbolisch_i.split("_")
beobachtungenID_i = int(aufgeteilt_i[0])
instrumenteID_i = dict_beobachtungenID_instrumenteID[beobachtungenID_i]
if aufgeteilt_i[1] == "SD" or aufgeteilt_i[1] == "R" or aufgeteilt_i[1] == "ZW":
beobachtungenID_i = int(aufgeteilt_i[0])
instrumenteID_i = dict_beobachtungenID_instrumenteID[beobachtungenID_i]
beobachtungsart_i = str(aufgeteilt_i[1])
if beobachtungsart_i == "SD":
@@ -96,7 +98,9 @@ class StochastischesModell:
sigma = sp.sqrt(stabw_apriori_konstant ** 2 + (stabw_apriori_streckenprop * tachymeter_distanz / 1000000) ** 2)
liste_standardabweichungen_symbole.append(sigma)
Qll[i, i] = sigma ** 2
varianzkompontenschaetzung = sp.Symbol(f"varkomp_{instrumenteID_i}_Tachymeter_Streckenbeobachtungen")
Qll[i, i] = (1 / varianzkompontenschaetzung) * (sigma ** 2)
elif beobachtungsart_i == "R" or beobachtungsart_i == "ZW":
stabw_apriori_konstant = sp.Symbol(f"stabw_apriori_konstant_{beobachtungsart_i}_{instrumenteID_i}")
@@ -107,8 +111,14 @@ class StochastischesModell:
sigma = sp.sqrt(
stabw_apriori_konstant ** 2 + (stabw_apriori_konstant_distanz / tachymeter_distanz) ** 2)
liste_standardabweichungen_symbole.append(sigma)
if beobachtungsart_i == "R":
varianzkompontenschaetzung = sp.Symbol(
f"varkomp_{instrumenteID_i}_Tachymeter_Richtungsbeobachtungen")
if beobachtungsart_i == "ZW":
varianzkompontenschaetzung = sp.Symbol(
f"varkomp_{instrumenteID_i}_Tachymeter_Zenitwinkelbeobachtungen")
Qll[i, i] = sigma ** 2
Qll[i, i] = (1 / varianzkompontenschaetzung) * sigma ** 2
for j in range(i + 1, len(liste_beobachtungen_symbolisch)):
beobachtung_symbolisch_j = liste_beobachtungen_symbolisch[j]
@@ -119,14 +129,16 @@ class StochastischesModell:
Qll[i, j] = 0
Qll[j, i] = 0
if aufgeteilt_i [1] == "gnssbx" or aufgeteilt_i[1] == "gnssby" or aufgeteilt_i[1] == "gnssbz":
beobachtungenID_i = int(aufgeteilt_i[0])
#beobachtungenID_i = int(aufgeteilt_i[0])
beobachtungsart_i = str(aufgeteilt_i[1])
varianzkompontenschaetzung = sp.Symbol(
f"varkomp_{instrumenteID_i}_GNSS-Rover_Basislinienbeobachtungen")
if beobachtungsart_i == "gnssbx":
cxx = sp.symbols(f"cxx_{beobachtungenID_i}")
s0 = sp.symbols(f"s0_{beobachtungenID_i}")
liste_standardabweichungen_symbole.append(cxx)
Qll[i, i] = cxx * (s0 ** 2)
Qll[i, i] = (1 / varianzkompontenschaetzung) * (cxx * (s0 ** 2))
cxy = sp.Symbol(f"cxy_{beobachtungenID_i}")
s0 = sp.symbols(f"s0_{beobachtungenID_i}")
@@ -135,8 +147,8 @@ class StochastischesModell:
aufgeteilt_j = beobachtung_symbolisch_j.split("_")
if int(aufgeteilt_j[0]) == beobachtungenID_i and aufgeteilt_j[1] == "gnssby":
Qll[i, j] = cxy * (s0 ** 2)
Qll[j, i] = cxy * (s0 ** 2)
Qll[i, j] = (1 / varianzkompontenschaetzung) * (cxy * (s0 ** 2))
Qll[j, i] = (1 / varianzkompontenschaetzung) * (cxy * (s0 ** 2))
break
cxz = sp.Symbol(f"cxz_{beobachtungenID_i}")
@@ -146,15 +158,15 @@ class StochastischesModell:
aufgeteilt_j = beobachtung_symbolisch_j.split("_")
if int(aufgeteilt_j[0]) == beobachtungenID_i and aufgeteilt_j[1] == "gnssbz":
Qll[i, j] = cxz * (s0 ** 2)
Qll[j, i] = cxz * (s0 ** 2)
Qll[i, j] = (1 / varianzkompontenschaetzung) * (cxz * (s0 ** 2))
Qll[j, i] = (1 / varianzkompontenschaetzung) * (cxz * (s0 ** 2))
break
if beobachtungsart_i == "gnssby":
cyy = sp.symbols(f"cyy_{beobachtungenID_i}")
s0 = sp.symbols(f"s0_{beobachtungenID_i}")
liste_standardabweichungen_symbole.append(cyy)
Qll[i, i] = cyy * (s0 ** 2)
Qll[i, i] = (1 / varianzkompontenschaetzung) * (cyy * (s0 ** 2))
cyz = sp.Symbol(f"cyz_{beobachtungenID_i}")
s0 = sp.symbols(f"s0_{beobachtungenID_i}")
@@ -163,21 +175,24 @@ class StochastischesModell:
aufgeteilt_j = beobachtung_symbolisch_j.split("_")
if int(aufgeteilt_j[0]) == beobachtungenID_i and aufgeteilt_j[1] == "gnssbz":
Qll[i, j] = cyz * (s0 ** 2)
Qll[j, i] = cyz * (s0 ** 2)
Qll[i, j] = (1 / varianzkompontenschaetzung) * (cyz * (s0 ** 2))
Qll[j, i] = (1 / varianzkompontenschaetzung) * (cyz * (s0 ** 2))
break
if beobachtungsart_i == "gnssbz":
czz = sp.symbols(f"czz_{beobachtungenID_i}")
s0 = sp.symbols(f"s0_{beobachtungenID_i}")
liste_standardabweichungen_symbole.append(czz)
Qll[i, i] = czz * (s0 ** 2)
Qll[i, i] = (1 / varianzkompontenschaetzung) * (czz * (s0 ** 2))
if aufgeteilt_i[1] == "niv":
beobachtungenID_i = int(aufgeteilt_i[0])
instrumenteID_i = dict_beobachtungenID_instrumenteID[beobachtungenID_i]
#beobachtungenID_i = int(aufgeteilt_i[0])
#instrumenteID_i = dict_beobachtungenID_instrumenteID[beobachtungenID_i]
beobachtungsart_i = str(aufgeteilt_i[1])
varianzkompontenschaetzung = sp.Symbol(
f"varkomp_{instrumenteID_i}_Nivellier_Hoehendifferenzbeobachtungen")
stabw_apriori_konstant = sp.Symbol(f"stabw_apriori_konstant_{beobachtungsart_i}_{instrumenteID_i}")
stabw_apriori_streckenprop = sp.Symbol(f"stabw_apriori_streckenprop_{beobachtungsart_i}_{instrumenteID_i}")
nivellement_distanz = sp.Symbol(f"niv_distanz_{beobachtungenID_i}")
@@ -186,7 +201,7 @@ class StochastischesModell:
sigma = sp.sqrt(nivellement_anz_wechselpunkte * stabw_apriori_konstant ** 2 + stabw_apriori_streckenprop ** 2 * nivellement_distanz / 1000)
liste_standardabweichungen_symbole.append(sigma)
Qll[i, i] = sigma ** 2
Qll[i, i] = (1 / varianzkompontenschaetzung) * (sigma ** 2)
Export.matrix_to_csv(r"Zwischenergebnisse\Qll_Symbolisch.csv", liste_beobachtungen_symbolisch, liste_beobachtungen_symbolisch, Qll, "Qll")
return Qll
@@ -203,6 +218,8 @@ class StochastischesModell:
liste_beobachtungen_gnss = db_zugriff.get_beobachtungen_gnssbasislinien()
liste_beobachtungen_nivellement = db_zugriff.get_beobachtungen_nivellement()
liste_varianzkomponenten = db_zugriff.get_varianzkomponentenschaetzung()
dict_beobachtungenID_distanz = {}
for standpunkt, zielpunkt, beobachtungenID, beobachtungsgruppeID, tachymeter_richtung, tachymeter_zenitwinkel, tachymeter_distanz in liste_beobachtungen_tachymeter:
dict_beobachtungenID_distanz[int(beobachtungenID)] = tachymeter_distanz
@@ -225,6 +242,9 @@ class StochastischesModell:
if stabw_apriori_konstant is not None:
dict_konstante_sd[instrumenteID] = float(stabw_apriori_konstant)
for (varianzkomponenteID, instrumenteID, beobachtungsgruppe, varianz_varianzkomponentenschaetzung) in liste_varianzkomponenten:
substitutionen[sp.Symbol(f"varkomp_{instrumenteID}_{beobachtungsgruppe.strip()}")] = float(varianz_varianzkomponentenschaetzung)
for (instrumenteID, beobachtungsart), (stabw_apriori_konstant,
stabw_apriori_streckenprop) in dict_genauigkeiten_neu.items():
@@ -347,12 +367,15 @@ class StochastischesModell:
return Qll_numerisch
def QAA_symbolisch(self, liste_beobachtungen_symbolisch: list) -> np.Matrix:
def QAA_symbolisch(self, liste_beobachtungen_symbolisch: list, pfad_datenbank: str) -> np.Matrix:
liste_standardabweichungen_symbole = []
liste_beobachtungen_symbolisch = [str(b) for b in liste_beobachtungen_symbolisch]
liste_beobachtungen_symbolisch = [b for b in liste_beobachtungen_symbolisch if b.startswith("lA_")]
Qll = sp.zeros(len(liste_beobachtungen_symbolisch), len(liste_beobachtungen_symbolisch))
db_zugriff = Datenbankzugriff(pfad_datenbank)
instrumente_id_anschlusspunkte = db_zugriff.get_instrument_liste("Anschlusspunkte")[0][0]
for i, beobachtung_symbolisch_i in enumerate(liste_beobachtungen_symbolisch):
aufgeteilt_i = beobachtung_symbolisch_i.split("_")
datumskoordinate = str(aufgeteilt_i[1])
@@ -362,7 +385,11 @@ class StochastischesModell:
sigma = sp.Symbol(f"StabwAA_{datumskoordinate}")
liste_standardabweichungen_symbole.append(sigma)
Qll[i, i] = sigma ** 2
varianzkompontenschaetzung = sp.Symbol(
f"varkomp_{instrumente_id_anschlusspunkte}_Anschlusspunkte")
liste_standardabweichungen_symbole.append(varianzkompontenschaetzung)
Qll[i, i] = (1 / varianzkompontenschaetzung) * sigma ** 2
Export.matrix_to_csv(r"Zwischenergebnisse\QAA_Symbolisch.csv", liste_beobachtungen_symbolisch, liste_beobachtungen_symbolisch, Qll, "Qll")
return Qll
@@ -374,11 +401,17 @@ class StochastischesModell:
db_zugriff = Datenbankzugriff(pfad_datenbank)
dict_stabwAA_vorinfo = db_zugriff.get_stabw_AA_Netzpunkte()
liste_varianzkomponenten = db_zugriff.get_varianzkomponentenschaetzung()
substitutionen = {}
for koordinate, stabwAA in dict_stabwAA_vorinfo.items():
substitutionen[sp.Symbol(str(koordinate).strip())] = float(stabwAA)
for (varianzkomponenteID, instrumenteID, beobachtungsgruppe,
varianz_varianzkomponentenschaetzung) in liste_varianzkomponenten:
substitutionen[sp.Symbol(f"varkomp_{instrumenteID}_Anschlusspunkte")] = float(varianz_varianzkomponentenschaetzung)
if not hasattr(self, "func_QAA_numerisch"):
self.func_QAA_numerisch = None
if not hasattr(self, "liste_symbole_lambdify_QAA"):