Import Näherungskoordinaten aus Tachymetermessung in DB
This commit is contained in:
@@ -6,29 +6,62 @@
|
||||
"metadata": {
|
||||
"collapsed": true,
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-12-01T08:31:31.422078Z",
|
||||
"start_time": "2025-12-01T08:31:28.994551Z"
|
||||
"end_time": "2025-12-05T16:08:32.972973Z",
|
||||
"start_time": "2025-12-05T16:08:32.962798Z"
|
||||
}
|
||||
},
|
||||
"source": "",
|
||||
"source": [
|
||||
"# Hier werden alle verwendeten Pythonmodule importiert\n",
|
||||
"import Datenbank\n",
|
||||
"import Import"
|
||||
],
|
||||
"outputs": [],
|
||||
"execution_count": null
|
||||
"execution_count": 1
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-12-05T16:08:32.981718Z",
|
||||
"start_time": "2025-12-05T16:08:32.978622Z"
|
||||
}
|
||||
},
|
||||
"cell_type": "code",
|
||||
"source": "",
|
||||
"source": [
|
||||
"# Anlegen der Datenbank, wenn nicht vorhanden\n",
|
||||
"pfad_datenbank = r\"Campusnetz.db\"\n",
|
||||
"Datenbank.Datenbank_anlegen(pfad_datenbank)\n",
|
||||
"\n",
|
||||
"# Import vervollständigen\n",
|
||||
"imp = Import.Import(pfad_datenbank)"
|
||||
],
|
||||
"id": "82d514cd426db78b",
|
||||
"outputs": [],
|
||||
"execution_count": null
|
||||
"execution_count": 2
|
||||
},
|
||||
{
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"ExecuteTime": {
|
||||
"end_time": "2025-12-05T16:08:32.992364Z",
|
||||
"start_time": "2025-12-05T16:08:32.987964Z"
|
||||
}
|
||||
},
|
||||
"cell_type": "code",
|
||||
"source": "",
|
||||
"source": [
|
||||
"# Import der Koordinatendatei(en) vom Tachymeter\n",
|
||||
"pfad_datei = r\"Daten\\campusnetz_koordinaten_25_11.csv\"\n",
|
||||
"imp.import_koordinaten_lh_tachymeter(pfad_datei)\n"
|
||||
],
|
||||
"id": "d3bce3991a8962dc",
|
||||
"outputs": [],
|
||||
"execution_count": null
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Der Import wurde abgebrochen, weil mindestens ein Teil der Punktnummern aus der Datei Daten\\campusnetz_koordinaten_25_11.csv bereits in der Datenbank vorhanden ist. Bitte in der Datei ändern und Import wiederholen.\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"execution_count": 3
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
||||
53
Daten/campusnetz_koordinaten_25_11.csv
Normal file
53
Daten/campusnetz_koordinaten_25_11.csv
Normal file
@@ -0,0 +1,53 @@
|
||||
10009;1000,0000;2000,0000;100,0000;
|
||||
10006;1000,0000;2032,6863;99,5825;
|
||||
10010;1011,8143;1973,3252;99,9259;
|
||||
10018;1008,5759;1942,7620;100,2553;
|
||||
10008;979,7022;1991,4010;99,7320;
|
||||
10005;966,5154;2014,6496;99,7200;
|
||||
10003;908,4312;1996,1248;99,7403;
|
||||
10004;954,1536;2021,6822;99,4916;
|
||||
10007;921,7481;1973,6201;99,9176;
|
||||
10001;833,9439;1978,3737;99,8946;
|
||||
10002;875,9684;1998,5174;99,5867;
|
||||
100016;928,2783;1944,0082;100,0459;
|
||||
10011;908,4308;1996,1277;99,7822;
|
||||
10011a;844,9567;1891,1570;99,8117;
|
||||
10026;1020,0059;1913,8703;100,3059;
|
||||
10027;1016,9451;1866,2914;100,3251;
|
||||
10043;1031,2077;1822,4739;100,3035;
|
||||
10044;1025,9760;1782,4835;100,5461;
|
||||
10021;992,7607;1904,8854;100,3533;
|
||||
10020;984,6187;1903,3601;100,3423;
|
||||
10024;997,4831;1881,7862;100,3032;
|
||||
10025;996,3241;1866,8440;100,4102;
|
||||
10022;990,0679;1896,5360;100,2194;
|
||||
10023;987,3223;1889,8762;100,3430;
|
||||
10019;962,6387;1902,3565;99,9772;
|
||||
10033;964,0191;1860,8023;99,8551;
|
||||
10017;931,6761;1900,9945;99,9572;
|
||||
10052;1037,8750;1757,2999;100,2737;
|
||||
10042;1017,3489;1803,0742;100,3441;
|
||||
10053;1033,3758;1723,4258;100,2774;
|
||||
10037;966,2253;1774,2051;99,9957;
|
||||
10040;990,8832;1780,9678;100,1677;
|
||||
10041;993,2769;1812,0310;100,4749;
|
||||
10038;958,1899;1804,7135;100,0741;
|
||||
10051;1008,9811;1750,1838;100,2880;
|
||||
10036;948,6403;1763,5807;100,0063;
|
||||
10035;910,1265;1768,0099;100,0781;
|
||||
10039;960,3884;1820,0543;100,0983;
|
||||
10059;1049,2587;1662,5451;100,0148;
|
||||
10050;1010,0246;1726,2445;100,1493;
|
||||
10049;984,7667;1714,5709;100,0101;
|
||||
100;957,3912;1716,2864;99,7777;
|
||||
10013;900,9076;1902,8730;99,7911;
|
||||
10028;853,9608;1815,7417;99,7793;
|
||||
10012;895,3032;1924,1523;99,8758;
|
||||
10014;913,9706;1918,7731;99,8872;
|
||||
10031;937,1557;1855,2805;99,8479;
|
||||
10015;912,5157;1937,6471;99,9834;
|
||||
10032;954,6732;1845,9356;99,7240;
|
||||
10030;908,4749;1828,8008;99,5581;
|
||||
10029;909,3343;1814,8767;99,5486;
|
||||
10034;860,2357;1758,9282;99,7370;
|
||||
10045;867,2324;1705,0630;99,7214;
|
||||
|
28
Datenbank.py
Normal file
28
Datenbank.py
Normal file
@@ -0,0 +1,28 @@
|
||||
import os
|
||||
import sqlite3
|
||||
|
||||
|
||||
class Datenbank_anlegen:
|
||||
def __init__(self, pfad_datenbank):
|
||||
self.pfad_datenbank = pfad_datenbank
|
||||
self.db_anlegen()
|
||||
|
||||
def db_anlegen(self):
|
||||
# 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)
|
||||
cursor = con.cursor()
|
||||
cursor.executescript("""CREATE TABLE Netzpunkte (
|
||||
punktnummer TEXT(10),
|
||||
naeherungx_lh NUMERIC(9,3),
|
||||
naeherungy_lh NUMERIC(7,3),
|
||||
naeherungz_lh NUMERIC(8,3),
|
||||
naeherungx_us NUMERIC(9,3),
|
||||
naeherungy_us NUMERIC(7,3),
|
||||
naeherungz_us NUMERIC(8,3),
|
||||
CONSTRAINT pk_Netzpunkte PRIMARY KEY (punktnummer)
|
||||
);
|
||||
""");
|
||||
con.commit()
|
||||
cursor.close()
|
||||
con.close()
|
||||
53
Import.py
Normal file
53
Import.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import csv
|
||||
import sqlite3
|
||||
|
||||
class Import:
|
||||
def __init__(self, pfad_datenbank):
|
||||
self.pfad_datenbank = pfad_datenbank
|
||||
pass
|
||||
|
||||
def import_koordinaten_lh_tachymeter(self, pfad_datei):
|
||||
liste_punktnummern = []
|
||||
liste_punktnummern_vorher = []
|
||||
liste_punktnummern_vorher_db = []
|
||||
Import_abbrechen = False
|
||||
|
||||
|
||||
with open (pfad_datei, newline='', encoding='utf-8') as csvfile:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
liste_punktnummern_db = [r[0] for r in cursor.execute("SELECT DISTINCT punktnummer FROM Netzpunkte").fetchall()]
|
||||
cursor.close()
|
||||
con.close()
|
||||
|
||||
r = csv.reader(csvfile, delimiter=';')
|
||||
for row in r:
|
||||
liste_punktnummern.append(row[0])
|
||||
if row[0] in liste_punktnummern_vorher:
|
||||
Import_abbrechen = True
|
||||
print(f"Der Import wurde abgebrochen, weil in der Datei {pfad_datei} Punktnummern doppelt vorhanden sind. Bitte in der Datei ändern und Import wiederholen.")
|
||||
break
|
||||
|
||||
liste_punktnummern_vorher.append(row[0])
|
||||
|
||||
if row[0] in liste_punktnummern_db:
|
||||
Import_abbrechen = True
|
||||
print(f"Der Import wurde abgebrochen, weil mindestens ein Teil der Punktnummern aus der Datei {pfad_datei} bereits in der Datenbank vorhanden ist. Bitte in der Datei ändern und Import wiederholen.")
|
||||
break
|
||||
liste_punktnummern_vorher_db.append(row[0])
|
||||
|
||||
if Import_abbrechen == False:
|
||||
con = sqlite3.connect(self.pfad_datenbank)
|
||||
cursor = con.cursor()
|
||||
|
||||
with open(pfad_datei, newline='', encoding='utf-8') as csvfile:
|
||||
r = csv.reader(csvfile, delimiter=';')
|
||||
for row in r:
|
||||
cursor.execute(
|
||||
"INSERT INTO Netzpunkte (punktnummer, naeherungx_lh, naeherungy_lh, naeherungz_lh) VALUES (?, ?, ?, ?)",
|
||||
(row[0], row[1], row[2], row[3]))
|
||||
|
||||
con.commit()
|
||||
cursor.close()
|
||||
con.close()
|
||||
print("Der Import der Näherungskoordinaten wurde erfolgreich abgeschlossen")
|
||||
@@ -133,7 +133,7 @@ l = sp.Matrix([P1[0], P1[1], P1[2], P2[0], P2[1], P2[2], P3[0], P3[1], P3[2], P4
|
||||
|
||||
while True:
|
||||
if anzahl_iterationen == 0:
|
||||
zahlen_0 = {dX: float(Translation[0]), dY: float(Translation[1]), dZ: float(Translation[2]), m: float(m0), q0: float(q0_wert), q1: floaT(q1_wert),
|
||||
zahlen_0 = {dX: float(Translation[0]), dY: float(Translation[1]), dZ: float(Translation[2]), m: float(m0), q0: float(q0_wert), q1: float(q1_wert),
|
||||
q2: float(q2_wert),
|
||||
q3: float(q3_wert), xp1: p1[0], yp1: p1[1], zp1: p1[2], xp2: p2[0], yp2: p2[1], zp2: p2[2], xp3: p3[0],
|
||||
yp3: p3[1], zp3: p3[2], xp4: p4[0], yp4: p4[1], zp4: p4[2], xp5: p5[0], yp5: p5[1], zp5: p5[2]}
|
||||
@@ -215,7 +215,7 @@ while True:
|
||||
alle_kleiner = False
|
||||
|
||||
|
||||
if alle_kleiner and alle_kleiner_vorherige_iteration or anzahl_iterationen == 200:
|
||||
if alle_kleiner and alle_kleiner_vorherige_iteration or anzahl_iterationen == 20:
|
||||
break
|
||||
|
||||
alle_kleiner_vorherige_iteration = alle_kleiner
|
||||
@@ -251,8 +251,18 @@ for v in l_berechnet_i:
|
||||
print(f"{float(v):.3f}")
|
||||
|
||||
print("Streckendifferenzen:")
|
||||
streckendifferenzen = [P - L].norm() for P, L in zip(liste_punkte_zielsystem, l_berechnet_i)
|
||||
print([roundfloat(s.evalf()) for s in strecken])
|
||||
streckendifferenzen = [(P - L).norm() for P, L in zip(liste_punkte_zielsystem, liste_l_berechnet_i)]
|
||||
print([round(float(s), 6) for s in streckendifferenzen])
|
||||
|
||||
Schwerpunkt_Zielsystem = sum(liste_punkte_zielsystem, sp.Matrix([0, 0, 0])) / len(liste_punkte_zielsystem)
|
||||
Schwerpunkt_berechnet = sum(liste_l_berechnet_i, sp.Matrix([0, 0, 0])) / len(liste_l_berechnet_i)
|
||||
|
||||
Schwerpunktsdifferenz = Schwerpunkt_Zielsystem - Schwerpunkt_berechnet
|
||||
|
||||
print("\nDifferenz Schwerpunkt (Vektor):")
|
||||
print(Schwerpunktsdifferenz.evalf(3))
|
||||
|
||||
print("Betrag der Schwerpunkt-Differenz:")
|
||||
print(f"{float(Schwerpunktsdifferenz.norm()):.3f}m")
|
||||
|
||||
#ToDo: Abweichungen in Printausgabe ausgeben!
|
||||
Reference in New Issue
Block a user