قراءة ملفات GPX باستخدام C#

يحتوي ملف GPX على بيانات GPS محفوظة بتنسيق تبادل GPS. إنه مخطط XML لوصف المعلومات الجغرافية مثل الإحداثيات والمسارات والطرق وما إلى ذلك. يسمح بنقل بيانات GPS بين وحدات GPS وتطبيقات البرامج. يمكننا بسهولة تحميل ملف GPX واستخراج معلومات GPS برمجيًا في تطبيقات .NET. في هذه المقالة ، سوف نتعلم كيفية قراءة ملفات GPX باستخدام C#.

يجب أن تغطي المقالة المواضيع التالية:

C# API لقراءة ملفات GPX

لقراءة الميزات من ملفات GPX ، سنستخدم Aspose.GIS for .NET API. يتيح لك عرض الخرائط وإنشاء البيانات الجغرافية وقراءتها وتحويلها بدون برامج إضافية. كما أنه يمكّنك من تحويل ملفات KML إلى تنسيق GPX والعكس صحيح. يرجى إما تنزيل DLL الخاصة بواجهة برمجة التطبيقات أو تثبيته باستخدام NuGet.

PM> Install-Package Aspose.GIS

قراءة نقاط الطريق من ملف GPX في C#

يمكننا قراءة الإحداثيات من ملف GPX باسم Point Geometry باتباع الخطوات الواردة أدناه:

  1. أولاً ، قم بتحميل ملف GPX باستخدام طريقة OpenLayer.
  2. بعد ذلك ، لكل معلم في الطبقة ، تحقق مما إذا كان GeometryType هو Point.
  3. بعد ذلك ، احصل على هندسة الموضع كنقطة.
  4. أخيرًا ، أظهر نقاط إحداثيات X و Y.

يوضح نموذج التعليمات البرمجية التالي كيفية قراءة نقاط المسار من ملف GPX باستخدام C#.

// يوضح مثال الكود هذا كيفية قراءة الإحداثيات من ملف GPX
// قم بتحميل ملف GPX
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\St_Louis_Zoo_sample.gpx");

foreach (var feature in layer)
{
    // تحقق من هندسة النقطة
    if (feature.Geometry.GeometryType == GeometryType.Point)
    {
        // اقرأ النقاط
        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

قراءة Routs من ملف GPX في C#

يمكننا قراءة المسارات من ملف GPX على أنها هندسة Line String باتباع الخطوات الموضحة أدناه:

  1. أولاً ، قم بتحميل ملف GPX باستخدام طريقة OpenLayer.
  2. بعد ذلك ، لكل معلم في الطبقة ، تحقق مما إذا كان GeometryType هو LineString.
  3. بعد ذلك ، احصل على الشكل الهندسي للميزة مثل LineString.
  4. أخيرًا ، اعرض نقاط إحداثيات X و Y و Z.

يوضح نموذج التعليمات البرمجية التالي كيفية قراءة التوجيهات من ملف GPX باستخدام C#.

// يوضح مثال الرمز هذا كيفية قراءة مسارات GPS من ملف GPX
// قم بتحميل ملف GPX
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\schiehallion.gpx");

foreach (var feature in layer)
{
    // تحقق من هندسة LineString
    if (feature.Geometry.GeometryType == GeometryType.LineString)
    {
        // اقرأ 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
.
.
.

استخراج المسارات من ملف GPX في C#

يمكننا قراءة المسارات من ملف GPX على أنها هندسة MultiLineString باتباع الخطوات الواردة أدناه:

  1. أولاً ، قم بتحميل ملف GPX باستخدام طريقة OpenLayer.
  2. بعد ذلك ، لكل معلم في الطبقة ، تحقق مما إذا كان GeometryType هو MultiLineString.
  3. بعد ذلك ، احصل على الشكل الهندسي للميزة مثل MultiLineString.
  4. أخيرًا ، اعرض المسارات.

يوضح نموذج التعليمات البرمجية التالي كيفية قراءة المسارات من ملف GPX باستخدام C#.

// يوضح مثال الرمز هذا كيفية قراءة المسارات من ملف GPX
// قم بتحميل ملف GPX
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\nested_data.gpx");

foreach (var feature in layer)
{
    // تحقق من هندسة MultiLineString
    if (feature.Geometry.GeometryType == GeometryType.MultiLineString)
    {
        // قراءة المسار
        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)

قراءة سمات GPX المتداخلة في C#

يمكننا قراءة الميزات لكل نقطة في المقطع واستخراج قيم السمات المتداخلة باتباع الخطوات الواردة أدناه:

  1. أولاً ، قم بإنشاء مثيل للفئة GpxOptions.
  2. بعد ذلك ، قم بتعيين ReadNestedAttributes على true.
  3. بعد ذلك ، قم بتحميل ملف GPX باستخدام طريقة OpenLayer() مع كائن GpxOptions كوسيطة.
  4. بعد ذلك ، لكل معلم في الطبقة ، تحقق مما إذا كان GeometryType هو MultiLineString.
  5. ثم ، احصل على الشكل الهندسي للميزة مثل MultiLineString.
  6. بعد ذلك ، اقرأ المقطع كـ LineString من كل MultiLineString.
  7. أخيرًا ، اقرأ النقاط الموجودة في المقطع واعرض قيم السمات.

يوضح نموذج التعليمات البرمجية التالي كيفية قراءة سمات GPX المتداخلة من ملف GPX باستخدام C#.

// يوضح مثال الكود هذا كيفية قراءة سمات GPX المتداخلة من ملف GPX
// حدد خيار GPX
GpxOptions options = new GpxOptions()
{
    ReadNestedAttributes = true
};


// قم بتحميل ملف GPX وافتح الطبقة لقراءة الميزات
using (var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\nested_data.gpx", options))
{
    foreach (var feature in layer)
    {
        // تحقق من هندسة MultiLineString
        if (feature.Geometry.GeometryType == GeometryType.MultiLineString)
        {
            // اقرأ المقطع
            var lines = (MultiLineString) feature.Geometry;
           for (int i = 0; i < lines.Count; i++)
            {
                Console.WriteLine($"....segment({i})......");
                var segment = (LineString)lines[i];

                // اقرأ النقاط في الجزء
               for (int j = 0; j < segment.Count; j++)
                {
                    // ابحث عن السمة
                    string attributeName = $"name__{i}__{j}";
                    if (layer.Attributes.Contains(attributeName) && feature.IsValueSet(attributeName))
                    {
                        // اطبع نقطة وسمة
                        var value = feature.GetValue<string>(attributeName);
                        Console.WriteLine($"{segment[j].AsText()} - {attributeName}: {value}, ");
                    }
                    else
                    {
                        // اطبع نقطة فقط
                        Console.WriteLine(segment[j].AsText());
                    }
                }
            }
            Console.WriteLine("..........");
        }
    }
}

احصل على رخصة مجانية

يمكنك الحصول على ترخيص مؤقت مجاني لتجربة المكتبة دون قيود التقييم.

استنتاج

في هذه المقالة ، تعلمنا كيفية:

  • تحميل ملف GPX باستخدام OpenLayer في C# ؛
  • قراءة الإحداثيات والمسارات والمسارات من ملف GPX برمجيًا ؛
  • قراءة السمة المتداخلة من ملف GPX باستخدام C#.

بالإضافة إلى ذلك ، يمكنك معرفة المزيد حول Aspose.GIS for .NET API باستخدام التوثيق. في حالة وجود أي غموض ، فلا تتردد في الاتصال بنا على المنتدى.

أنظر أيضا