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