C#을 사용하여 GPX 파일 읽기

GPX 파일은 GPS 교환 형식으로 저장된 GPS 데이터를 포함합니다. 웨이포인트, 트랙, 경로 등과 같은 지리 정보를 설명하는 XML 스키마입니다. 이를 통해 GPS 장치와 소프트웨어 애플리케이션 간에 GPS 데이터를 전송할 수 있습니다. GPX 파일을 쉽게 로드하고 .NET 애플리케이션에서 프로그래밍 방식으로 GPS 정보를 추출할 수 있습니다. 이 기사에서는 C#을 사용하여 GPX 파일을 읽는 방법을 배웁니다.

이 기사에서는 다음 주제를 다룹니다.

GPX 파일을 읽는 C# API

GPX 파일에서 기능을 읽기 위해 Aspose.GIS for .NET API를 사용합니다. 추가 소프트웨어 없이 지도를 렌더링하고 지리 데이터를 만들고 읽고 변환할 수 있습니다. 또한 KML 파일을 GPX 형식으로 또는 그 반대로 변환할 수 있습니다. API의 DLL을 다운로드하거나 NuGet을 사용하여 설치하십시오.

PM> Install-Package Aspose.GIS

C#의 GPX 파일에서 웨이포인트 읽기

아래 단계에 따라 GPX 파일에서 웨이포인트를 Point Geometry로 읽을 수 있습니다.

  1. 먼저 OpenLayer 메서드를 사용하여 GPX 파일을 로드합니다.
  2. 그런 다음 레이어의 각 피처에 대해 GeometryTypePoint인지 확인합니다.
  3. 그런 다음 기능의 형상을 점으로 가져옵니다.
  4. 마지막으로 X 및 Y 좌표점을 표시합니다.

다음 코드 샘플은 C#을 사용하여 GPX 파일에서 웨이포인트를 읽는 방법을 보여줍니다.

// 이 코드 예제는 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

C#의 GPX 파일에서 경로 읽기

아래 단계에 따라 GPX 파일에서 라인 스트링 지오메트리로 경로를 읽을 수 있습니다.

  1. 먼저 OpenLayer 방법을 사용하여 GPX 파일을 로드합니다.
  2. 그런 다음 레이어의 각 기능에 대해 GeometryTypeLineString인지 확인합니다.
  3. 그런 다음 피처의 지오메트리를 LineString으로 가져옵니다.
  4. 마지막으로 X, Y, Z 좌표점을 표시합니다.

다음 코드 샘플은 C#을 사용하여 GPX 파일에서 경로를 읽는 방법을 보여줍니다.

// 이 코드 예제는 GPX 파일에서 GPS 경로를 읽는 방법을 보여줍니다.
// 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
.
.
.

C#의 GPX 파일에서 트랙 추출

아래 단계에 따라 GPX 파일에서 MultiLineString 지오메트리로 트랙을 읽을 수 있습니다.

  1. 먼저 OpenLayer 메서드를 사용하여 GPX 파일을 로드합니다.
  2. 그런 다음 레이어의 각 피처에 대해 GeometryTypeMultiLineString인지 확인합니다.
  3. 그런 다음 MultiLineString으로 피쳐의 지오메트리를 가져옵니다.
  4. 마지막으로 트랙을 보여줍니다.

다음 코드 샘플은 C#을 사용하여 GPX 파일에서 트랙을 읽는 방법을 보여줍니다.

// 이 코드 예제는 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)

C#에서 GPX 중첩 속성 읽기

다음 단계에 따라 세그먼트의 각 포인트에 대한 기능을 읽고 중첩된 속성 값을 추출할 수 있습니다.

  1. 먼저 GpxOptions 클래스의 인스턴스를 만듭니다.
  2. 그런 다음 ReadNestedAttributes를 true로 설정합니다.
  3. 그런 다음 GpxOptions 개체를 인수로 사용하여 OpenLayer() 메서드를 사용하여 GPX 파일을 로드합니다.
  4. 그런 다음 레이어의 각 기능에 대해 GeometryTypeMultiLineString인지 확인합니다.
  5. 그런 다음 MultiLineString으로 피쳐의 지오메트리를 가져옵니다.
  6. 그런 다음 각 MultiLineString에서 LineString으로 세그먼트를 읽습니다.
  7. 마지막으로 세그먼트의 포인트를 읽고 속성 값을 표시합니다.

다음 코드 샘플은 C#을 사용하여 GPX 파일에서 GPX 중첩 특성을 읽는 방법을 보여줍니다.

// 이 코드 예제는 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("..........");
        }
    }
}

무료 라이선스 받기

평가 제한 없이 라이브러리를 사용해 보려면 무료 임시 라이센스를 얻으십시오.

결론

이 문서에서는 다음 방법을 배웠습니다.

  • C#에서 OpenLayer를 사용하여 GPX 파일 로드;
  • 프로그래밍 방식으로 GPX 파일에서 웨이포인트, 경로 및 트랙을 읽습니다.
  • C#을 사용하여 GPX 파일에서 중첩된 속성을 읽습니다.

또한 문서를 사용하여 Aspose.GIS for .NET API에 대해 자세히 알아볼 수 있습니다. 모호한 부분이 있는 경우 포럼을 통해 언제든지 문의해 주십시오.

또한보십시오