Číst soubory GPX pomocí C#

Soubor GPX je datový soubor GPS obsahující data GPS uložená ve formátu GPS Exchange. Jedná se o schéma XML pro popis geografických informací, jako jsou trasové body, trasy, trasy atd. Umožňuje přenos dat GPS mezi jednotkami GPS a softwarovými aplikacemi. Můžeme snadno načíst soubor GPX a extrahovat GPS informace programově v aplikacích .NET. V tomto článku se naučíme číst soubory GPX pomocí C#.

Článek se bude týkat následujících témat:

  1. Co je soubor GPX
  2. C# API pro čtení souborů GPX
  3. Čtení trasových bodů ze souboru GPX
  4. Přečíst trasy ze souboru GPX
  5. Extrahovat stopy ze souboru GPX
  6. Přečíst vnořené atributy GPX

Co je soubor GPX

GPX nebo GPS Exchange Format je formát souboru, který umožňuje vyměňovat data GPS mezi různými zařízeními a softwarovými programy. Soubory GPX jsou pouze soubory XML, které obsahují data GPS a lze je vytvářet a upravovat pomocí libovolného textového editoru. Soubory GPX mohou obsahovat trasové body, trasy a trasy a lze je použít k plánování a sdílení vašich výletů s ostatními. Trasové body jsou jednoduše místa, která si chcete zapamatovat, jako je vaše aktuální poloha nebo poloha konkrétního cíle. Trasy jsou série bodů, které představují váš pohyb v průběhu času, a lze je použít ke sledování vašich kroků nebo ke sledování vašeho postupu na delší cestě. Trasy jsou série trasových bodů, které představují plánovanou cestu a lze je použít k navigaci z jednoho bodu do druhého. Soubory GPX jsou skvělým způsobem, jak sdílet data GPS s ostatními, a mohou je používat mnoho zařízení GPS a softwarových programů.

C# API pro čtení souborů GPX

Pro čtení funkcí ze souborů GPX budeme používat Aspose.GIS for .NET API. Umožňuje vám vykreslovat mapy a vytvářet, číst a převádět geografická data bez dalšího softwaru. Umožňuje také převádět soubory KML do formátu GPX a naopak.

Prosím buď stáhněte si DLL rozhraní API, nebo jej nainstalujte pomocí NuGet.

PM> Install-Package Aspose.GIS

Číst trasové body ze souboru GPX v C#

Trasové body můžeme číst ze souboru GPX jako geometrii bodů podle následujících kroků:

  1. Nejprve načtěte soubor GPX pomocí metody OpenLayer.
  2. Dále pro každý prvek ve vrstvě zkontrolujte, zda GeometryType je Bod.
  3. Poté získejte geometrii prvku jako bod.
  4. Nakonec zobrazte body souřadnic X a Y.

Následující ukázka kódu ukazuje, jak číst trasové body ze souboru GPX pomocí C#.

// Tento příklad kódu ukazuje, jak číst trasové body ze souboru GPX
// Načtěte soubor GPX
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\St_Louis_Zoo_sample.gpx");

foreach (var feature in layer)
{
    // Zkontrolujte geometrii bodu
    if (feature.Geometry.GeometryType == GeometryType.Point)
    {
        // Přečtěte si body
        Point point = (Point)feature.Geometry;
        Console.WriteLine(point.AsText() + " X: " + point.X + " Y: " + point.Y);
    }
}
POINT (-90.29408 38.63473) X: -90.29408 Y: 38.63473
POINT (-90.28679 38.63368) X: -90.28679 Y: 38.63368
POINT (-90.29323 38.63408) X: -90.29323 Y: 38.63408
POINT (-90.29019 38.63533) X: -90.29019 Y: 38.63533
POINT (-90.28976 38.63677) X: -90.28976 Y: 38.63677
POINT (-90.28948 38.63496) X: -90.28948 Y: 38.63496
POINT (-90.29458 38.63421) X: -90.29458 Y: 38.63421
POINT (-90.29083 38.63633) X: -90.29083 Y: 38.63633
POINT (-90.28715 38.63395) X: -90.28715 Y: 38.63395
POINT (-90.28769 38.63347) X: -90.28769 Y: 38.63347

Číst trasy ze souboru GPX v C#

Trasy můžeme číst ze souboru GPX jako geometrii Line String podle následujících kroků:

  1. Nejprve načtěte soubor GPX pomocí metody OpenLayer.
  2. Dále pro každý prvek ve vrstvě zkontrolujte, zda GeometryType je LineString.
  3. Poté získejte geometrii prvku jako LineString.
  4. Nakonec zobrazte body souřadnic X, Y a Z.

Následující ukázka kódu ukazuje, jak číst trasy ze souboru GPX pomocí C#.

// Tento příklad kódu ukazuje, jak číst trasy GPS ze souboru GPX
// Načtěte soubor GPX
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\schiehallion.gpx");

foreach (var feature in layer)
{
    // Zkontrolujte geometrii LineString
    if (feature.Geometry.GeometryType == GeometryType.LineString)
    {
        // Přečtěte si Routs
        LineString ls = (LineString)feature.Geometry;

        foreach (var point in ls)
        {
            Console.WriteLine(" X: " + point.X + " Y: " + point.Y + " Z: " + point.Z);
        }
    }
}
=====================================================
 X: -4.03601769647726 Y: 56.6758328268945 Z: 351.247702398777
 X: -4.03583038137853 Y: 56.6753865835736 Z: 344.690721458414
 X: -4.03614000315429 Y: 56.6735618299578 Z: 349.066837113628
 X: -4.03711323311608 Y: 56.6726922276694 Z: 352.76479861559
 X: -4.03921535478461 Y: 56.6708156570976 Z: 358.078238232484
 X: -4.04184722532733 Y: 56.668930361342 Z: 371.315914270806
 X: -4.04446052766014 Y: 56.668213511889 Z: 372.334546538997
 X: -4.04552528394144 Y: 56.6682858833434 Z: 398.610199355698
 X: -4.04660281552745 Y: 56.6678413316366 Z: 439.24188764472
 X: -4.04765411258453 Y: 56.6661616045966 Z: 430.695575764036
.
.
.

Extrahujte stopy ze souboru GPX v C#

Trasy můžeme číst ze souboru GPX jako geometrii MultiLineString podle následujících kroků:

  1. Nejprve načtěte soubor GPX pomocí metody OpenLayer.
  2. Dále pro každý prvek ve vrstvě zkontrolujte, zda GeometryType je MultiLineString.
  3. Poté získejte geometrii prvku jako MultiLineString.
  4. Nakonec ukažte stopy.

Následující ukázka kódu ukazuje, jak číst stopy ze souboru GPX pomocí C#.

// Tento příklad kódu ukazuje, jak číst stopy ze souboru GPX
// Načtěte soubor GPX
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\nested_data.gpx");

foreach (var feature in layer)
{
    // Zkontrolujte geometrii MultiLineString
    if (feature.Geometry.GeometryType == GeometryType.MultiLineString)
    {
        // Přečíst stopu
        var lines = (MultiLineString)feature.Geometry;
        foreach(var line in lines)
        {
            Console.WriteLine(line.AsText());
        }
    }
}
LINESTRING (0 0, 1 1, 2 2, 3 3)
LINESTRING EMPTY
LINESTRING EMPTY
LINESTRING (10 10, 11 11, 12 12, 13 13)

Číst vnořené atributy GPX v C#

Můžeme číst prvky pro každý bod v segmentu a extrahovat vnořené hodnoty atributů podle následujících kroků:

  1. Nejprve vytvořte instanci třídy GpxOptions.
  2. Dále nastavte ReadNestedAttributes na hodnotu true.
  3. Poté načtěte soubor GPX pomocí metody OpenLayer() s objektem GpxOptions jako argumentem.
  4. Dále pro každý prvek ve vrstvě zkontrolujte, zda GeometryType je MultiLineString.
  5. Poté získejte geometrii prvku jako MultiLineString.
  6. Poté čtěte segment jako LineString z každého MultiLineString.
  7. Nakonec přečtěte body v segmentu a ukažte hodnoty atributů.

Následující ukázka kódu ukazuje, jak číst vnořené atributy GPX ze souboru GPX pomocí C#.

// Tento příklad kódu ukazuje, jak číst vnořené atributy GPX ze souboru GPX
// Zadejte možnost GPX
GpxOptions options = new GpxOptions()
{
    ReadNestedAttributes = true
};


// Načtěte soubor GPX a otevřete vrstvu pro čtení funkcí
using (var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\nested_data.gpx", options))
{
    foreach (var feature in layer)
    {
        // Zkontrolujte geometrii MultiLineString
        if (feature.Geometry.GeometryType == GeometryType.MultiLineString)
        {
            // Přečtěte si segment
            var lines = (MultiLineString) feature.Geometry;
           for (int i = 0; i < lines.Count; i++)
            {
                Console.WriteLine($"....segment({i})......");
                var segment = (LineString)lines[i];

                // Přečtěte si body v segmentu
               for (int j = 0; j < segment.Count; j++)
                {
                    // Hledejte atribut
                    string attributeName = $"name__{i}__{j}";
                    if (layer.Attributes.Contains(attributeName) && feature.IsValueSet(attributeName))
                    {
                        // Vytiskněte bod a atribut
                        var value = feature.GetValue<string>(attributeName);
                        Console.WriteLine($"{segment[j].AsText()} - {attributeName}: {value}, ");
                    }
                    else
                    {
                        // Vytiskněte pouze bod
                        Console.WriteLine(segment[j].AsText());
                    }
                }
            }
            Console.WriteLine("..........");
        }
    }
}

Získejte bezplatnou licenci

Můžete získat bezplatnou dočasnou licenci a vyzkoušet knihovnu bez omezení hodnocení.

Závěr

V tomto článku jsme se naučili, jak:

  • načíst soubor GPX pomocí OpenLayer v C#;
  • číst trasové body, trasy a stopy ze souboru GPX programově;
  • číst vnořený atribut ze souboru GPX pomocí C#.

Kromě čtení souborů GPX v C# se můžete dozvědět více o Aspose.GIS for .NET API pomocí dokumentace. V případě jakýchkoliv nejasností nás neváhejte kontaktovat na našem bezplatném fóru podpory.

Viz také