C# kullanarak GPX Dosyalarını Okuyun

Bir GPX dosyası, GPS Değişim Biçiminde kaydedilen GPS verilerini içerir. Yol noktaları, izler, rotalar vb. coğrafi bilgileri açıklayan bir XML şemasıdır. GPS verilerinin GPS birimleri ve yazılım uygulamaları arasında aktarılmasına olanak tanır. .NET uygulamalarında GPX dosyasını kolayca yükleyebilir ve GPS bilgilerini programlı olarak çıkarabiliriz. Bu yazıda, C# kullanarak GPX dosyalarını nasıl okuyacağımızı öğreneceğiz.

Makale aşağıdaki konuları kapsayacaktır:

GPX Dosyalarını Okumak için C# API

GPX dosyalarından özellikleri okumak için Aspose.GIS for .NET API’sini kullanacağız. Ek yazılım olmadan haritalar oluşturmanıza ve coğrafi verileri oluşturmanıza, okumanıza ve dönüştürmenize olanak tanır. Ayrıca, KML dosyalarını GPX biçimine ve tersi yönde dönüştürmenize de olanak tanır. Lütfen API’nin DLL’sini indirin veya NuGet kullanarak kurun.

PM> Install-Package Aspose.GIS

C# dilindeki GPX Dosyasından Yol Noktalarını Okuyun

Aşağıda verilen adımları takip ederek GPX dosyasındaki yol noktalarını Nokta Geometrisi olarak okuyabiliriz:

  1. Öncelikle, OpenLayer yöntemini kullanarak GPX dosyasını yükleyin.
  2. Ardından, katmandaki her özellik için GeometryType öğesinin Nokta olup olmadığını kontrol edin.
  3. Bundan sonra, özelliğin geometrisini Nokta olarak alın.
  4. Son olarak, X ve Y koordinat noktalarını gösterin.

Aşağıdaki kod örneği, C# kullanarak bir GPX dosyasından yol noktalarının nasıl okunacağını gösterir.

// Bu kod örneği, yol noktalarının GPX dosyasından nasıl okunacağını gösterir
// GPX dosyasını yükleyin
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\St_Louis_Zoo_sample.gpx");

foreach (var feature in layer)
{
    // Nokta geometrisini kontrol edin
    if (feature.Geometry.GeometryType == GeometryType.Point)
    {
        // Okuma Noktaları
        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

C# dilinde GPX Dosyasından Yönlendirmeleri Oku

GPX dosyasındaki rotaları aşağıda verilen adımları takip ederek Line String geometrisi olarak okuyabiliriz:

  1. Öncelikle, OpenLayer yöntemini kullanarak GPX dosyasını yükleyin.
  2. Ardından, katmandaki her özellik için GeometryType öğesinin LineString olup olmadığını kontrol edin.
  3. Bundan sonra, özelliğin geometrisini LineString olarak alın.
  4. Son olarak, X, Y ve Z koordinat noktalarını gösterin.

Aşağıdaki kod örneği, C# kullanarak bir GPX dosyasından yolların nasıl okunacağını gösterir.

// Bu kod örneği, GPS rotalarının GPX dosyasından nasıl okunacağını gösterir.
// GPX dosyasını yükleyin
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\schiehallion.gpx");

foreach (var feature in layer)
{
    // LineString geometrisini kontrol edin
    if (feature.Geometry.GeometryType == GeometryType.LineString)
    {
        // Yönlendirmeleri Oku
        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
.
.
.

C# dilinde GPX Dosyasından Parçaları Çıkarın

Aşağıda verilen adımları takip ederek GPX dosyasındaki parçaları MultiLineString geometrisi olarak okuyabiliriz:

  1. Öncelikle, OpenLayer yöntemini kullanarak GPX dosyasını yükleyin.
  2. Ardından, katmandaki her özellik için GeometryType öğesinin MultiLineString olup olmadığını kontrol edin.
  3. Bundan sonra, özelliğin geometrisini MultiLineString olarak alın.
  4. Son olarak parçaları gösterin.

Aşağıdaki kod örneği, C# kullanarak bir GPX dosyasından parçaların nasıl okunacağını gösterir.

// Bu kod örneği, GPX dosyasından İzlerin nasıl okunacağını gösterir
// GPX dosyasını yükleyin
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\nested_data.gpx");

foreach (var feature in layer)
{
    // MultiLineString geometrisini kontrol edin
    if (feature.Geometry.GeometryType == GeometryType.MultiLineString)
    {
        // Parçayı oku
        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)

C# dilinde GPX Yuvalanmış Niteliklerini okuyun

Segmentteki her nokta için özellikleri okuyabilir ve aşağıda verilen adımları izleyerek iç içe öznitelik değerlerini çıkartabiliriz:

  1. İlk olarak, GpxOptions sınıfının bir örneğini oluşturun.
  2. Ardından, ReadNestedAttributes değerini true olarak ayarlayın.
  3. Ardından, bağımsız değişken olarak GpxOptions nesnesiyle OpenLayer() yöntemini kullanarak GPX dosyasını yükleyin.
  4. Ardından, katmandaki her özellik için GeometryType öğesinin MultiLineString olup olmadığını kontrol edin.
  5. Ardından, özelliğin geometrisini MultiLineString olarak alın.
  6. Bundan sonra, segmenti her MultiLineString’den LineString olarak okuyun.
  7. Son olarak, segmentteki noktaları okuyun ve özellik değerlerini gösterin.

Aşağıdaki kod örneği, C# kullanarak bir GPX dosyasından GPX iç içe özniteliklerinin nasıl okunacağını gösterir.

// Bu kod örneği, GPX dosyasından GPX İç İçe Niteliklerin nasıl okunacağını gösterir.
// GPX seçeneğini belirtin
GpxOptions options = new GpxOptions()
{
    ReadNestedAttributes = true
};


// GPX dosyasını yükleyin ve özellikleri okumak için katmanı açın
using (var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\nested_data.gpx", options))
{
    foreach (var feature in layer)
    {
        // MultiLineString geometrisini kontrol edin
        if (feature.Geometry.GeometryType == GeometryType.MultiLineString)
        {
            // Segmenti oku
            var lines = (MultiLineString) feature.Geometry;
           for (int i = 0; i < lines.Count; i++)
            {
                Console.WriteLine($"....segment({i})......");
                var segment = (LineString)lines[i];

                // Segmentteki okuma noktaları
               for (int j = 0; j < segment.Count; j++)
                {
                    // Nitelik ara
                    string attributeName = $"name__{i}__{j}";
                    if (layer.Attributes.Contains(attributeName) && feature.IsValueSet(attributeName))
                    {
                        // Bir nokta ve özellik yazdırın
                        var value = feature.GetValue<string>(attributeName);
                        Console.WriteLine($"{segment[j].AsText()} - {attributeName}: {value}, ");
                    }
                    else
                    {
                        // Yalnızca bir noktayı yazdır
                        Console.WriteLine(segment[j].AsText());
                    }
                }
            }
            Console.WriteLine("..........");
        }
    }
}

Ücretsiz Lisans Alın

Kitaplığı değerlendirme sınırlamaları olmadan denemek için ücretsiz bir geçici lisans alabilirsiniz.

Çözüm

Bu makalede, şunların nasıl yapıldığını öğrendik:

  • C# dilinde OpenLayer kullanarak bir GPX dosyası yükleyin;
  • GPX dosyasından yol noktalarını, rotaları ve izleri programlı olarak okuyun;
  • C# kullanarak bir GPX dosyasından iç içe özniteliği okuyun.

Ayrıca, belgeleri kullanarak Aspose.GIS for .NET API hakkında daha fazla bilgi edinebilirsiniz. Herhangi bir belirsizlik durumunda, lütfen forumda bizimle iletişime geçmekten çekinmeyin.

Ayrıca bakınız