Đọc tệp GPX bằng C#

Tệp GPX chứa dữ liệu GPS được lưu ở Định dạng GPS Exchange. Nó là một lược đồ XML để mô tả thông tin địa lý như điểm tham chiếu, đường đi, tuyến đường, v.v. Nó cho phép chuyển dữ liệu GPS giữa các đơn vị GPS và các ứng dụng phần mềm. Chúng tôi có thể dễ dàng tải tệp GPX và trích xuất thông tin GPS theo chương trình trong các ứng dụng .NET. Trong bài này, chúng ta sẽ học cách đọc các tệp GPX bằng C#.

Bài báo sẽ bao gồm các chủ đề sau:

API C# để đọc tệp GPX

Để đọc các tính năng từ tệp GPX, chúng tôi sẽ sử dụng API Aspose.GIS for .NET. Nó cho phép bạn kết xuất bản đồ và tạo, đọc và chuyển đổi dữ liệu địa lý mà không cần phần mềm bổ sung. Nó cũng cho phép bạn chuyển đổi các tệp KML sang định dạng GPX và ngược lại. Vui lòng tải xuống DLL của API hoặc cài đặt nó bằng NuGet.

PM> Install-Package Aspose.GIS

Đọc điểm tham chiếu từ tệp GPX trong C#

Chúng tôi có thể đọc các điểm tham chiếu từ tệp GPX dưới dạng Hình học Điểm bằng cách thực hiện theo các bước dưới đây:

  1. Đầu tiên, tải tệp GPX bằng phương thức OpenLayer.
  2. Tiếp theo, đối với mỗi đối tượng trong lớp, hãy kiểm tra xem GeometryType có phải là Point hay không.
  3. Sau đó, lấy hình học của đối tượng địa lý dưới dạng Điểm.
  4. Cuối cùng, hiển thị các điểm tọa độ X và Y.

Mẫu mã sau đây cho thấy cách đọc các điểm tham chiếu từ tệp GPX bằng C#.

// Ví dụ mã này trình bày cách đọc điểm tham chiếu từ tệp GPX
// Tải tệp GPX
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\St_Louis_Zoo_sample.gpx");

foreach (var feature in layer)
{
    // Kiểm tra hình học điểm
    if (feature.Geometry.GeometryType == GeometryType.Point)
    {
        // Đọc điểm
        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 Routs từ tệp GPX trong C#

Chúng tôi có thể đọc các tuyến đường từ tệp GPX dưới dạng hình học Chuỗi dòng bằng cách thực hiện theo các bước dưới đây:

  1. Đầu tiên, tải tệp GPX bằng phương thức OpenLayer.
  2. Tiếp theo, đối với mỗi đối tượng trong lớp, hãy kiểm tra xem GeometryType có phải là LineString hay không.
  3. Sau đó, lấy hình dạng của đối tượng dưới dạng LineString.
  4. Cuối cùng, hiển thị các điểm tọa độ X, Y và Z.

Mẫu mã sau đây cho thấy cách đọc các tuyến từ tệp GPX bằng C#.

// Ví dụ mã này trình bày cách đọc các tuyến đường GPS từ tệp GPX
// Tải tệp GPX
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\schiehallion.gpx");

foreach (var feature in layer)
{
    // Kiểm tra hình học LineString
    if (feature.Geometry.GeometryType == GeometryType.LineString)
    {
        // Đọc định tuyến
        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
.
.
.

Trích xuất các tuyến đường từ tệp GPX trong C#

Chúng tôi có thể đọc các bản nhạc từ tệp GPX dưới dạng hình học MultiLineString bằng cách thực hiện theo các bước dưới đây:

  1. Đầu tiên, tải tệp GPX bằng phương thức OpenLayer.
  2. Tiếp theo, đối với mỗi đối tượng trong lớp, hãy kiểm tra xem GeometryType có phải là MultiLineString hay không.
  3. Sau đó, lấy hình dạng của đối tượng dưới dạng MultiLineString.
  4. Cuối cùng, hiển thị các bản nhạc.

Mẫu mã sau đây cho thấy cách đọc các bản nhạc từ tệp GPX bằng C#.

// Ví dụ mã này trình bày cách đọc các tuyến đường từ tệp GPX
// Tải tệp GPX
var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\nested_data.gpx");

foreach (var feature in layer)
{
    // Kiểm tra hình học MultiLineString
    if (feature.Geometry.GeometryType == GeometryType.MultiLineString)
    {
        // Đọc bản nhạc
        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 các thuộc tính lồng nhau của GPX trong C#

Chúng tôi có thể đọc các tính năng cho từng điểm trong phân đoạn và trích xuất các giá trị thuộc tính lồng nhau bằng cách làm theo các bước được đưa ra bên dưới:

  1. Đầu tiên, tạo một thể hiện của lớp GpxOptions.
  2. Tiếp theo, đặt ReadNestedAttributes thành true.
  3. Sau đó, tải tệp GPX bằng phương thức OpenLayer() với đối tượng GpxOptions làm đối số.
  4. Tiếp theo, đối với mỗi đối tượng trong lớp, hãy kiểm tra xem GeometryType có phải là MultiLineString hay không.
  5. Sau đó, lấy hình dạng của đối tượng địa lý dưới dạng MultiLineString.
  6. Sau đó, đọc phân đoạn dưới dạng LineString từ mỗi MultiLineString.
  7. Cuối cùng, đọc các điểm trong phân đoạn và hiển thị các giá trị thuộc tính.

Mẫu mã sau đây cho thấy cách đọc các thuộc tính lồng nhau của GPX từ tệp GPX bằng cách sử dụng C#.

// Ví dụ mã này trình bày cách đọc Các thuộc tính lồng nhau của GPX từ tệp GPX
// Chỉ định tùy chọn GPX
GpxOptions options = new GpxOptions()
{
    ReadNestedAttributes = true
};


// Tải tệp GPX và mở lớp để đọc các tính năng
using (var layer = Drivers.Gpx.OpenLayer(@"D:\Files\GIS\nested_data.gpx", options))
{
    foreach (var feature in layer)
    {
        // Kiểm tra hình học MultiLineString
        if (feature.Geometry.GeometryType == GeometryType.MultiLineString)
        {
            // Đọc phân đoạn
            var lines = (MultiLineString) feature.Geometry;
           for (int i = 0; i < lines.Count; i++)
            {
                Console.WriteLine($"....segment({i})......");
                var segment = (LineString)lines[i];

                // Đọc các điểm trong phân đoạn
               for (int j = 0; j < segment.Count; j++)
                {
                    // Tìm kiếm thuộc tính
                    string attributeName = $"name__{i}__{j}";
                    if (layer.Attributes.Contains(attributeName) && feature.IsValueSet(attributeName))
                    {
                        // In một điểm và thuộc tính
                        var value = feature.GetValue<string>(attributeName);
                        Console.WriteLine($"{segment[j].AsText()} - {attributeName}: {value}, ");
                    }
                    else
                    {
                        // Chỉ in một điểm
                        Console.WriteLine(segment[j].AsText());
                    }
                }
            }
            Console.WriteLine("..........");
        }
    }
}

Nhận giấy phép miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử thư viện mà không có giới hạn đánh giá.

Sự kết luận

Trong bài viết này, chúng tôi đã học cách:

  • tải tệp GPX bằng OpenLayer trong C#;
  • đọc các điểm tham chiếu, tuyến đường và đường đi từ tệp GPX theo lập trình;
  • đọc thuộc tính lồng nhau từ tệp GPX bằng C#.

Bên cạnh đó, bạn có thể tìm hiểu thêm về Aspose.GIS for .NET API bằng cách sử dụng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn.

Xem thêm