Messdatei (sinnvoll) einlesen
Verfasst: Freitag 28. Oktober 2022, 21:13
Hallo
ich suche nach einer Möglichkeit eine Datei nach bestimmten Kriterien sinnvoll einzulesen. Bisher habe ich nur folgendes:
In dieser Datei stehen Daten und ich brauche in einer ersten Version bestimmte Zeilen.
Die Messdatei hat folgenden strukturellen Aufbau:
Für eine besseres Verständnis hier ein Auszug einer Messdatei:
'PNT'- bzw. 'DPN'- und darunter stehende 'GIS'-Zeile sind immer eine "Einheit", wobei nur die 'PNT'- und zugehörige 'GIS' sollen in die Liste geschrieben werden ('DPN' bedeutet delited point und wird daher nicht weiter verarbeitet)
Entstehen soll eine Liste punkte[] (in einer späteren Skript-Version).
Was ich brauche:
Durchsuche die Datei Zeile für Zeile. Findest du eine Zeile, die mit 'PNT' beginnt, dann füge punkte[] ein weiteres Element hinzu. Gibt es darunter eine Zeile mit 'GIS', erweitere dieses Element mit den Informationen aus dieser Zeile.
Ein Beispiel für Zeile 11, 12 und 17/18 wie ich es (vermutlich haben möchte (wenn ihr bessere verschläge habt, was die weitere Bearbeitung der Daten angeht, dann immer her damit)):
Ich hoffe, man kann mein Anliegen nachvollziehen und ihr könnt mir helfen...
VG
Fabian
ich suche nach einer Möglichkeit eine Datei nach bestimmten Kriterien sinnvoll einzulesen. Bisher habe ich nur folgendes:
Code: Alles auswählen
# Messdatei wird eingelesen
messdatei = open('E:\\Firma\\Projekte (aktuell)\\2022-09-20_T_Messdatei\\Testdatei.txt', 'r')
Die Messdatei hat folgenden strukturellen Aufbau:
- Kopfzeilen (können unterschiedlich viele sein und sind in einer ersten Version des Skripts unwichtig)
- Messpunkte (das, was ich jetzt aktuell brauche)
Eingeleitet mit 'PNT' und kommagetrennt weiteren Informationen dahinter
Optional gefolgt von einer dazugehörigen Zeile eingeleitet mit 'GIS' - Was Anderes (kann unterschiedlich viel sein und ist in einer ersten Version des Skripts unwichtig)
Für eine besseres Verständnis hier ein Auszug einer Messdatei:
Code: Alles auswählen
JOB,FV1.0,DT2022-08-26,HM13:05:45,NMBestand_2022-8-16.gfd4,CR,NT
UNM,ANGON,DSMETER,SL%,LLDMS
DEC,AN5,CD4,EL4,DS4,AR4,SL4,LL7
CRD,NON,ETE,ELZ,OREN
SWI,PLANDROID,VR4.7.60
LOC,HZCOORDSYS,VTGEOID
LCS,NMETRS89-NHN 32,PJTM,DMETRS89,EPGRS80,LT0.000000000000,LN0.157079632679,FN500000.0000,FE0.0000,SC0.999600000000,P10.000000000000,P20.000000000000
DAT,NMETRS89,SX0.000000,SY0.000000,SZ0.000000,RX0.000000000,RY0.000000000,RZ0.000000000,SC0.000000,DTMOL,PX0,000000,PY0,000000,PZ0,000000
ELL,NMGRS80,SA6378137.000000000,IF298.257222101000
GED,NMGCG2016
RED,SLN,AE0.000,CSY,SF1.000
PNT,NM10100,CD1004,NO5664853.3020,ET686724.1620,EL,LT,LN,HT,TPREFERENCE,NTTrigonometrischer Punkt (TP),DT2022-08-15,HM15:37:42
PNT,NMPP07,CD1002,NO5664296.3700,ET687108.2964,EL130.2558,LT0.891856020118,LN0.203722573488,HT175.7256,TPREFERENCE,NTPolygonpunkt (PP),DT2022-08-16,HM11:22:44
PNT,NMFF220817001,CD6012,NO5664147.6845,ET686639.0358,EL151.7266,LT0.891835378887,LN0.203604389041,HT197.2040,TPGPS_POINT,NTNutzungsartengrenze,DT2022-08-17,HM09:50:45
PNT,NM2521,CD,NO5664114.6384,ET686625.9103,EL151.7751,LT0.891830272600,LN0.203600822850,HT197.2530,TPGPS_BASE,NT,DT2022-08-17,HM09:50:45
PNT,NMFF220817006,CD6012,NO5664154.2320,ET686637.6236,EL151.5120,LT0.891836413398,LN0.203604096481,HT196.9893,TPGPS_POINT,NTNutzungsartengrenze,DT2022-08-17,HM09:54:23
PNT,NMFF220817088,CD6006,NO5664230.3814,ET686811.3461,EL145.1069,LT0.891847364489,LN0.203648038920,HT190.5810,TPGPS_HIDDEN_DISTDIST,NTTOT,DT2022-08-17,HM10:21:46
GIS,FTLB,ATKrone=9,ATStamm=0.8
DPN,NMFF220817262,CD6017,NO5664344.3243,ET687035.3824,EL132.6197,LT0.891863953334,LN0.203704851947,HT178.0898,TP,DELETED,NTBöschung deutlich oben,DT2022-08-17,HM11:26:50
DPN,NMFF220817263,CD6017,NO5664344.1188,ET687036.1064,EL132.6243,LT0.891863916990,LN0.203705030367,HT178.0944,TP,DELETED,NTBöschung deutlich oben,DT2022-08-17,HM11:26:56
PNT,NMFF220817264,CD6017,NO5664350.7239,ET687045.0910,EL131.8676,LT0.891864901365,LN0.203707327215,HT177.3375,TPGPS_POINT,NTBöschung deutlich oben,DT2022-08-17,HM11:31:52
PNT,NMFF220817583,CD6017,NO5664278.6641,ET686946.5415,EL141.6355,LT0.891854165067,LN0.203682137599,HT187.1074,TPGPS_POINT,NTBöschung deutlich oben,DT2022-08-17,HM13:47:18
DPN,NMFF220818338,CD5103,NO5664311.9404,ET686613.4926,EL153.3613,LT0.891861275366,LN0.203599510835,HT198.8371,TP,DELETED,NTWeg unbefestigt,DT2022-08-18,HM15:11:51
PNT,NMFF220818347,CD5103,NO5664280.5812,ET686619.2512,EL154.3807,LT0.891856326283,LN0.203600661806,HT199.8567,TPTPS_POINT,NTAT,DT2022-08-18,HM15:15:01
DPN,NMFF220822375,CD6004,NO5664111.7128,ET686621.9966,EL155.4699,LT0.891829836164,LN0.203599821990,HT200.9479,TP,DELETED,NTLaubbaum,DT2022-08-22,HM12:03:43
GIS,FTLB,ATKrone=5,ATStamm=0.37
PNT,NMFF220822376,CD6004,NO5664103.7885,ET686622.5691,EL155.9097,LT0.891828590566,LN0.203599893071,HT201.3878,TPGPS_POINT,NTLaubbaum,DT2022-08-22,HM12:04:06
GIS,FTLB,ATKrone=3,ATStamm=0.12
PNT,NMFF220822393,CD6018,NO5664056.4836,ET686625.8204,EL159.7462,LT0.891821155827,LN0.203600275874,HT205.2248,TPGPS_POINT,NTBöschung undeutlich unten,DT2022-08-22,HM12:19:34
PNT,NMFF220822394,CD6018,NO5664053.1698,ET686626.0167,EL159.9720,LT0.891820635184,LN0.203600294850,HT205.4507,TPGPS_POINT,NTBöschung undeutlich unten,DT2022-08-22,HM12:19:42
[PP_RW5_START]
--PP Time: StartWeek=2224,StartSec=378731,StopWeek=2224,StopSec=378734
--Antenna: Desc=GeoMax GNSS Zenith 60,True=2.020m,Meas=2.020m,ARP_V=0.0mm,ARP_H=0.0mm,NGS_ID=" ",NGS_L1=71.9mm,NGS_L2=63.2mm
AH,DC2,MA2.020,ME2,RA2.020
EP,TM09:11:39,LA51.097142839,LN11.663090210,HT212.2634,RH0.0111,RV0.0169,DH0.7,DV1.2,GM4,CL1
GS,PNFF220825393,N 5664001.0078,E 686463.3569,EL166.7820,--6001
[PP_RW5_END]
GPS,DT2022-08-25,HM09:11:39,BS3055,PTFF220825393,CD6001,LT0.891813380897,LN0.203559325121,HT212.2634,AH2.0200,BH0.0000,US09:11:55,UE09:11:58,NTGeländepunkt
QTY,EP15,GP7,GS4,BD2,GA7,HD0.700,VD1.200,PD1.400,GD2.100,PH0.0111,PV0.0169,FQRTK_FIXED,ES1
COV,XX0.000076279,XY0.000004352,XZ0.000034993,YY0.000018629,YZ0.000011362,ZZ0.000083573
TPS,DT2022-08-26,HM08:47:44,IH0.0000,STFF220826036,PTFF220824021,CD1002,HA5.771731185,VA1.613106488,SD7.0109,TH0.0850,RT0,PK0.000,PM28,AM3,NTPolygonpunkt (PP)
TPS,DT2022-08-26,HM08:48:06,IH0.0000,STFF220826036,PTFF220824022,CD1002,HA5.863502604,VA1.682960282,SD2.5074,TH0.0850,RT0,PK0.000,PM28,AM3,NTPolygonpunkt (PP)
TPS,DT2022-08-26,HM08:48:45,IH0.0000,STFF220826036,PTFF220824024,CD1002,HA4.842914945,VA1.476365887,SD9.0301,TH0.0850,RT0,PK0.000,PM28,AM3,NTPolygonpunkt (PP)
TPS,DT2022-08-26,HM08:49:10,IH0.0000,STFF220826036,PTFF220824023,CD1002,HA4.599390264,VA1.457921011,SD7.6589,TH0.0850,RT0,PK0.000,PM28,AM3,NTPolygonpunkt (PP)
NTE,DT2022-08-26,HM08:49:19,CD,NTStationierung: FF220826036 Freie Stationierung
STB,DT2022-08-26,HM08:49:19,TPFREE_STATION,STFF220826036,IH0.0000,AZ0.000000000
TPS,DT2022-08-26,HM08:47:44,IH0.0000,STFF220826036,PTFF220824021,CD1002,HA5.771731185,VA1.613106488,SD7.0109,TH0.0850,RT0,PK0.000,PM28,AM3,NTPolygonpunkt (PP)
TPS,DT2022-08-26,HM08:48:06,IH0.0000,STFF220826036,PTFF220824022,CD1002,HA5.863502604,VA1.682960282,SD2.5074,TH0.0850,RT0,PK0.000,PM28,AM3,NTPolygonpunkt (PP)
TPS,DT2022-08-26,HM08:48:45,IH0.0000,STFF220826036,PTFF220824024,CD1002,HA4.842914945,VA1.476365887,SD9.0301,TH0.0850,RT0,PK0.000,PM28,AM3,NTPolygonpunkt (PP)
TPS,DT2022-08-26,HM08:49:10,IH0.0000,STFF220826036,PTFF220824023,CD1002,HA4.599390264,VA1.457921011,SD7.6589,TH0.0850,RT0,PK0.000,PM28,AM3,NTPolygonpunkt (PP)
STE,TPFREE_STATION,STFF220826036
STK,STPOINT,PNPP04,PX686955.2759,PY5664606.5162,PZ122.7125,SNPP04_STK,SX686955.2808,SY5664606.5202,SZ122.7074,DX-0.0050,DY-0.0040,DZ0.0051
STK,STPOINT,PNPP03,PX686902.6953,PY5664586.1861,PZ129.8737,SNPP03_STK,SX686902.6974,SY5664586.1732,SZ129.8678,DX-0.0022,DY0.0129,DZ0.0059
Entstehen soll eine Liste punkte[] (in einer späteren Skript-Version).
Was ich brauche:
Durchsuche die Datei Zeile für Zeile. Findest du eine Zeile, die mit 'PNT' beginnt, dann füge punkte[] ein weiteres Element hinzu. Gibt es darunter eine Zeile mit 'GIS', erweitere dieses Element mit den Informationen aus dieser Zeile.
Ein Beispiel für Zeile 11, 12 und 17/18 wie ich es (vermutlich haben möchte (wenn ihr bessere verschläge habt, was die weitere Bearbeitung der Daten angeht, dann immer her damit)):
Code: Alles auswählen
punkte=(
((NM, 10100), (CD, 1004), (NO, 5664853.3020), (ET 686724.1620), (EL, ), (LT, ), (LN, ), (HT, ), (TP, REFERENCE), (NT, Trigonometrischer Punkt (TP)), (DT, 2022-08-15), (HM, 15:37:42)),
((NM, PP07), (CD, 1002), (NO, 5664296.3700), (ET, 687108.2964), (EL, 130.2558), (LT, 0.891856020118), (LN, 0.203722573488), (HT, 175.7256), (TP, REFERENCE), (NT, Polygonpunkt (PP)), (DT, 2022-08-16), (HM, 11:22:44)),
((NM, FF220817088), (CD, 6006), (NO, 5664230.3814), (ET, 686811.3461), (EL, 145.1069), (LT, 0.891847364489), (LN, 0.203648038920), (HT, 190.5810), (TP, GPS_HIDDEN_DISTDIST), (NT, TOT), (DT, 2022-08-17), (HM, 10:21:46), (GIS, (Krone, 9), (Stamm, 0.8)))
)
VG
Fabian