zusammenfügen 02.2.
This commit is contained in:
@@ -41,7 +41,7 @@ class VKS:
|
||||
|
||||
self.db_zugriff = Datenbank.Datenbankzugriff(self.pfad_datenbank)
|
||||
|
||||
def varianzkomponten_berechnen(self, Jacobimatrix_symbolisch_liste_beobachtungsvektor: list, res: dict, R: np.ndarray) -> None:
|
||||
def varianzkomponten_berechnen(self, Jacobimatrix_symbolisch_liste_beobachtungsvektor: list, res: dict, R: np.ndarray) -> pd.DataFrame:
|
||||
"""Berechnet a-posteriori Varianzen und a-posteriori Standardabweichungen je Beobachtungsgruppe.
|
||||
|
||||
Teilt die Residuen v, die Gewichtsmatrix P sowie die Redundanzmatrix R gemäß der in
|
||||
@@ -57,10 +57,12 @@ class VKS:
|
||||
:type res: dict
|
||||
:param R: Redundanzmatrix (z. B. aus R = Q_vv @ P oder äquivalent), passend zu v/P dimensioniert.
|
||||
:type R: np.ndarray
|
||||
:return: None
|
||||
:rtype: None
|
||||
:return: DataFrame mit den Spalten 'Beobachtungsgruppe', 'Standardabweichung', 'Varianz'
|
||||
:rtype: pd.DataFrame
|
||||
"""
|
||||
|
||||
liste_ergebnisse = []
|
||||
|
||||
# Zeilen- und Spaltennummern der jeweiligen Beobachtungsgruppe, z.B. SD für Schrägdistanz ermitteln
|
||||
dict_indizes_beobachtungsgruppen = Datumsfestlegung.Datumsfestlegung.indizes_beobachtungsvektor_nach_beobachtungsgruppe(
|
||||
Jacobimatrix_symbolisch_liste_beobachtungsvektor)
|
||||
@@ -76,10 +78,10 @@ class VKS:
|
||||
aufgeteilt_P_SD = res["P"][z_start: z_ende + 1, s_start: s_ende + 1]
|
||||
aufgeteilt_R_SD = R[z_start: z_ende + 1, s_start: s_ende + 1]
|
||||
ri_SD = sum(np.diag(aufgeteilt_R_SD))
|
||||
s0_aposteriori_SD = Genauigkeitsmaße.berechne_s0apost(aufgeteilt_v_SD, aufgeteilt_P_SD, ri_SD)
|
||||
print(f"s0 aposteriori der Beobachtungsgruppe {beobachtungsgruppe} beträgt: {s0_aposteriori_SD:.4f}")
|
||||
print(
|
||||
f"Varianz aposteriori der Beobachtungsgruppe {beobachtungsgruppe} beträgt: {s0_aposteriori_SD ** 2:.4f}")
|
||||
s0_aposteriori_SD = Genauigkeitsmaße.berechne_s0apost(aufgeteilt_v_SD, aufgeteilt_P_SD, ri_SD, False)
|
||||
liste_ergebnisse.append(
|
||||
{"Beobachtungsgruppe": beobachtungsgruppe, "Standardabweichung a posteriori": s0_aposteriori_SD,
|
||||
"Varianz a posteriori": s0_aposteriori_SD ** 2})
|
||||
|
||||
# R = Tachymeter Richtungsbeobachtungen
|
||||
if beobachtungsgruppe == "R":
|
||||
@@ -87,10 +89,10 @@ class VKS:
|
||||
aufgeteilt_P_R = res["P"][z_start: z_ende + 1, s_start: s_ende + 1]
|
||||
aufgeteilt_R_R = R[z_start: z_ende + 1, s_start: s_ende + 1]
|
||||
ri_R = sum(np.diag(aufgeteilt_R_R))
|
||||
s0_aposteriori_R = Genauigkeitsmaße.berechne_s0apost(aufgeteilt_v_R, aufgeteilt_P_R, ri_R)
|
||||
print(f"s0 aposteriori der Beobachtungsgruppe {beobachtungsgruppe} beträgt: {s0_aposteriori_R:.4f}")
|
||||
print(
|
||||
f"Varianz aposteriori der Beobachtungsgruppe {beobachtungsgruppe} beträgt: {s0_aposteriori_R ** 2:.4f}")
|
||||
s0_aposteriori_R = Genauigkeitsmaße.berechne_s0apost(aufgeteilt_v_R, aufgeteilt_P_R, ri_R, False)
|
||||
liste_ergebnisse.append(
|
||||
{"Beobachtungsgruppe": beobachtungsgruppe, "Standardabweichung a posteriori": s0_aposteriori_R,
|
||||
"Varianz a posteriori": s0_aposteriori_R ** 2})
|
||||
|
||||
# ZW = Tachymeter Zenitwinkelbeobachtung
|
||||
if beobachtungsgruppe == "ZW":
|
||||
@@ -98,10 +100,10 @@ class VKS:
|
||||
aufgeteilt_P_ZW = res["P"][z_start: z_ende + 1, s_start: s_ende + 1]
|
||||
aufgeteilt_R_ZW = R[z_start: z_ende + 1, s_start: s_ende + 1]
|
||||
ri_ZW = sum(np.diag(aufgeteilt_R_ZW))
|
||||
s0_aposteriori_ZW = Genauigkeitsmaße.berechne_s0apost(aufgeteilt_v_ZW, aufgeteilt_P_ZW, ri_ZW)
|
||||
print(f"s0 aposteriori der Beobachtungsgruppe {beobachtungsgruppe} beträgt: {s0_aposteriori_ZW:.4f}")
|
||||
print(
|
||||
f"Varianz aposteriori der Beobachtungsgruppe {beobachtungsgruppe} beträgt: {s0_aposteriori_ZW ** 2:.4f}")
|
||||
s0_aposteriori_ZW = Genauigkeitsmaße.berechne_s0apost(aufgeteilt_v_ZW, aufgeteilt_P_ZW, ri_ZW, False)
|
||||
liste_ergebnisse.append(
|
||||
{"Beobachtungsgruppe": beobachtungsgruppe, "Standardabweichung a posteriori": s0_aposteriori_ZW,
|
||||
"Varianz a posteriori": s0_aposteriori_ZW ** 2})
|
||||
|
||||
# GNSS = GNSS-Basisilinien
|
||||
if beobachtungsgruppe == "gnss":
|
||||
@@ -109,10 +111,10 @@ class VKS:
|
||||
aufgeteilt_P_gnss = res["P"][z_start: z_ende + 1, s_start: s_ende + 1]
|
||||
aufgeteilt_R_gnss = R[z_start: z_ende + 1, s_start: s_ende + 1]
|
||||
ri_gnss = sum(np.diag(aufgeteilt_R_gnss))
|
||||
s0_aposteriori_gnss = Genauigkeitsmaße.berechne_s0apost(aufgeteilt_v_gnss, aufgeteilt_P_gnss, ri_gnss)
|
||||
print(f"s0 aposteriori der Beobachtungsgruppe {beobachtungsgruppe} beträgt: {s0_aposteriori_gnss:.4f}")
|
||||
print(
|
||||
f"Varianz aposteriori der Beobachtungsgruppe {beobachtungsgruppe} beträgt: {s0_aposteriori_gnss ** 2:.4f}")
|
||||
s0_aposteriori_gnss = Genauigkeitsmaße.berechne_s0apost(aufgeteilt_v_gnss, aufgeteilt_P_gnss, ri_gnss, False)
|
||||
liste_ergebnisse.append(
|
||||
{"Beobachtungsgruppe": beobachtungsgruppe, "Standardabweichung a posteriori": s0_aposteriori_gnss,
|
||||
"Varianz a posteriori": s0_aposteriori_gnss ** 2})
|
||||
|
||||
# niv = geometrisches Nivellement
|
||||
if beobachtungsgruppe == "niv":
|
||||
@@ -120,10 +122,10 @@ class VKS:
|
||||
aufgeteilt_P_niv = res["P"][z_start: z_ende + 1, s_start: s_ende + 1]
|
||||
aufgeteilt_R_niv = R[z_start: z_ende + 1, s_start: s_ende + 1]
|
||||
ri_niv = sum(np.diag(aufgeteilt_R_niv))
|
||||
s0_aposteriori_niv = Genauigkeitsmaße.berechne_s0apost(aufgeteilt_v_niv, aufgeteilt_P_niv, ri_niv)
|
||||
print(f"s0 aposteriori der Beobachtungsgruppe {beobachtungsgruppe} beträgt: {s0_aposteriori_niv:.4f}")
|
||||
print(
|
||||
f"Varianz aposteriori der Beobachtungsgruppe {beobachtungsgruppe} beträgt: {s0_aposteriori_niv ** 2:.4f}")
|
||||
s0_aposteriori_niv = Genauigkeitsmaße.berechne_s0apost(aufgeteilt_v_niv, aufgeteilt_P_niv, ri_niv, False)
|
||||
liste_ergebnisse.append(
|
||||
{"Beobachtungsgruppe": beobachtungsgruppe, "Standardabweichung a posteriori": s0_aposteriori_niv,
|
||||
"Varianz a posteriori": s0_aposteriori_niv ** 2})
|
||||
|
||||
# lA = Anschlusspunkte für die weiche Lagerung
|
||||
if beobachtungsgruppe == "lA":
|
||||
@@ -131,10 +133,13 @@ class VKS:
|
||||
aufgeteilt_P_lA = res["P"][z_start: z_ende + 1, s_start: s_ende + 1]
|
||||
aufgeteilt_R_lA = R[z_start: z_ende + 1, s_start: s_ende + 1]
|
||||
ri_lA = sum(np.diag(aufgeteilt_R_lA))
|
||||
s0_aposteriori_lA = Genauigkeitsmaße.berechne_s0apost(aufgeteilt_v_lA, aufgeteilt_P_lA, ri_lA)
|
||||
print(f"s0 aposteriori der Beobachtungsgruppe {beobachtungsgruppe} beträgt: {s0_aposteriori_lA:.4f}")
|
||||
print(
|
||||
f"Varianz aposteriori der Beobachtungsgruppe {beobachtungsgruppe} beträgt: {s0_aposteriori_lA ** 2:.4f}")
|
||||
s0_aposteriori_lA = Genauigkeitsmaße.berechne_s0apost(aufgeteilt_v_lA, aufgeteilt_P_lA, ri_lA, False)
|
||||
liste_ergebnisse.append(
|
||||
{"Beobachtungsgruppe": beobachtungsgruppe, "Standardabweichung a posteriori": s0_aposteriori_lA,
|
||||
"Varianz a posteriori": s0_aposteriori_lA ** 2})
|
||||
|
||||
df_varianzkomponenten = pd.DataFrame(liste_ergebnisse)
|
||||
return df_varianzkomponenten
|
||||
|
||||
def vks_ausfuehren(self) -> None:
|
||||
"""Initialisiert die interaktive VKS-Eingabetabelle.
|
||||
|
||||
Reference in New Issue
Block a user