Baca File GPX menggunakan C#

File GPX berisi data GPS yang disimpan dalam Format Exchange GPS. Ini adalah skema XML untuk menggambarkan informasi geografis seperti titik arah, trek, rute, dll. Ini memungkinkan transfer data GPS antara unit GPS dan aplikasi perangkat lunak. Kami dapat dengan mudah memuat file GPX dan mengekstrak informasi GPS secara terprogram dalam aplikasi .NET. Pada artikel ini, kita akan mempelajari cara membaca file GPX menggunakan C#.

Artikel tersebut harus mencakup topik-topik berikut:

C# API untuk Membaca File GPX

Untuk membaca fitur dari file GPX, kami akan menggunakan Aspose.GIS for .NET API. Ini memungkinkan Anda merender peta, dan membuat, membaca, dan mengonversi data geografis tanpa perangkat lunak tambahan. Ini juga memungkinkan Anda untuk mengonversi file KML ke format GPX dan sebaliknya. Harap unduh DLL API atau instal menggunakan NuGet.

PM> Install-Package Aspose.GIS

Baca Waypoints dari File GPX di C#

Kita dapat membaca waypoint dari file GPX sebagai Point Geometry dengan mengikuti langkah-langkah di bawah ini:

  1. Pertama, muat file GPX menggunakan metode OpenLayer.
  2. Selanjutnya, untuk setiap fitur di lapisan, periksa apakah TipeGeometri adalah Titik.
  3. Setelah itu, dapatkan geometri fitur sebagai Titik.
  4. Terakhir, tunjukkan titik koordinat X dan Y.

Contoh kode berikut menunjukkan cara membaca waypoints dari file GPX menggunakan C#.

// Contoh kode ini menunjukkan cara membaca waypoints dari file GPX
// Muat file GPX
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\St_Louis_Zoo_sample.gpx");

foreach (var feature in layer)
{
    // Periksa geometri Titik
    if (feature.Geometry.GeometryType == GeometryType.Point)
    {
        // Baca Poin
        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

Baca Rute dari File GPX di C#

Kita dapat membaca rute dari file GPX sebagai geometri String Garis dengan mengikuti langkah-langkah di bawah ini:

  1. Pertama, muat file GPX menggunakan metode OpenLayer.
  2. Selanjutnya, untuk setiap fitur di lapisan, periksa apakah GeometryType adalah LineString.
  3. Setelah itu, dapatkan geometri dari fitur tersebut sebagai LineString.
  4. Terakhir, tunjukkan titik koordinat X, Y, dan Z.

Contoh kode berikut menunjukkan cara membaca rute dari file GPX menggunakan C#.

// Contoh kode ini menunjukkan cara membaca rute GPS dari file GPX
// Muat file GPX
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\schiehallion.gpx");

foreach (var feature in layer)
{
    // Periksa geometri LineString
    if (feature.Geometry.GeometryType == GeometryType.LineString)
    {
        // Baca Rut
        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
.
.
.

Ekstrak Trek dari File GPX di C#

Kita dapat membaca trek dari file GPX sebagai geometri MultiLineString dengan mengikuti langkah-langkah berikut:

  1. Pertama, muat file GPX menggunakan metode OpenLayer.
  2. Selanjutnya, untuk setiap fitur di lapisan, periksa apakah GeometryType adalah MultiLineString.
  3. Setelah itu, dapatkan geometri fitur sebagai MultiLineString.
  4. Terakhir, tunjukkan treknya.

Contoh kode berikut menunjukkan cara membaca trek dari file GPX menggunakan C#.

// Contoh kode ini menunjukkan cara membaca Trek dari file GPX
// Muat file GPX
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\nested_data.gpx");

foreach (var feature in layer)
{
    // Periksa geometri MultiLineString
    if (feature.Geometry.GeometryType == GeometryType.MultiLineString)
    {
        // Baca trek
        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)

Baca Atribut Bersarang GPX di C

Kita dapat membaca fitur untuk setiap titik di segmen dan mengekstrak nilai atribut bersarang dengan mengikuti langkah-langkah di bawah ini:

  1. Pertama, buat instance dari kelas GpxOptions.
  2. Selanjutnya, setel ReadNestedAttributes ke true.
  3. Kemudian, muat file GPX menggunakan metode OpenLayer() dengan objek GpxOptions sebagai argumen.
  4. Selanjutnya, untuk setiap fitur di lapisan, periksa apakah GeometryType adalah MultiLineString.
  5. Kemudian, dapatkan geometri fitur sebagai MultiLineString.
  6. Setelah itu, baca segmen sebagai LineString dari setiap MultiLineString.
  7. Terakhir, baca poin di segmen dan tunjukkan nilai atributnya.

Contoh kode berikut menunjukkan cara membaca atribut bersarang GPX dari file GPX menggunakan C#.

// Contoh kode ini menunjukkan cara membaca GPX Nested Attributes dari file GPX
// Tentukan opsi GPX
GpxOptions options = new GpxOptions()
{
    ReadNestedAttributes = true
};


// Muat file GPX dan buka lapisan untuk membaca fitur
using (var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\nested_data.gpx", options))
{
    foreach (var feature in layer)
    {
        // Periksa geometri MultiLineString
        if (feature.Geometry.GeometryType == GeometryType.MultiLineString)
        {
            // Baca segmen
            var lines = (MultiLineString) feature.Geometry;
           for (int i = 0; i < lines.Count; i++)
            {
                Console.WriteLine($"....segment({i})......");
                var segment = (LineString)lines[i];

                // Baca poin di segmen
               for (int j = 0; j < segment.Count; j++)
                {
                    // Carilah atribut
                    string attributeName = $"name__{i}__{j}";
                    if (layer.Attributes.Contains(attributeName) && feature.IsValueSet(attributeName))
                    {
                        // Cetak titik dan atribut
                        var value = feature.GetValue<string>(attributeName);
                        Console.WriteLine($"{segment[j].AsText()} - {attributeName}: {value}, ");
                    }
                    else
                    {
                        // Cetak titik saja
                        Console.WriteLine(segment[j].AsText());
                    }
                }
            }
            Console.WriteLine("..........");
        }
    }
}

Dapatkan Lisensi Gratis

Anda bisa mendapatkan lisensi sementara gratis untuk mencoba perpustakaan tanpa batasan evaluasi.

Kesimpulan

Dalam artikel ini, kita telah mempelajari cara:

  • memuat file GPX menggunakan OpenLayer di C#;
  • baca titik arah, rute, dan trek dari file GPX secara terprogram;
  • baca atribut bersarang dari file GPX menggunakan C#.

Selain itu, Anda dapat mempelajari lebih lanjut tentang Aspose.GIS for .NET API menggunakan dokumentasi. Jika ada ambiguitas, jangan ragu untuk menghubungi kami di forum.

Lihat juga