یک فایل GPX حاوی داده های GPS است که در قالب تبادل GPS ذخیره شده است. این یک طرح XML برای توصیف اطلاعات جغرافیایی مانند ایستگاه های بین راه، مسیرها، مسیرها و غیره است. این طرح امکان انتقال داده های GPS را بین واحدهای GPS و برنامه های نرم افزاری فراهم می کند. ما به راحتی می توانیم فایل GPX را بارگذاری کنیم و اطلاعات GPS را به صورت برنامه ای در برنامه های NET استخراج کنیم. در این مقاله با نحوه خواندن فایل های GPX با استفاده از سی شارپ آشنا می شویم.
مقاله باید موضوعات زیر را پوشش دهد:
- C# API برای خواندن فایل های GPX
- نقاط راه را از فایل GPX بخوانید
- مسیرها را از فایل GPX بخوانید
- استخراج آهنگ از فایل GPX
- GPX Nested Attributes را بخوانید
C# API برای خواندن فایلهای GPX
برای خواندن ویژگیهای فایلهای GPX، از Aspose.GIS for .NET API استفاده خواهیم کرد. این به شما امکان می دهد تا نقشه ها را رندر کنید، و بدون نرم افزار اضافی، داده های جغرافیایی را بسازید، بخوانید و تبدیل کنید. همچنین شما را قادر می سازد فایل های KML را به فرمت GPX و بالعکس تبدیل کنید. لطفاً DLL API را دانلود یا با استفاده از NuGet نصب کنید.
PM> Install-Package Aspose.GIS
خواندن نقاط راه از فایل GPX در سی شارپ
با دنبال کردن مراحل زیر می توانیم نقاط بین فایل GPX را به عنوان هندسه نقطه ای بخوانیم:
- ابتدا فایل GPX را با استفاده از روش OpenLayer بارگذاری کنید.
- سپس، برای هر ویژگی در لایه، بررسی کنید که آیا GeometryType Point است یا خیر.
- پس از آن، هندسه ویژگی را به عنوان یک نقطه دریافت کنید.
- در نهایت نقاط مختصات 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 در سی شارپ
با دنبال کردن مراحل زیر می توانیم مسیرها را از فایل GPX به عنوان هندسه رشته خط بخوانیم:
- ابتدا فایل GPX را با استفاده از روش OpenLayer بارگذاری کنید.
- بعد، برای هر ویژگی در لایه، بررسی کنید که آیا GeometryType LineString است یا خیر.
- پس از آن، هندسه ویژگی را به عنوان LineString دریافت کنید.
- در نهایت نقاط مختصات 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 در سی شارپ
با دنبال کردن مراحل زیر میتوانیم آهنگهای فایل GPX را بهعنوان هندسه MultiLineString بخوانیم:
- ابتدا فایل GPX را با استفاده از روش OpenLayer بارگذاری کنید.
- در مرحله بعد، برای هر ویژگی در لایه، بررسی کنید که آیا GeometryType MultiLineString است یا خیر.
- پس از آن، هندسه ویژگی را به صورت MultiLineString دریافت کنید.
- در نهایت، آهنگ ها را نشان دهید.
نمونه کد زیر نحوه خواندن تراک ها از یک فایل 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 را در سی شارپ بخوانید
میتوانیم ویژگیهای هر نقطه در بخش را بخوانیم و با دنبال کردن مراحل زیر، مقادیر مشخصه تودرتو را استخراج کنیم:
- ابتدا یک نمونه از کلاس GpxOptions ایجاد کنید.
- سپس ReadNestedAttributes را روی true تنظیم کنید.
- سپس، فایل GPX را با استفاده از روش OpenLayer() با شی GpxOptions به عنوان آرگومان بارگذاری کنید.
- در مرحله بعد، برای هر ویژگی در لایه، بررسی کنید که آیا GeometryType MultiLineString است یا خیر.
- سپس، هندسه ویژگی را به صورت MultiLineString دریافت کنید.
- پس از آن، بخش را به عنوان LineString از هر MultiLineString بخوانید.
- در نهایت، نقاط در بخش را بخوانید و مقادیر ویژگی را نشان دهید.
نمونه کد زیر نحوه خواندن ویژگی های تودرتوی 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("..........");
}
}
}
مجوز رایگان دریافت کنید
میتوانید [یک مجوز موقت رایگان] دریافت کنید18 تا کتابخانه را بدون محدودیت ارزیابی امتحان کنید.
نتیجه
در این مقاله یاد گرفتیم که چگونه:
- یک فایل GPX را با استفاده از OpenLayer در سی شارپ بارگذاری کنید.
- نقاط بین راه، مسیرها و مسیرها را از فایل GPX به صورت برنامه نویسی بخوانید.
- ویژگی تودرتو را از یک فایل GPX با استفاده از C# بخوانید.
علاوه بر این، میتوانید با استفاده از مستندات درباره Aspose.GIS برای .NET API اطلاعات بیشتری کسب کنید. در صورت وجود هر گونه ابهام، لطفاً با ما در تالار تماس بگیرید.