อ่านไฟล์ GPX โดยใช้ C#

ไฟล์ GPX มีข้อมูล GPS ที่บันทึกไว้ในรูปแบบ GPS Exchange เป็น XML schema เพื่ออธิบายข้อมูลทางภูมิศาสตร์ เช่น จุดอ้างอิง รอยทาง เส้นทาง ฯลฯ ช่วยให้ถ่ายโอนข้อมูล GPS ระหว่างหน่วย GPS และแอปพลิเคชันซอฟต์แวร์ได้ เราสามารถโหลดไฟล์ GPX และแยกข้อมูล GPS โดยทางโปรแกรมในแอปพลิเคชัน .NET ได้อย่างง่ายดาย ในบทความนี้ เราจะมาเรียนรู้วิธีการอ่านไฟล์ GPX โดยใช้ C#

บทความจะครอบคลุมหัวข้อต่อไปนี้:

C # API เพื่ออ่านไฟล์ GPX

สำหรับคุณสมบัติการอ่านจากไฟล์ GPX เราจะใช้ API Aspose.GIS for .NET ช่วยให้คุณสามารถแสดงแผนที่ และสร้าง อ่าน และแปลงข้อมูลทางภูมิศาสตร์โดยไม่ต้องใช้ซอฟต์แวร์เพิ่มเติม นอกจากนี้ยังช่วยให้คุณสามารถแปลงไฟล์ KML เป็นรูปแบบ GPX และในทางกลับกัน โปรด ดาวน์โหลด DLL ของ API หรือติดตั้งโดยใช้ NuGet

PM> Install-Package Aspose.GIS

อ่าน Waypoints จากไฟล์ 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

อ่านเส้นทางจากไฟล์ GPX ใน C

เราสามารถอ่านเส้นทางจากไฟล์ GPX เป็น Line String geometry โดยทำตามขั้นตอนด้านล่าง:

  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)
    {
        // อ่านเส้นทาง
        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 เป็นจริง
  3. จากนั้นโหลดไฟล์ GPX โดยใช้เมธอด OpenLayer() โดยมีวัตถุ GpxOptions เป็นอาร์กิวเมนต์
  4. ถัดไป สำหรับแต่ละคุณสมบัติในเลเยอร์ ให้ตรวจสอบว่า GeometryType เป็น MultiLineString หรือไม่
  5. จากนั้นรับรูปทรงเรขาคณิตของคุณลักษณะเป็น MultiLineString
  6. หลังจากนั้น อ่านส่วนเป็น LineString จากแต่ละ MultiLineString
  7. สุดท้าย อ่านจุดในกลุ่มและแสดงค่าแอตทริบิวต์

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการอ่านแอตทริบิวต์ที่ซ้อนกันของ GPX จากไฟล์ GPX โดยใช้ C#

// ตัวอย่างโค้ดนี้สาธิตวิธีการอ่าน GPX Nested Attributes จากไฟล์ 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 โดยใช้ เอกสารประกอบ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัม

ดูสิ่งนี้ด้วย