
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:
- Co je soubor GPX
- C# API pro čtení souborů GPX
- Čtení trasových bodů ze souboru GPX
- Přečíst trasy ze souboru GPX
- Extrahovat stopy ze souboru GPX
- 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ů:
- Nejprve načtěte soubor GPX pomocí metody OpenLayer.
- Dále pro každý prvek ve vrstvě zkontrolujte, zda GeometryType je Bod.
- Poté získejte geometrii prvku jako bod.
- 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ů:
- Nejprve načtěte soubor GPX pomocí metody OpenLayer.
- Dále pro každý prvek ve vrstvě zkontrolujte, zda GeometryType je LineString.
- Poté získejte geometrii prvku jako LineString.
- 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ů:
- Nejprve načtěte soubor GPX pomocí metody OpenLayer.
- Dále pro každý prvek ve vrstvě zkontrolujte, zda GeometryType je MultiLineString.
- Poté získejte geometrii prvku jako MultiLineString.
- 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ů:
- Nejprve vytvořte instanci třídy GpxOptions.
- Dále nastavte ReadNestedAttributes na hodnotu true.
- Poté načtěte soubor GPX pomocí metody OpenLayer() s objektem GpxOptions jako argumentem.
- Dále pro každý prvek ve vrstvě zkontrolujte, zda GeometryType je MultiLineString.
- Poté získejte geometrii prvku jako MultiLineString.
- Poté čtěte segment jako LineString z každého MultiLineString.
- 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.