Ich werde dankbar sein, dass mir jemand sagt, ob es eine Möglichkeit gibt, eine GPX-Datei in eine C# -Datatable zu importieren. Ich googelte es oft, aber vergebens.Füllen Sie die Datentabelle in C# aus der GPX-Datei
Antwort
Eine Möglichkeit, dies zu erreichen, wäre die XML-Deserialisierung in ein Objekt, das Sie dann navigieren und verwenden können, wie Sie es wünschen.
Unter Verwendung der generierten XML-Daten aus einem Garmin Oregon 400T als Beispiel:
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" creator="Oregon 400t" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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>
<link href="http://www.garmin.com">
<text>Garmin International</text>
</link>
<time>2009-10-17T22:58:43Z</time>
</metadata>
<trk>
<name>Example GPX Document</name>
<trkseg>
<trkpt lat="47.644548" lon="-122.326897">
<ele>4.46</ele>
<time>2009-10-17T18:37:26Z</time>
</trkpt>
<trkpt lat="47.644548" lon="-122.326897">
<ele>4.94</ele>
<time>2009-10-17T18:37:31Z</time>
</trkpt>
<trkpt lat="47.644548" lon="-122.326897">
<ele>6.87</ele>
<time>2009-10-17T18:37:34Z</time>
</trkpt>
</trkseg>
</trk>
</gpx>
Sie konnten einige benutzerdefinierte Klassen erstellen, die für Deserialisation der XML verwendet werden könnten:
[Serializable()]
[System.Xml.Serialization.XmlRoot("gpx")]
public class gpx {
[System.Xml.Serialization.XmlElement("metadata")]
public Metadata mData { get; set; }
[System.Xml.Serialization.XmlElement("trk")]
public TrackCollection tCollection { get; set; }
}
[Serializable()]
public class Metadata {
/// Fill in metadata elements here
}
[Serializable()]
public class TrackCollection {
[System.Xml.Serialization.XmlElement("name")]
public string name { get; set; }
[XmlArray("trkseg")]
[XmlArrayItem("trkpt", typeof(TrackPart))]
public TrackPart[] tPart { get; set; }
}
[Serializable()]
public class TrackPart {
[System.Xml.Serialization.XmlElementAttribute("lat")]
public double lattitude { get; set; }
[System.Xml.Serialization.XmlElementAttribute("lon")]
public double longitude { get; set; }
[System.Xml.Serialization.XmlElement("ele")]
public int elapsed { get; set; }
[System.Xml.Serialization.XmlElement("time")]
public DateTime dateTime { get; set; }
}
I haven‘ t Überprüfen Sie dieses Beispiel, also verwenden Sie es bitte mit Vorsicht. Sie können alternativ die .NET XML Reader-Bibliotheken verwenden und jede der Objekteigenschaften manuell festlegen.
Sie können auch mehr über Deserialisierung von XML here und here lesen.
Dann ist es nur ein Fall der Verwendung Ihres neu erstellten Objekts, um Ihre DataTable
zu füllen. Es liegt Ihnen, wie Sie füllen Ihre DataTable
, aber man könnte zum Beispiel so tun:
gpx myObject = deserialseGPXFile(); // example
DataTable table = new DataTable();
table.Columns.Add("lat", typeof(double));
table.Columns.Add("lon", typeof(double));
foreach (TrackPart tPart in myObject.TrackCollection)
{
table.Rows.Add(tPart.lattitude, tPart.longitude);
}
Danke, aber ich verstehe immer noch nicht, wie man eine Datentabelle mit den extrahierten Daten bevölkert. – geocoder
@geocoder Ich habe meine Antwort mit einem Beispiel aktualisiert. – galacticfan
Danke, ich werde es testen – geocoder
- 1. Füllen Sie Datentabelle aus Datenleser
- 2. Klicken Sie auf ein Dataset, füllen Sie die zweite Datentabelle
- 3. C# füllen Datentabelle mit mehreren Abfragen mysql Datenbank
- 4. So füllen Sie die Datentabelle aus dem JSON-Objekt mit Schlüssel und Wert als Spalten
- 5. So füllen Sie eine generische Liste von Objekten in C# aus der SQL-Datenbank
- 6. Wie Daten aus der Datentabelle Zeile weise in C#
- 7. Füllen Sie große Daten aus der Datenbank
- 8. Füllen Sie überprüfte Optionsfelder aus der Datenbank
- 9. wie Datentabelle füllen von Details zu sehen
- 10. C# - So wählen Sie verschiedene zufällige Datensätze aus Datentabelle
- 11. Füllen Sie alle Elemente in der Gruppierung aus R
- 12. Suche Anzahl der "false" aus einer Datentabelle mit Linq C#
- 13. wie Datentabelle in C#
- 14. Wert der Zeile in Datentabelle erhalten C#
- 15. C# Linq So wählen Sie die eindeutige Zeilenanzahl mehrerer Spalten in einer Datentabelle aus
- 16. Füllen Sie Wörterbuch aus der Liste in Schleife
- 17. Kann Datentabelle nicht verwenden.Find Methode nach dem Füllen der Datentabelle mit Datenadapter
- 18. Füllen Sie das Textfeld aus der Dropdown-Liste in MVC
- 19. Datentabelle, die keine Werte aus Excel zurückgibt (Werte aus Formeln)
- 20. Wählen Sie Wert zwischen zwei Spalten aus der Datentabelle
- 21. C# MVC - DropDownList aus Klasseneigenschaft füllen
- 22. Wie konvertiert man die Excel-Datei in die Datentabelle C#?
- 23. ASP.NET C# Wie Tabelle aus der Datenbank füllen
- 24. Wie benutzerdefinierte Schlüssel, Werte in JSON-String aus C# Datentabelle
- 25. Wie lese ich eine Zeile aus einer Datentabelle in C#?
- 26. Datentabelle zu Excel in C#
- 27. Wie aus Datentabelle zu Excel-Datei in WPF exportieren C#
- 28. Objective-C - Firebase Abrufen von Daten aus der Datenbank und füllen Sie in Tabelle
- 29. So füllen Sie die Datenbankwerte in der Tabelle
- 30. Füllen Sie die Kontrollkästchen je nach Child-Knoten aus Baumansicht
Welche Art von Datenbank suchen Sie zu füllen, SQL? – galacticfan
Es ist keine Datenbank, ich möchte nur ** eine Datentabelle füllen **, um diese Daten zu verwenden, um ein Shapefile zu erstellen – geocoder