11

我正在寻找一个 C# 库或类来帮助从我拥有的一组航点(纬度/经度等)中编写GPX 文件。

我找到了很多读者——但写作的读者不多。

如果它可以在 Compact Framework/WinMobile 6.5 上运行,则可以加分 - 但这不是硬性要求。我可以让它在桌面上进行后期处理——移动设备不必构建这些文件。

有谁知道一些或一种简单的方法来编写文件?

4

4 回答 4

7

你看过OGL (Open GPS-LBS)吗?

类文档

这个 GPX 类提供将 GPS 数据(航点、路线和轨迹)转换为与 GPX 格式文件兼容。

关于 Windows Mobile 注释,该库支持:

“...PC(Windows) 或 PocketPC(CE) 上的应用程序。”

于 2011-09-20T15:03:31.103 回答
0

使用纯 c# 生成的一种非常简单的方法:

using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {        

        List<int> heartRateList = new List<int>() { 80, 81, 82 };
        List<DateTime> timeList = new List<DateTime>() { DateTime.Now.AddSeconds(1), DateTime.Now.AddSeconds(2), DateTime.Now.AddSeconds(3) };
        string trkpt = "";

        for(int c = 0; c < heartRateList.Count; c++)
        {
            trkpt += "<trkpt>"
                + "<time>" + timeList[c].ToString("s") + "Z</time>"
                + "<extensions>"
                + "<gpxtpx:TrackPointExtension>"
                + "<gpxtpx:hr>" + heartRateList[c] + "</gpxtpx:hr>"
                + "</gpxtpx:TrackPointExtension>"
                + "</extensions>"
                + "</trkpt>";
        }
        
        string gpx = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
            + "<gpx xmlns=\"http://www.topografix.com/GPX/1/1\" xmlns:gpxtpx=\"http://www.garmin.com/xmlschemas/TrackPointExtension/v1\" xmlns:gpxx=\"http://www.garmin.com/xmlschemas/GpxExtensions/v3\" xmlns:ns1=\"http://www.cluetrust.com/XML/GPXDATA/1/0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" creator=\"Zamfit\" version=\"1.3\" xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd\">"
            + "<metadata><time>2022-01-01T00:00:00Z</time></metadata>"
            + "<trk>"
            + "<name>Activity Name</name>"
            + "<trkseg>"
            + trkpt
            + "</trkseg>"
            + "</trk>"
            + "</gpx>";       
     
        Console.WriteLine(gpx);

    }
}
于 2022-02-03T21:29:02.493 回答
0

最简单的(在大多数 lo-fi 中,不是最省时的)方法是在文本编辑器中打开任何 gpx 文件并将您的坐标粘贴到正确的位置,或者编写一个新的如下所示。GPX 是一种 XML 文件,因此如果您了解一些 HTML,就很容易上手。

我可以打开的最基本格式(在 Android 上使用 GPX Viewer)是

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gpx>
  <!--Waypoint 1-->
  <wpt lat="50.888090" lon="4.698118">
  </wpt>
  <!--Waypoint 2-->
  <wpt lat="50.788090" lon="4.798118">
  </wpt>
  <!--etc-->
  <wpt lat="50.988090" lon="4.618118">
  </wpt>
</gpx>

添加或删除航点以品尝。

可以对轨道和路线进行类似的操作,您可以添加更多信息,例如海拔和时间,但您必须为此搜索 GPX 文档。

于 2016-04-27T10:54:47.813 回答
0

看看https://nettopologysuite.github.io/

它有一个 GPXFile 类https://nettopologysuite.github.io/NetTopologySuite.IO.GPX/

于 2020-07-26T20:16:16.690 回答