Daten aus Textdatei auslesen und neue Textdatei erzeugen



  • Hallo, ich bin neu hier und habe keinerlei Erfahrungen im Bereich des Programmierens.Daher habe ich mir gedacht hier auf fachkundige Hilfe zu stoßen.
    zu meinem Problem:
    Mir liegt eine Textdatei mit Messdaten einer Messfahrt eines PKW vor.
    In dieser Datei befinden sich unter anderem die Koordinaten der Messfahrt und die in diesem Moment gefahrene Geschwindigkeit.
    Ich benötige jetzt ein Tool, dass die Geschwindigkeiten analysiert und die dazu gehörigen Koordinaten in einer separaten Textdatei ausgibt.
    Die Kriterien hierfür sind Geschwindigkeitsbereiche von 0-30Km/h ;30-60Km/h ;60-90Km/h ;90-120Km/h ;120-150Km/h und 150-180Km/h . Für jeden einzelnen Geschwindigkeitsbereich soll eine eigene Textdatei ausgegeben werden.
    Das Programm soll also für den ersten Bereich zum Beispiel die Geschwindigkeiten durchsuchen ob sie >0 bis <=30 Km/h ist und bei Zutreffen die dazugehörigen Koordinaten ausgeben. Wird der Geschwindigkeitsbereich verlassen, so soll weiter gesucht werden, bis wieder der Geschwindigkeitsbereich erreicht wird. Die einzelnen Koordinatenhäppchen sollen dann folgendermaßen ausgegeben werden.(Für die nächsten Bereiche muss die Prozedur dann separat nochmal durchgeführt werden aber eben dann mit v >30 < 90Km/h usw...

    <?xml version="1.0" encoding="UTF-8"?>
    <kml xmlns="http://earth.google.com/kml/2.0">
    <Document>
    <Placemark>
      <description>Messdaten Ausgabe fuer Google Earth</description>
      <name>1. Bereich bis 20Km/h</name>
      <LookAt>
        <longitude>10.22287943</longitude>
        <latitude>48.53469316</latitude>
        <range>10000</range>
        <tilt>0</tilt>
        <heading>0</heading>
      </LookAt>
      <visibility>1</visibility>
      <open>0</open>
      <Style>
        <LineStyle>
          <color>ff00ffff</color>
          <width>2</width>
        </LineStyle>
      </Style>
      <LineString>
        <coordinates>
           11.30542990, 53.01130095
           11.30548484, 53.01121787
           11.30554725, 53.01111891
           11.30560671, 53.01103081
           11.30566877, 53.01095905
           11.30571870, 53.01088453
           11.30576740, 53.01081492
           11.30581275, 53.01074798
           11.30585147, 53.01068893
           11.30589353, 53.01063361
           11.30593840, 53.01057987
           11.30601001, 53.01052692
           11.30609762, 53.01047995
           11.30618769, 53.01043644
           11.30628945, 53.01038574
           11.30638664, 53.01034438
           11.30649139, 53.01029273
           11.30661147, 53.01024012
           11.30673395, 53.01019177
           11.30685523, 53.01014063
           11.30698443, 53.01009017
           11.30711324, 53.01003473
           11.30723452, 53.00998011
           11.30736523, 53.00992118
           11.30750157, 53.00985962
           11.30765401, 53.00980819
           11.30779321, 53.00974741
           11.30794016, 53.00968564
           11.30806790, 53.00962749
           11.30821757, 53.00955885
    </coordinates>
    </LineString>
    </Placemark>
    <Placemark>
    <LineString>
    <coordinates>       
           11.31431881, 53.00327452
           11.31442600, 53.00316499
           11.31457737, 53.00307185
           11.31475214, 53.00299654
           11.31494770, 53.00292923
           11.31513820, 53.00287706
           11.31533833, 53.00282479
           11.31555659, 53.00276933
           11.31577585, 53.00270887
           11.31598373, 53.00265331
           11.31620412, 53.00259342
           11.31641181, 53.00253835
           11.31660326, 53.00248433
           11.31680765, 53.00242762
           11.31701214, 53.00237093
           11.31720604, 53.00231792
           11.31739188, 53.00225510
           11.31753382, 53.00219089
           11.31768032, 53.00211538
           11.31780689, 53.00201929
           11.31791473, 53.00191623
           11.31801254, 53.00181014
           11.31809001, 53.00169570
           11.31817757, 53.00158015
           11.31826034, 53.00147096
           11.31833510, 53.00135814
           11.31841490, 53.00123595
           11.31850170, 53.00111844
           11.31858933, 53.00100286
           11.31867668, 53.00088660
           11.31876021, 53.00076679
           11.31884066, 53.00065943
           11.31892388, 53.00054016
    </coordinates>
    </LineString>
    </Placemark>
    <Placemark>
    <LineString>
    <coordinates>       
           11.31970742, 52.99858805
           11.31981201, 52.99856593
           11.31990618, 52.99854594
           11.32000568, 52.99850666
           11.32009895, 52.99845917
           11.32018000, 52.99841361
           11.32025323, 52.99836518
           11.32031137, 52.99831737
           11.32038279, 52.99827487
           11.32043598, 52.99822660
           11.32047941, 52.99817566
           11.32052730, 52.99812815
           11.32055113, 52.99807767
           11.32053836, 52.99802143
           11.32049526, 52.99795580
           11.32043279, 52.99788692
           11.32037434, 52.99780914
           11.32030620, 52.99772865
           11.32026512, 52.99764129
           11.32020494, 52.99753296
           11.32013957, 52.99741381
           11.32007142, 52.99728311
           11.32000209, 52.99714940
           11.31992480, 52.99701494
           11.31984346, 52.99688878
           11.31975257, 52.99676292
           11.31965195, 52.99663901
           11.31952699, 52.99651955
           11.31940690, 52.99639451
           11.31926027, 52.99627237
           11.31911080, 52.99616151
           11.31895449, 52.99605194
           11.31881894, 52.99595456
           11.31867530, 52.99585519
           11.31854306, 52.99577002
           11.31841967, 52.99568415
           11.31831113, 52.99561398
           11.31823118, 52.99556387
           11.31816665, 52.99552796
           11.31813883, 52.99550064
           11.31814481, 52.99546551
           11.31817336, 52.99544134
           11.31822685, 52.99542190
           11.31830060, 52.99539660
           11.31838314, 52.99536513
           11.31850059, 52.99533632
           11.31863428, 52.99529818
           11.31878650, 52.99525841
           11.31895767, 52.99521725
           11.31911799, 52.99518246
           11.31930723, 52.99515162
           11.31950350, 52.99513324
           11.31969132, 52.99511246
           11.31990070, 52.99509428
           11.32009997, 52.99508220
           11.32029971, 52.99507274
           11.32049641, 52.99505983
           11.32070231, 52.99504528
           11.32091436, 52.99502165
           11.32112775, 52.99500118
           11.32133645, 52.99495947
           11.32154545, 52.99492500
    </coordinates>
    </LineString>
    </Placemark>
    <Placemark>
    <LineString>
    <coordinates>        
           11.32573511, 52.99370198
           11.32590847, 52.99359321
           11.32606595, 52.99349514
           11.32621603, 52.99339511
           11.32638441, 52.99329120
           11.32655718, 52.99317908
           11.32671841, 52.99307634
           11.32688822, 52.99296776
           11.32704453, 52.99286296
           11.32718819, 52.99276407
           11.32735103, 52.99265918
           11.32752607, 52.99255526
           11.32771008, 52.99245307
           11.32790471, 52.99235754
           11.32810991, 52.99225712
           11.32830498, 52.99216582
           11.32852277, 52.99206550
           11.32873649, 52.99196724
           11.32896098, 52.99186937
           11.32917025, 52.99177862
           11.32936842, 52.99169241
           11.32956864, 52.99160816
           11.32977531, 52.99151646
           11.32998615, 52.99141944
           11.33020599, 52.99132150
           11.33042249, 52.99122388
           11.33063580, 52.99113717
           11.33083220, 52.99104904
           11.33098239, 52.99097563
           11.33114769, 52.99090925
           11.33130038, 52.99083349
           11.33146130, 52.99076127
           11.33161186, 52.99069305
           11.33175406, 52.99062077
           11.33188638, 52.99054527
           11.33200920, 52.99046583
           11.33212064, 52.99037700
           11.33223094, 52.99028301
           11.33231365, 52.99019016
           11.33239008, 52.99009794
           11.33245075, 52.99000743
           11.33250499, 52.98991830
           11.33256303, 52.98983152
           11.33261065, 52.98975535
           11.33265167, 52.98968592
           11.33268733, 52.98962587
           11.33272300, 52.98956977
           11.33274723, 52.98952616
           11.33276938, 52.98948715
           11.33278055, 52.98945638
           11.33277254, 52.98942208
           11.33276101, 52.98939699
           11.33272498, 52.98938395
           11.33269367, 52.98936815
           11.33266844, 52.98935656
           11.33263108, 52.98934487
           11.33260427, 52.98933330
           11.33258266, 52.98931988
           11.33256239, 52.98930265
    </coordinates>
    </LineString>
    </Placemark>
    <Placemark>
    <LineString>
    <coordinates>        
           11.33269279, 52.98890683
           11.33267546, 52.98889008
           11.33266629, 52.98888269
           11.33265420, 52.98887571
           11.33264374, 52.98887308
           11.33263811, 52.98887361
           11.33263591, 52.98886834
           11.33264492, 52.98885953
           11.33264685, 52.98885814
           11.33264685, 52.98885865
           11.33264739, 52.98886474
           11.33264642, 52.98887292
           11.33263298, 52.98888140
           11.33262472, 52.98888857
           11.33262642, 52.98889559
           11.33262823, 52.98890260
           11.33261877, 52.98890634
           11.33261476, 52.98890673
           11.33261475, 52.98891170
           11.33261443, 52.98891237
           11.33260216, 52.98892090
           11.33258932, 52.98892857
           11.33258721, 52.98893477
           11.33257688, 52.98893584
           11.33258416, 52.98893514
           11.33259139, 52.98893444
           11.33259141, 52.98893444
           11.33259141, 52.98893444
           11.33259141, 52.98893896
           11.33259141, 52.98893985
           11.33259141, 52.98894043
        </coordinates>
      </LineString>
    </Placemark>
    </Document>
    </kml>
    

    Die Textdatei sieht folgendermaßen aus

    0.000        0.89  11.30542990  53.01130095   28.99   82.7    8   0.80     24.25     -0.37      0.02     24.07    0.00  -6.722   0.94449    0.01457    68.6  9999.9   0    0   4.0      0.0570     -0.1360        0.00        0.00      0.0      0.0      0.0      0.0 
    
        0.490        2.18  11.30543542  53.01129314   29.21  -66.9    8   0.80     24.18     -0.38     -0.08     24.05   -0.08  -5.865   0.83050    0.01262    79.3  9999.9   0    0   4.0      0.1850     -0.1890        0.00        0.00      0.0      0.0      0.0      0.0 
    
        0.550        3.57  11.30543814  53.01128924   29.43  -67.4    8   0.80     24.12     -0.38     -0.12     24.03    0.00  -5.927   0.84552    0.01266    79.0  9999.9   0    0   4.0      0.3930     -0.0810        0.00        0.00      0.0      0.0      0.0      0.0 
    
        0.660        4.89  11.30544313  53.01128209   29.65  -67.1    8   0.80     24.06     -0.39     -0.13     24.02   -0.30  -5.983   0.85995    0.01268    78.9  -735.0   0    0   4.0     -0.0130     -0.1370        0.00        0.00      0.0      0.0      0.0      0.0 
    
        0.770        6.30  11.30544932  53.01127330   29.87  -66.9    8   0.80     24.02     -0.40     -0.12     24.05   -0.48  -6.238   0.90327    0.01312    76.2  6347.7   0    0   4.0      0.1480     -0.2520        0.00        0.00      0.0      0.0      0.0      0.0 
    
        0.880        7.64  11.30545604  53.01126371   30.09  -67.3    8   0.80     24.01     -0.40     -0.08     23.96   -0.69  -6.117   0.89220    0.01278    78.3   235.9   0    0   4.0     -0.0450     -0.2090        0.00        0.00      0.0      0.0      0.0      0.0 
    
        0.990        9.07  11.30546305  53.01125371   30.31  -67.1    8   0.80     24.02     -0.41      0.01     23.86   -1.75  -6.438   0.94596    0.01335    74.9    72.4   0    0   4.0      0.0160     -0.1890        0.00        0.00      0.0      0.0      0.0      0.0 
    
        1.100       10.50  11.30546951  53.01124402   30.28  -70.1    8   0.80     24.04     -0.41     -0.62     23.83   -3.12  -6.233   0.91498    0.01293    77.3    48.2   0    0   4.0      0.2680     -0.2060        0.00        0.00      0.0      0.0      0.0      0.0 
    
        1.200       11.84  11.30547502  53.01123502   30.25  -71.6    8   0.80     24.06     -0.41     -0.36     23.86   -3.42  -6.467   0.94844    0.01343    74.4    58.1   0    0   4.0     -0.0990     -0.2620        0.00        0.00      0.0      0.0      0.0      0.0 
    
        1.310       13.27  11.30548005  53.01122636   30.22  -71.9    8   0.80     24.08     -0.40     -0.48     23.96   -1.70  -6.746   0.98843    0.01402    71.3   100.4   0    0   4.0     -0.0050     -0.2310        0.00        0.00      0.0      0.0      0.0      0.0 
    
        1.420       14.70  11.30548484  53.01121787   30.19  -71.7    8   0.80     24.10     -0.40     -0.17     23.97    0.57  -6.651   0.97360    0.01384    72.3   199.5   0    0   4.0      0.1030     -0.2550        0.00        0.00      0.0      0.0      0.0      0.0
    

    An dritter und vierter Stelle ist der Längen und Breitengrad zu sehen, dahinter steht die Geschwindigkeit.Die Messdatei ist natürlich ewig viel länger und besitzt ca 400 Zeilen.
    Naja ich hab keine Ahnung wie man das am Besten macht und in welcher Sprache.
    Hab evtl. an Matlab gedacht aber evtl geht es ja auch in C++ ?????.
    Naja vielleicht weiß ja einer Rat.
    Gruß Christian



  • natürlich geht das in c++ allerdings nur, wenn du davon ahnung hast.

    matlab geht bestimmt auch. allerdings wird das xmlrel. schwierig werden dnek cih mal.

    aber was ist eigentlihc genau dein problem? Das macht dir hier bstimmt keiner, vielleicht für entgeld 🙂 ich würd mich dafür sogar anbieten



  • @Maxi:
    Mein Problem ist, dass ich ein Beispiel benötige, indem so etwas erklärt wird, wie man so etwas macht. Zum Beispiel in C++ .
    Ja, ich kann nicht programmieren, aber ich kann mir anhand eines Beispiels so einiges zusammenreimen und mir den Kram dann selber schreiben.
    Ich habm halt gedacht dass das hier ein Forum ist, in dem man sich von versierten Leuten die Ahnung von der Materie haben ein paar Tips geben lassen kann und die einem an Hand eines Beispiels mal weiterhelfen können.
    Wenn dies nicht der Fall sein sollte und jeder gleich Schotter sehen will bin ich hier wohl falsch.



  • ne, ich natürlich nicht so, dass jeder gleich schotter sehen will 🙂 Is hier ja keine Jobbörse. Nur wenn jemand daher kommt und sagt "Guckt ma das will ich machen, hab aber keine ahnung davon", naja... egal.

    Also wenn du nciht programmieren kannst, musst du dir ein tutrial angucken, wahrschienlcih mehr als eins.

    Dann die datei zeilenweise einlesen, beim leerzeichen trennen, und dann mittels einer XML-Lib die ausgabedatei erstellen. zB mit tinyxml. Allerdings wird das ganze ziemlich schwierig werden, wenn du noch gar keine Ahnung hast.

    Allerdings ist es auch immer ziemlich schwierig, auf solche Frage zu antworten. Besser ist es, wenn du konkrete Fragen stellst. zB wie öffne ich die Datei? (ok, siehe FAQ, google, tutorial usw.)



  • @ Maxi,
    ich wollte hier auch keinen persönlich angreifen.
    Also ich muss halt wie oben erwähnt aus der Messdatei die Koordinaten rausfischen, bei denen die Bedingung der Geschwindigkeit passt.Das heißt doch, dass ich in der Messdatei an den Stellen, an denen die Geschwindigkeit steht jedesmal in jeder Zeile eine Abfrage mache, ob sie die Bedingung erfüllt. Wenn sie die Bedingung erfüllt, soll das Programm die jeweiligen Koordinaten ,die die beiden Spalten vor der Geschwindigkeit darstellen ausgeben und in die KML Datei so einbinden wie in dem Beispiel zu sehen ist.Und jedesmal wenn die Bedingung nicht gilt, soll so lange weitergesucht werden, bis die Bedingung wieder erfüllt wird. Ich muss die Koordinatenhäppchen dann eben unterteilen und sie dürfen nicht alle untereinanderstehend ausgegeben werden sondern so wie im Beispiel.
    Ich weiß, das ist alles so lapidar daher gesagt, ich würde auch leiber das Fahrzeug in CAD konstruieren als so ein Programm zu schreiben, aber das ist im Moment ebne nicht verlangt 🙂
    Vielleicht gibt es ja eine einfache Art der Lösung.
    Ich freue mich auf jedenfall über jede Unterstützung



  • ja, also wie gesagt. dsa ganze ist nicht schwer. aber wenn du nicht genau sagst, was dien problem ist, kann man dir auch nicht helfen.

    Lad dir einen Compiler runter, zB Devcpp, der dürfte dafür reichen, oder gleich vc2005express.
    Mein vorgehen wäre so, wenn die Datei nicht zB 100MB poder so übersteigt:

    Ich lese die Datei zeilenweise ein. Aus jeder Zeiule extrahiere ich die geschwindigkeit und ordne die Zeile einer kategorie zu. Jede Kategroei hat ein array aus den koordinaten. dann würde ich direkt die koordinaten in die jeweiliige kategorie packen.
    Wenn du dann die ganze Datei ausgelesen hast, kannst du mittels einer lib für xml zB tinyxml oder libxml2 deine xml-datei erstellen.


Anmelden zum Antworten