קרא קבצי GPX באמצעות C#

קובץ GPX הוא קובץ נתוני GPS המכיל נתוני GPS שנשמרו בפורמט GPS Exchange. זוהי סכימת XML לתיאור מידע גיאוגרפי כגון נקודות ציון, מסלולים, מסלולים וכו’. היא מאפשרת העברת נתוני GPS בין יחידות GPS ויישומי תוכנה. אנו יכולים לטעון בקלות את קובץ ה-GPX ולחלץ מידע GPS באופן תכנותי ביישומי NET. במאמר זה נלמד כיצד לקרוא קבצי GPX באמצעות C#.

המאמר יעסוק בנושאים הבאים:

  1. מהו קובץ GPX
  2. C# API לקריאת קבצי GPX
  3. קרא נקודות ציון מקובץ GPX
  4. קרא מסלולים מקובץ GPX
  5. חלץ רצועות מקובץ GPX
  6. קרא תכונות מקוננות של GPX

מהו קובץ GPX

GPX, או GPS Exchange Format, הוא פורמט קובץ המאפשר לך להחליף נתוני GPS בין מכשירים ותוכנות שונות. קובצי GPX הם רק קבצי XML המכילים נתוני GPS, וניתן ליצור ולערוך אותם בכל עורך טקסט. קובצי GPX יכולים להכיל נקודות ציון, מסלולים ומסלולים, וניתן להשתמש בהם כדי לתכנן ולשתף את הטיולים שלך עם אחרים. נקודות ציון הן פשוט מיקומים שאתה רוצה לזכור, כגון המיקום הנוכחי שלך או המיקום של יעד ספציפי. מסלולים הם סדרה של נקודות המייצגות את התנועה שלך לאורך זמן, וניתן להשתמש בהן כדי לחזור על עקבותיך או לעקוב אחר ההתקדמות שלך במסע ארוך יותר. מסלולים הם סדרה של נקודות ציון המייצגות טיול מתוכנן, וניתן להשתמש בהן כדי לנווט מנקודה אחת לאחרת. קובצי GPX הם דרך מצוינת לשתף את נתוני ה-GPS שלך עם אחרים, והם יכולים לשמש מכשירי GPS ותוכנות רבות.

C# API לקריאת קבצי GPX

לקריאת תכונות מקובצי GPX, נשתמש ב-Aspose.GIS for .NET API. זה מאפשר לך לרנדר מפות, וליצור, לקרוא ולהמיר נתונים גיאוגרפיים ללא תוכנה נוספת. זה גם מאפשר לך להמיר קבצי KML לפורמט GPX ולהיפך.

אנא הורד את ה-DLL של ה-API או התקן אותו באמצעות NuGet.

PM> Install-Package Aspose.GIS

קרא נקודות ציון מקובץ GPX ב-C#

אנו יכולים לקרוא נקודות ציון מקובץ GPX כגיאומטריית נקודות על ידי ביצוע השלבים המפורטים להלן:

  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

קרא מסלולים מקובץ GPX ב-C#

אנו יכולים לקרוא מסלולים מקובץ GPX כגיאומטריית מחרוזת קו על ידי ביצוע השלבים המפורטים להלן:

  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 Nested ב-C#

אנו יכולים לקרוא תכונות עבור כל נקודה בקטע ולחלץ ערכי תכונות מקוננים על ידי ביצוע השלבים המפורטים להלן:

  1. ראשית, צור מופע של המחלקה GpxOptions.
  2. לאחר מכן, הגדר את ReadNestedAttributes ל-true.
  3. לאחר מכן, טען את קובץ ה-GPX באמצעות השיטה OpenLayer() עם האובייקט GpxOptions כארגומנט.
  4. לאחר מכן, עבור כל תכונה בשכבה, בדוק אם GeometryType הוא MultiLineString.
  5. לאחר מכן, קבל את הגיאומטריה של התכונה בתור MultiLineString.
  6. לאחר מכן, קרא את הקטע בתור LineString מכל MultiLineString.
  7. לבסוף, קרא נקודות בקטע והצג את ערכי התכונה.

דוגמת הקוד הבאה מראה כיצד לקרוא תכונות מקוננות של GPX מקובץ GPX באמצעות C#.

// דוגמה זו מדגימה כיצד לקרוא תכונות GPX Nested מקובץ 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#.

מלבד קריאת קובצי GPX ב-C#, אתה יכול ללמוד עוד על Aspose.GIS עבור .NET API באמצעות תיעוד. בכל מקרה של אי בהירות, אנא אל תהסס לפנות אלינו ב[פורום התמיכה החינמית] שלנו20.

ראה גם