-         

Ergebnis 1 bis 6 von 6

Thema: Messwerte mit GPS Daten verknüpfen und Visualisieren. Wie???

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892

    Messwerte mit GPS Daten verknüpfen und Visualisieren. Wie???

    Anzeige

    Hallo Leute,

    ich möchte gerne Messwerte von Flächen ( Pflanzen- Bestandseigenschaften ) mit den dazugehörigen GPS Koordinaten verknüpfen und abspeichern.
    Die Daten sollen gleich bei der Messung auf eine SD Karte geschrieben werden um sie dann am heimischen PC auszuwerten.
    Das ich dazu einen ( Mikro- ) Controller, einen GPS Empfänger und die nötigen Messwertaufnehmer brauche ist mir klar.

    Ich hätte diese Daten dann gerne als farbige Linien ( je nach Messwert ) am liebsten als Overlay über ein Satellitenbild gelegt.

    Ich denke mal, das das mit Google Earth gehen müsste. Hat da schon jemand von Euch Erfahrung mit sowas?
    Wäre so ein Vorhaben mit .kml Dateien möglich, die lokal auf dem Rechner sind?
    Gibt es zu diesem Thema einfach zu verstehende Anleitungen wie man so eine .kml Datei erstellt.
    Was ich bisher zu diesem Thema gefunden habe hat mich mehr verwirrt, als mir geholfen.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Zitat Zitat von wkrug Beitrag anzeigen
    Hallo Leute,

    ich möchte gerne Messwerte von Flächen ( Pflanzen- Bestandseigenschaften ) mit den dazugehörigen GPS Koordinaten verknüpfen und abspeichern.
    Die Daten sollen gleich bei der Messung auf eine SD Karte geschrieben werden um sie dann am heimischen PC auszuwerten.
    Das ich dazu einen ( Mikro- ) Controller, einen GPS Empfänger und die nötigen Messwertaufnehmer brauche ist mir klar.

    Ich hätte diese Daten dann gerne als farbige Linien ( je nach Messwert ) am liebsten als Overlay über ein Satellitenbild gelegt.

    Ich denke mal, das das mit Google Earth gehen müsste. Hat da schon jemand von Euch Erfahrung mit sowas?
    Wäre so ein Vorhaben mit .kml Dateien möglich, die lokal auf dem Rechner sind?
    Gibt es zu diesem Thema einfach zu verstehende Anleitungen wie man so eine .kml Datei erstellt.
    Was ich bisher zu diesem Thema gefunden habe hat mich mehr verwirrt, als mir geholfen.
    Ich habe einen Bluetooth GPS Empfänger und speichre die Daten in einer .TXT Datei, die sollte man auch umbenennen können. Wie das mit Google Earth gemacht wird? Soll aber gehen.

    Gruß Richard

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Ich habe einen Bluetooth GPS Empfänger und speichre die Daten in einer .TXT Datei, die sollte man auch umbenennen können. Wie das mit Google Earth gemacht wird? Soll aber gehen.
    Ich vermute mal, das Du da einfach die NMEA Daten in diese Textdatei schreibst.
    Das wär ja im Prinzip auch so in Ordnung. Nur wie krieg ich da meine Messwertdaten unter, damit ich das mit einem Satellitenbild koppeln und visualisieren kann?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Zitat Zitat von wkrug Beitrag anzeigen
    Ich vermute mal, das Du da einfach die NMEA Daten in diese Textdatei schreibst.
    Das wär ja im Prinzip auch so in Ordnung. Nur wie krieg ich da meine Messwertdaten unter, damit ich das mit einem Satellitenbild koppeln und visualisieren kann?
    Ja, stimmt. Wie Du jetzt (Deine Flächen) einfärben kannst? Google hat aber eine API heraus gebracht mit der man irgendwie "Einfluss" nehmen kann. Aber da bin ich wirklich überfragt.

    Gruß Richard

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    24.05.2007
    Ort
    Im hohen Norden
    Beiträge
    227
    Guten morgen,
    mit txt-Dateien kannst du mit GoogleEarth nichts werden. Solch eine TXT-Datei musst du ins KML-Format konvertieren. Erst dann versteht sie Google. Mittels der GoogleEarth-AP und einem Java-Programm kannst du dann Polygone zeichnen für deine Flächen. Unter der GoogleEarth-Hilfe findest du dafür genug Beispiele. Für die Konvertierung ins KML-Format frag mal Dr.Google.

    Tschüss Peter
    _________________________________________________
    [-X Quis custodiet ipsos custodes
    Ground-Effect-Stability-Robot www.peter-holzknecht.de

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892

    Beitrag

    Ok, hab nach langer Zeit eine Lösung gefunden.
    Eventuell gibt es da was, das noch optimaler ist.
    Meine Dateien sehen jetzt folgendermassen aus:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <kml xmlns="http://www.opengis.net/kml/2.2">
    <Document>
    <name>ReipData</name>
    <description>Reip Datas from specified Crop. Note that the tessellate tag is by default
    set to 0. If you want to create tessellated lines, they must be authored
    (or edited) directly in KML.</description>
    <Style id="705_26">
    <LineStyle>
    <color>ff2500DB</color>
    <width>2</width>
    </LineStyle>
    </Style>
    <Placemark>
    <name>705_26</name>
    <description>Reip 705,9 Deck 26%</description>
    <styleUrl>#705_26</styleUrl>
    <LineString>
    <extrude>1</extrude>
    <tessellate>1</tessellate>
    <altitudeMode>clampToGround</altitudeMode>
    <coordinates>
    11.560925,49.023080,369
    11.560925,49.023080,369
    </coordinates>
    </LineString>
    </Placemark><Style id="706_26">
    <LineStyle>
    <color>ff2800D8</color>
    <width>2</width>
    </LineStyle>
    </Style>
    <Placemark>
    <name>706_26</name>
    <description>Reip 706,4 Deck 26%</description>
    <styleUrl>#706_26</styleUrl>
    <LineString>
    <extrude>1</extrude>
    <tessellate>1</tessellate>
    <altitudeMode>clampToGround</altitudeMode>
    <coordinates>
    11.560925,49.023080,369
    11.560928,49.023078,369
    </coordinates>
    </LineString>
    </Placemark>
    ></Document>
    </kml>
    Damit ist es nun möglich 2 Messwerte mit Farbe und Breite einer Linie darzustellen.
    Ein Codeschnipsel zu Erzeugen des Strings hab ich mal hier:
    Code:
    void handlelog(void)
    {
    unsigned char low=0,high=0;
    unsigned int buffer=0,ui_i=0;
    unsigned char text[400];
    unsigned char sametext[14],reiptext[14];
    switch (logstate)
        {
        case logoff:
        if(LOGSW==0)
            {
            logstate=logstart; 
            }
        break;
        
        case logstart:
        logstate=writeheader1;
        logtimer=6;
        break;
        
        case writeheader1:
        strcpyf(text,header1);
        for (ui_i=0;ui_i<strlen(text);ui_i++)
            {
            putchar(text[ui_i]);
            }
        logstate=writeheader2;
        break;
        
        case writeheader2:
        strcpyf(text,header2);
        for (ui_i=0;ui_i<strlen(text);ui_i++)
            {
            putchar(text[ui_i]);
            }
        logstate=writeheader3;
        break;
        
        case writeheader3:
        strcpyf(text,header3);
        for (ui_i=0;ui_i<strlen(text);ui_i++)
            {
            putchar(text[ui_i]);
            }
        if(LOGSW==0)
            {
            oldlatx=latx;
            oldlath=lath;
            oldlatl=latl;
            oldlongx=longx;
            oldlongh=longh;
            oldlongl=longl;
            logstate=writedata;
            }
        else
            {
            logstate=writecloser;
            }
        break;
        
        case writedata:
        /* Hier müssen noch die REIP Daten für das File generiert
        und an den SD CARD Reader übergeben werden
        */
        /*
        <Style id="720_50">
          <LineStyle>
            <color>ff800080</color>
            <width>5</width>
          </LineStyle>
        </Style>
        <Placemark>
          <name>720-50</name>
          <description>Reip 720, Deck 50</description>
        <styleUrl>#720_50</styleUrl>
          <LineString>
            <extrude>1</extrude>
            <tessellate>1</tessellate>
            <altitudeMode>clampToGround</altitudeMode>
            <coordinates>
            11.561936,49.023278,2357
              11.561935,49.023277,2357
              11.561930,49.023277,2357
              11.561927,49.023281,2357
            </coordinates>
        </LineString>
        </Placemark>
        */
        strcpyf(text,"<Style id=\"");
        high=reip/10;
        itoa(high,sametext),
        strcpyf(reiptext,"7");
        if(high<10){strcatf(reiptext,"0");}
        strcat(reiptext,sametext);
        strcatf(reiptext,"_");
        itoa(deck,sametext);
        strcat(reiptext,sametext);
        strcat(text,reiptext);
        strcatf(text,"\">\r\n");
        strcatf(text,"<LineStyle>\r\n<color>ff");
        buffer=reip*100;
        buffer/=157;
        high=buffer>>4;
        low=buffer&0x0F;
        if(high<10)
            {
            high+=0x30;
            }
        else
            {
            high+=0x37;
            }
        if(low<10)
            {
            low+=0x30;
            }
        else
            {
            low+=0x37;
            }
        sametext[0]=high;
        sametext[1]=low;
        sametext[2]='0';
        sametext[3]='0';
        buffer=256-buffer;
        high=buffer>>4;
        low=buffer&0x0F;
        if(high<10)
            {
            high+=0x30;
            }
        else
            {
            high+=0x37;
            }
        if(low<10)
            {
            low+=0x30;
            }
        else
            {
            low+=0x37;
            }
        sametext[4]=high;
        sametext[5]=low;
        sametext[8]=0;
        strcat(text,sametext);
        strcatf(text,"</color>\r\n<width>");
        low=deck/10;
        if(low<1){low=1;}
        itoa(low,sametext);
        strcat(text,sametext);
        strcatf(text,"</width>\r\n</LineStyle>\r\n</Style>\r\n<Placemark>\r\n<name>");
        strcat(text,reiptext);
        strcatf(text,"</name>\r\n<description>Reip 7"); //720, Deck 50</description>"
        buffer=reip/10;
        itoa(buffer,sametext);
        if(buffer<10){strcatf(text,"0");}
        strcat(text,sametext);
        strcatf(text,",");
        buffer=reip%10;
        itoa(buffer,sametext);
        strcat(text,sametext);
        strcatf(text," Deck ");
        itoa(deck,sametext);
        strcat(text,sametext);
        strcatf(text,"%</description>\r\n<styleUrl>#");
        strcat(text,reiptext);
        strcatf(text,"</styleUrl>\r\n<LineString>\r\n<extrude>1</extrude>\r\n<tessellate>1</tessellate>\r\n<altitudeMode>clampToGround</altitudeMode>\r\n<coordinates>\r\n");
        if(oldlongx=='W'){strcatf(text,"-");}
        itoa(oldlongh,sametext);
        strcat(text,sametext);
        strcatf(text,".");
        ltoa(oldlongl,sametext);
        if(oldlongl<100000){strcatf(text,"0");}
        if(oldlongl<10000){strcatf(text,"0");}
        if(oldlongl<1000){strcatf(text,"0");}
        if(oldlongl<100){strcatf(text,"0");}
        if(oldlongl<10){strcatf(text,"0");}
        strcat(text,sametext);
        strcatf(text,",");
        if(oldlatx=='S'){strcatf(text,"-");}
        itoa(oldlath,sametext);
        strcat(text,sametext);
        strcatf(text,".");
        ltoa(oldlatl,sametext);
        if(oldlatl<100000){strcatf(text,"0");}
        if(oldlatl<10000){strcatf(text,"0");}
        if(oldlatl<1000){strcatf(text,"0");}
        if(oldlatl<100){strcatf(text,"0");}
        if(oldlatl<10){strcatf(text,"0");}
        strcat(text,sametext);
        strcatf(text,",");
        buffer=height/10;
        itoa(buffer,sametext);
        strcat(text,sametext);
        strcatf(text,"\r\n");
        if(longx=='W'){strcatf(text,"-");}
        itoa(longh,sametext);
        strcat(text,sametext);
        strcatf(text,".");
        ltoa(longl,sametext);
        if(longl<100000){strcatf(text,"0");}
        if(longl<10000){strcatf(text,"0");}
        if(longl<1000){strcatf(text,"0");}
        if(longl<100){strcatf(text,"0");}
        if(longl<10){strcatf(text,"0");}
        strcat(text,sametext);
        strcatf(text,",");
        if(latx=='S'){strcatf(text,"-");}
        itoa(lath,sametext);
        strcat(text,sametext);
        strcatf(text,".");
        ltoa(latl,sametext);
        if(latl<100000){strcatf(text,"0");}
        if(latl<10000){strcatf(text,"0");}
        if(latl<1000){strcatf(text,"0");}
        if(latl<100){strcatf(text,"0");}
        if(latl<10){strcatf(text,"0");}
        strcat(text,sametext);
        strcatf(text,",");
        buffer=height/10;
        itoa(buffer,sametext);
        strcat(text,sametext);
        strcatf(text,"\r\n");
        strcatf(text,"</coordinates>\r\n</LineString>\r\n</Placemark>");
        for(ui_i=0;ui_i<strlen(text);ui_i++)
            {
            putchar(text[ui_i]);
            }
        //Prepare for next data record
        oldlatx=latx;
        oldlath=lath;
        oldlatl=latl;
        oldlongx=longx;
        oldlongh=longh;
        oldlongl=longl;
        if(LOGSW!=0)
            {
            logstate=writecloser;
            }
        break;
        
        case writecloser:
        strcpyf(text,closer);
        for (ui_i=0;ui_i<strlen(text);ui_i++)
            {
            putchar(text[ui_i]);
            }
        logstate=fileclosed;
        logtimer=32;
        break;
        }
    }
    Ist sicher noch nicht optimal das Ganze, aber ein funktionierender Anfang.

Ähnliche Themen

  1. Notebook mit Sensoren und Motoren verknüpfen
    Von Gil-Galad im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 5
    Letzter Beitrag: 05.04.2010, 12:44
  2. RS232 Daten in Echtzeit visualisieren
    Von samm_2006 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 6
    Letzter Beitrag: 19.09.2009, 23:08
  3. RS232 Daten Visualisieren
    Von Che Guevara im Forum Software, Algorithmen und KI
    Antworten: 3
    Letzter Beitrag: 12.05.2009, 05:51
  4. Antworten: 9
    Letzter Beitrag: 06.06.2007, 12:56
  5. Mehrere Variablen verknüpfen
    Von Xairo im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 04.12.2006, 00:09

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •