gpx och kml i Freemat

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Supersnigel
Inlägg: 86
Blev medlem: 4 november 2011, 13:11:52
Ort: Göteborg
Kontakt:

gpx och kml i Freemat

Inlägg av Supersnigel »

Har ett program på mobilen som sparar kartdata från cykelturer i .kml- och .gpx-format. Har inte jobbat något med dessa förut men det verkar vara relativt enkel XML med header och sedan geodata, se exempel på geodata nedan.
Skulle vilja läsa in någon i filerna i Freemat och köra lite databehandling där, finns det några genvägar eller bra metoder att använda till den inläsningen? Output jag vill ha är främst bara rådata till tabeller och liknande.

GPX:

Kod: Markera allt

<trkpt lat="57.707775" lon="11.97801">
<ele>37.8</ele>
<time>2016-09-09T13:24:16.999Z</time>
</trkpt>
<trkpt lat="57.707718" lon="11.977962">
<ele>36.1</ele>
<time>2016-09-09T13:24:22.999Z</time>
</trkpt>
KML:

Kod: Markera allt

<when>2016-09-09T13:24:13.224Z</when>
<when>2016-09-09T13:24:16.999Z</when>
<when>2016-09-09T13:24:22.999Z</when>
...
<gx:coord>11.978124 57.707767 41.806896</gx:coord>
<gx:coord>11.97801 57.707775 37.783897</gx:coord>
<gx:coord>11.977962 57.707718 36.119793</gx:coord>
Supersnigel
Inlägg: 86
Blev medlem: 4 november 2011, 13:11:52
Ort: Göteborg
Kontakt:

Re: gpx och kml i Freemat

Inlägg av Supersnigel »

Lyckades knåpa ihop en liten funktion som löser det hela.

Kod: Markera allt


function y = gpxread(filename)
    
    %Read xml-file
    gpx = xmlread(filename);

    %Get raw data and put into xyzt matrix
    Nsum = length(gpx.Children{2}.Children{5}.Children);
    for N=1:Nsum
        y(N,1) = str2num(gpx.Children{2}.Children{5}.Children{N}.Attributes{1}.Value);
        y(N,2) = str2num(gpx.Children{2}.Children{5}.Children{N}.Attributes{2}.Value);
        y(N,3) = str2num(gpx.Children{2}.Children{5}.Children{N}.Children{1}.Children{1}.Value);
        TimeTmp = gpx.Children{2}.Children{5}.Children{N}.Children{2}.Children{1}.Value; %Time
        y(N,4) = str2num(TimeTmp(12:13));
        y(N,5) = str2num(TimeTmp(15:16));
        y(N,6) = str2num(TimeTmp(18:23));
    end
end
    
Skriv svar