
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로 읽을 수 있습니다.
- 먼저 OpenLayer 메서드를 사용하여 GPX 파일을 로드합니다.
- 그런 다음 레이어의 각 피처에 대해 GeometryType이 Point인지 확인합니다.
- 그런 다음 기능의 형상을 점으로 가져옵니다.
- 마지막으로 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 파일에서 라인 스트링 지오메트리로 경로를 읽을 수 있습니다.
- 먼저 OpenLayer 방법을 사용하여 GPX 파일을 로드합니다.
- 그런 다음 레이어의 각 기능에 대해 GeometryType가 LineString인지 확인합니다.
- 그런 다음 피처의 지오메트리를 LineString으로 가져옵니다.
- 마지막으로 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 지오메트리로 트랙을 읽을 수 있습니다.
- 먼저 OpenLayer 메서드를 사용하여 GPX 파일을 로드합니다.
- 그런 다음 레이어의 각 피처에 대해 GeometryType가 MultiLineString인지 확인합니다.
- 그런 다음 MultiLineString으로 피쳐의 지오메트리를 가져옵니다.
- 마지막으로 트랙을 보여줍니다.
다음 코드 샘플은 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 중첩 속성 읽기
다음 단계에 따라 세그먼트의 각 포인트에 대한 기능을 읽고 중첩된 속성 값을 추출할 수 있습니다.
- 먼저 GpxOptions 클래스의 인스턴스를 만듭니다.
- 그런 다음 ReadNestedAttributes를 true로 설정합니다.
- 그런 다음 GpxOptions 개체를 인수로 사용하여 OpenLayer() 메서드를 사용하여 GPX 파일을 로드합니다.
- 그런 다음 레이어의 각 기능에 대해 GeometryType이 MultiLineString인지 확인합니다.
- 그런 다음 MultiLineString으로 피쳐의 지오메트리를 가져옵니다.
- 그런 다음 각 MultiLineString에서 LineString으로 세그먼트를 읽습니다.
- 마지막으로 세그먼트의 포인트를 읽고 속성 값을 표시합니다.
다음 코드 샘플은 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에 대해 자세히 알아볼 수 있습니다. 모호한 부분이 있는 경우 포럼을 통해 언제든지 문의해 주십시오.